Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Made minor changes

...

How your application subscribes its users (session- or token-base subscriptions) affectdetermine, to a degree, your options for delivering notifications. In short, if you need to send notifications to specific API Builder users, use session-based subscriptions. For instance, a mobile banking app would want to notify individual account holders. If you don't need to target specific users, token-based subscriptions are a good approach, as it doesn't require the additional step of setting up an API Builder account. 

...

  • Notification recipients and channel – If your application users were subscribed using session-based subscriptions, you can send a notification to specific API Builder users subscribed to a particular channel. For token-based subscriptions, you can send notifications to all users subscribed to a particular channel, or all users regardless of their channel subscriptions.
  • Notification schedule – You can send a notification immediately, or schedule it to be sent at a future date and time. Scheduled notifications can be one-time or recurring.
  • Notification payload – The content of the notification, which consists minimally of an alert string to display, and optionally a sound to play or badge display. See About Notification Payloads.

To send a notification to users located in a geographic area, the application must have first provided their current location to API Builder. For details, see Updating Subscriptions with Device Location

Appcelerator Dashboard provides two views for sending notifications, Standard and Advanced. The Standard view provides an easy way to send notifications without having to understand the payload structure. In the Advanced view, you manually create the JSON payload. The advanced form provides additional flexibility, such as including custom payload fields. 

...

  1. In Dashboard, select your application from the Apps menu.
  2. From the left-side navigation, select Cloud > Push Notifications.
  3. Click Send Push Notification to open the Send Push Notification form
  4. Select either the Standard or Advanced tab.
  5. Select Recipients and (optionally) the notification Channel Name:
    1. To send a notification to all users regardless of their channel subscriptions, select All Users and leave the Channel Name field blank. 
    2. To send a notification to all users subscribed to a particular channel, select All Users and enter the channel name in the Channel Name field.
    3. To send a notification to specific users who are subscribed to a particular channel, select Specific Users, then:
      1. Click the add (+) button in the To Users field.
      2. Select the desired recipients from the list of users. To locate a particular user, enter their username in the search field.
      3. In the Channel Name field enter the name of the target channel subscription. Note: You must specify a channel when sending a notification to specific users.
    4. To send a notification to all users located within a geographic selection, select Geographic Selection, then:
      1. Click the add (+) button in the Place field and select an existing Place. This defines the center points of the geographic selection. The selected Place must have a defined latitude and longitude.
      2. In the Radius field, enter the distance (in Miles or Meters) from the selected Place to define the size of the geographic selection.

  6. To specify when to deliver the notification, in the Send When field, select one of the following options:
    1. To send the notification immediately, select Send Now.
    2. To schedule a one-time notification, select One-Time and then select the delivery date and time (All times are in UTC.)
    3. To schedule a recurring notification, select Recurring, select the start date and time, the end date, and the recurrence interval: Daily, Weekly, or Monthly. (All times are in UTC.)
  7. To define the notification payload using the Standard view:
    1. In the Alert field, enter the notification message to display on the device.
    2. In the Badge field, enter a badge value. See Notification Badges for details.

    3. In the Sound field, select None, Default, or Custom. See Notification Sounds for details.

    4. For iOS devices:

      1. In the Content-Available field, check the box to indicate that new content is available. This is used to support Newsstand apps and background content downloads.

      2. In the Category field, enter the name of the category to use for interactive notifications. See iOS Interactive Notifications.

    5. For Android devices:
      1. in the Vibrate field, select No or Yes to have the device vibrate or not upon receipt of the notification.
      2. In the Title field (Android, only), select the title to display in the Alert message. See Notification Titles for details.
      3. In the Icon field (Android, only), specify the name of the image file to display as the notification icon. See Notification Icons for details. 
  8. To define the notification payload using the Advanced view:
    1. In the Custom JSON field, enter a valid JSON string (see Custom JSON Payloads for details).

  9. Click Send Now

