/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.pinpoint.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** *

* Specifies the settings for a one-time message that's sent directly to an endpoint through the APNs (Apple Push * Notification service) channel. *

* * @see AWS API * Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class APNSMessage implements Serializable, Cloneable, StructuredPojo { /** *

* The type of push notification to send. Valid values are: *

* *

* Amazon Pinpoint specifies this value in the apns-push-type request header when it sends the notification message * to APNs. If you don't specify a value for this property, Amazon Pinpoint sets the value to alert or background * automatically, based on the value that you specify for the SilentPush or RawContent property of the message. *

*

* For more information about the apns-push-type request header, see Sending Notification Requests to APNs on the Apple Developer website. *

*/ private String aPNSPushType; /** *

* The action to occur if the recipient taps the push notification. Valid values are: *

* */ private String action; /** *

* The key that indicates whether and how to modify the badge of your app's icon when the recipient receives the * push notification. If this key isn't included in the dictionary, the badge doesn't change. To remove the badge, * set this value to 0. *

*/ private Integer badge; /** *

* The body of the notification message. *

*/ private String body; /** *

* The key that indicates the notification type for the push notification. This key is a value that's defined by the * identifier property of one of your app's registered categories. *

*/ private String category; /** *

* An arbitrary identifier that, if assigned to multiple messages, APNs uses to coalesce the messages into a single * push notification instead of delivering each message individually. This value can't exceed 64 bytes. *

*

* Amazon Pinpoint specifies this value in the apns-collapse-id request header when it sends the notification * message to APNs. *

*/ private String collapseId; /** *

* The JSON payload to use for a silent push notification. This payload is added to the data.pinpoint.jsonBody * object of the notification. *

*/ private java.util.Map data; /** *

* The URL of an image or video to display in the push notification. *

*/ private String mediaUrl; /** *

* The authentication method that you want Amazon Pinpoint to use when authenticating with APNs, CERTIFICATE or * TOKEN. *

*/ private String preferredAuthenticationMethod; /** *

* para>5 - Low priority, the notification might be delayed, delivered as part of a group, or throttled. *

* /listitem>
  • *

    * 10 - High priority, the notification is sent immediately. This is the default value. A high priority notification * should trigger an alert, play a sound, or badge your app's icon on the recipient's device. *

    *
  • /para> *

    * Amazon Pinpoint specifies this value in the apns-priority request header when it sends the notification message * to APNs. *

    *

    * The equivalent values for Firebase Cloud Messaging (FCM), formerly Google Cloud Messaging (GCM), are normal, for * 5, and high, for 10. If you specify an FCM value for this property, Amazon Pinpoint accepts and converts the * value to the corresponding APNs value. *

    */ private String priority; /** *

    * The raw, JSON-formatted string to use as the payload for the notification message. If specified, this value * overrides all other content for the message. *

    * *

    * If you specify the raw content of an APNs push notification, the message payload has to include the * content-available key. The value of the content-available key has to be an integer, and can only be 0 or 1. If * you're sending a standard notification, set the value of content-available to 0. If you're sending a silent * (background) notification, set the value of content-available to 1. Additionally, silent notification payloads * can't include the alert, badge, or sound keys. For more information, see Generating a Remote Notification and Pushing Background Updates to Your App on the Apple Developer website. *

    *
    */ private String rawContent; /** *

    * Specifies whether the notification is a silent push notification. A silent (or background) push notification * isn't displayed on recipients' devices. You can use silent push notifications to make small updates to your app, * or to display messages in an in-app message center. *

    *

    * Amazon Pinpoint uses this property to determine the correct value for the apns-push-type request header when it * sends the notification message to APNs. If you specify a value of true for this property, Amazon Pinpoint sets * the value for the apns-push-type header field to background. *

    * *

    * If you specify the raw content of an APNs push notification, the message payload has to include the * content-available key. For silent (background) notifications, set the value of content-available to 1. * Additionally, the message payload for a silent notification can't include the alert, badge, or sound keys. For * more information, see Generating a Remote Notification and Pushing Background Updates to Your App on the Apple Developer website. *

    *

    * Apple has indicated that they will throttle "excessive" background notifications based on current traffic * volumes. To prevent your notifications being throttled, Apple recommends that you send no more than 3 silent push * notifications to each recipient per hour. *

    *
    */ private Boolean silentPush; /** *

    * The key for the sound to play when the recipient receives the push notification. The value for this key is the * name of a sound file in your app's main bundle or the Library/Sounds folder in your app's data container. If the * sound file can't be found or you specify default for the value, the system plays the default alert sound. *

    */ private String sound; /** *

    * The default message variables to use in the notification message. You can override these default variables with * individual address variables. *

    */ private java.util.Map> substitutions; /** *

    * The key that represents your app-specific identifier for grouping notifications. If you provide a Notification * Content app extension, you can use this value to group your notifications together. *

    */ private String threadId; /** *

    * The amount of time, in seconds, that APNs should store and attempt to deliver the push notification, if the * service is unable to deliver the notification the first time. If this value is 0, APNs treats the notification as * if it expires immediately and the service doesn't store or try to deliver the notification again. *

    *

    * Amazon Pinpoint specifies this value in the apns-expiration request header when it sends the notification message * to APNs. *

    */ private Integer timeToLive; /** *

    * The title to display above the notification message on the recipient's device. *

    */ private String title; /** *

    * The URL to open in the recipient's default mobile browser, if a recipient taps the push notification and the * value of the Action property is URL. *

    */ private String url; /** *

    * The type of push notification to send. Valid values are: *

    * *

    * Amazon Pinpoint specifies this value in the apns-push-type request header when it sends the notification message * to APNs. If you don't specify a value for this property, Amazon Pinpoint sets the value to alert or background * automatically, based on the value that you specify for the SilentPush or RawContent property of the message. *

    *

    * For more information about the apns-push-type request header, see Sending Notification Requests to APNs on the Apple Developer website. *

    * * @param aPNSPushType * The type of push notification to send. Valid values are:

    * *

    * Amazon Pinpoint specifies this value in the apns-push-type request header when it sends the notification * message to APNs. If you don't specify a value for this property, Amazon Pinpoint sets the value to alert * or background automatically, based on the value that you specify for the SilentPush or RawContent property * of the message. *

    *

    * For more information about the apns-push-type request header, see Sending Notification Requests to APNs on the Apple Developer website. */ public void setAPNSPushType(String aPNSPushType) { this.aPNSPushType = aPNSPushType; } /** *

    * The type of push notification to send. Valid values are: *

    * *

    * Amazon Pinpoint specifies this value in the apns-push-type request header when it sends the notification message * to APNs. If you don't specify a value for this property, Amazon Pinpoint sets the value to alert or background * automatically, based on the value that you specify for the SilentPush or RawContent property of the message. *

    *

    * For more information about the apns-push-type request header, see Sending Notification Requests to APNs on the Apple Developer website. *

    * * @return The type of push notification to send. Valid values are:

    * *

    * Amazon Pinpoint specifies this value in the apns-push-type request header when it sends the notification * message to APNs. If you don't specify a value for this property, Amazon Pinpoint sets the value to alert * or background automatically, based on the value that you specify for the SilentPush or RawContent * property of the message. *

    *

    * For more information about the apns-push-type request header, see Sending Notification Requests to APNs on the Apple Developer website. */ public String getAPNSPushType() { return this.aPNSPushType; } /** *

    * The type of push notification to send. Valid values are: *

    * *

    * Amazon Pinpoint specifies this value in the apns-push-type request header when it sends the notification message * to APNs. If you don't specify a value for this property, Amazon Pinpoint sets the value to alert or background * automatically, based on the value that you specify for the SilentPush or RawContent property of the message. *

    *

    * For more information about the apns-push-type request header, see Sending Notification Requests to APNs on the Apple Developer website. *

    * * @param aPNSPushType * The type of push notification to send. Valid values are:

    * *

    * Amazon Pinpoint specifies this value in the apns-push-type request header when it sends the notification * message to APNs. If you don't specify a value for this property, Amazon Pinpoint sets the value to alert * or background automatically, based on the value that you specify for the SilentPush or RawContent property * of the message. *

    *

    * For more information about the apns-push-type request header, see Sending Notification Requests to APNs on the Apple Developer website. * @return Returns a reference to this object so that method calls can be chained together. */ public APNSMessage withAPNSPushType(String aPNSPushType) { setAPNSPushType(aPNSPushType); return this; } /** *

    * The action to occur if the recipient taps the push notification. Valid values are: *

    * * * @param action * The action to occur if the recipient taps the push notification. Valid values are:

    *