/* * Copyright (c) 2013-2016. Urban Airship and Contributors */ package com.urbanairship.api.push.model.notification; import com.google.common.base.Optional; import com.urbanairship.api.push.model.DeviceType; import com.urbanairship.api.push.model.DeviceTypeData; import com.urbanairship.api.push.model.notification.adm.ADMDevicePayload; import com.urbanairship.api.push.model.notification.android.AndroidDevicePayload; import com.urbanairship.api.push.model.notification.blackberry.BlackberryDevicePayload; import com.urbanairship.api.push.model.notification.ios.IOSDevicePayload; import com.urbanairship.api.push.model.notification.mpns.MPNSDevicePayload; import com.urbanairship.api.push.model.notification.richpush.RichPushMessage; import com.urbanairship.api.push.model.notification.web.WebDevicePayload; import com.urbanairship.api.push.model.notification.wns.WNSDevicePayload; public class Notifications { public static Notification alert(String text) { return Notification.newBuilder() .setAlert(text) .build(); } public static Notification notification(String text, DevicePayloadOverride ... overrides) { Notification.Builder builder = Notification.newBuilder() .setAlert(text); for (DevicePayloadOverride override : overrides) { builder.addDeviceTypeOverride(override.getDeviceType(), override); } return builder.build(); } public static Notification notification(DevicePayloadOverride ... overrides) { Notification.Builder builder = Notification.newBuilder(); for (DevicePayloadOverride override : overrides) { builder.addDeviceTypeOverride(override.getDeviceType(), override); } return builder.build(); } /* Simple alert deviceType overrides */ public static DevicePayloadOverride alert(DeviceType deviceType, String text) { switch (deviceType) { case IOS: return iosAlert(text); case ANDROID: return androidAlert(text); case BLACKBERRY: return blackberryAlert(text); case WNS: return wnsAlert(text); case MPNS: return mpnsAlert(text); case AMAZON: return admAlert(text); case WEB: return webAlert(text); default: throw unknownDeviceType(deviceType.getIdentifier()); } } public static IOSDevicePayload iosAlert(String text) { return IOSDevicePayload.newBuilder() .setAlert(text) .build(); } public static AndroidDevicePayload androidAlert(String text) { return AndroidDevicePayload.newBuilder() .setAlert(text) .build(); } @Deprecated public static BlackberryDevicePayload blackberryAlert(String text) { return BlackberryDevicePayload.newBuilder() .setAlert(text) .build(); } public static WNSDevicePayload wnsAlert(String text) { return WNSDevicePayload.newBuilder() .setAlert(text) .build(); } /** * @deprecated Marked to be removed in 2.0.0. MPNS is no longer supported by the Urban Airship API. */ @Deprecated public static MPNSDevicePayload mpnsAlert(String text) { return MPNSDevicePayload.newBuilder() .setAlert(text) .build(); } public static ADMDevicePayload admAlert(String text) { return ADMDevicePayload.newBuilder() .setAlert(text) .build(); } public static WebDevicePayload webAlert(String text) { return WebDevicePayload.newBuilder() .setAlert(text) .build(); } /* Platform selector (device_types) */ public static DeviceTypeData deviceTypes(String ... names) { DeviceTypeData.Builder deviceTypes = DeviceTypeData.newBuilder(); for (String name : names) { if (name.equalsIgnoreCase("all")) { return DeviceTypeData.all(); } Optional<DeviceType> deviceType = DeviceType.find(name); if (! deviceType.isPresent()) { throw unknownDeviceType(name); } deviceTypes.addDeviceType(deviceType.get()); } return deviceTypes.build(); } /* Rich Push */ public static RichPushMessage richpush(String title, String body) { return RichPushMessage.newBuilder() .setTitle(title) .setBody(body) .build(); } public static RichPushMessage richpush(String title, String body, String contentType) { return RichPushMessage.newBuilder() .setTitle(title) .setBody(body) .setContentType(contentType) .build(); } /* Exceptions */ public static IllegalArgumentException unknownDeviceType(String name) { throw new IllegalArgumentException(String.format("Unknown deviceType '%s'", name)); } }