...

  • alert –  The notification message displayed to the user. 
  • badge – A number to display with the notification. See Notification badges.
  • sound – The name of an audio file to play when the notification arrives, minus its extension. See Notification sounds.

Android devices support the following additional fields:

...

The payload can also include custom fields that your application can read and use as desired. See Custom JSON Payloads for an example of using custom fields.

Custom JSON payloads

Appcelerator Dashboard provides two forms, Standard and Advanced, for you to compose the payload. In the Standard form, you use common form controls to compose the payload, without having to write JSON code. In the Advanced form, you manually enter the JSON-encoded string that's sent in the notification. The JSON object can contain any of the standard fields discussed in About Notification Payloads, or custom fields specific to your application. For example, the following payload contains alert and sound fields, as well as a custom field named high_score.

...

Below is a more advanced custom JSON payload:

Code Block
{
    "alert": "Sample alert",
    "badge": "+2",
    "category": "sampleCategory", 
    "icon": "little_star",
    "sound": "door_bell",
    "title": "Example",
    "vibrate": true,
    "custom_field_1": "Arrow Push Rocks!",
    "custom_field_2": "Hi Push"
}

When the device receives this payload, it will do the following:

  • Display the "Sample alert" message.
  • Increment the current badge value by two.
  • Play the "door_bell" audio file.
  • On Android devices: 
    • The notification title will be set to "Example"
    • The device will vibrate
    • The "little_star" icon will be displayed in the notification area.
  • On iOS 8 devices and later:
    • The user notification actions associated with the "sampleCategory" user notification category.

About JSON Payloads Delivered to Devices 

The notification payload that Mobile Backend Services delivers to either FCM or GCM or APNS is slightly modified from the original JSON payload you provide to Dashboard. Also, the payloads are slightly different for Android and iOS devices.

For Android, all Android-specific fields are contained in an android dictionary, while all other iOS-only and custom fields are top-level keys of the payload. For example, the payload shown in Custom JSON payloads will be delivered to an Android application as follows:

Code Block
{
    "android": {
        "title": "Example",
        "alert": "Sample alert",
        "icon": "little_star",
        "badge": "+2",
        "sound": "door_bell",
        "vibrate": true,
    },
    "category": "sampleCategory",
    "custom_field_1": "Arrow Push Services Rocks!",
    "custom_field_2": "Hi Push"
}

For iOS devices, all iOS-specific fields are contained in an aps dictionary, while all Android-specific and custom fields are top-level keys of the payload. For example, For example, the payload shown in Custom JSON payloads will be delivered to an iOS application as follows:

Code Block
{ "aps": { "alert": "Sample alert", "badge": "+2", "category": "sampleCategory", "sound": "door_bell", }, "title": "Example", "icon": "little_star", "vibrate": true, "custom_field_1": "Arrow Push Rocks!", "custom_field_2": "Hi Push" }

 

Notification Features

Interactive Notifications (iOS 8 and later)

...

Your Titanium application defines one or more a notification categories, each of which consists of one or more notification actions. When you create a push notification in Dashboard, the Category form field lets you specify the category of interactive notification to display when the push notification arrives.

...

  1. In your Titanium application:
    1. Create and configure notification actions.
    2. Create notification categories and assign notification actions to them.
    3. Register the application for the desired notification categories, and to receive push notifications.

    4. Register an event listener for the remotenotificationaction event, to respond to user actions when they interact with the notification.
  2. In Dashboard, send a new push notification and set the Category field to the desired notification category to use.

...

In general, this error indicates that the recipients you selected are not subscribed to the specified channel. If you're sending a notification to specific API Builder users, make sure that those users are subscribed to the specified channel. Or, if you're sending a token-based notification (not addressed to specific users) make sure that channel name you specified has at least one subscriber. See Viewing subscribed devices for more information.

 When sending a geo-based push notification, this error can also indicate that no devices were found in the selected geographic area. Try the following:

...