| |
| |
| <!DOCTYPE html> |
| <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> |
| <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> |
| <head> |
| <meta charset="utf-8"> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| <title>Creating and managing notifications — Apache Usergrid 1.0 documentation</title> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> |
| |
| |
| |
| |
| |
| <link rel="top" title="Apache Usergrid 1.0 documentation" href="../index.html"/> |
| <link rel="next" title="Troubleshooting" href="troubleshooting.html"/> |
| <link rel="prev" title="Managing users and devices" href="managing-users-and-devices.html"/> |
| |
| |
| <script src="../_static/js/modernizr.min.js"></script> |
| |
| </head> |
| |
| <body class="wy-body-for-nav" role="document"> |
| |
| <div class="wy-grid-for-nav"> |
| |
| |
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> |
| <div class="wy-side-nav-search"> |
| |
| |
| |
| <a href="../index.html" class="icon icon-home"> Apache Usergrid |
| |
| |
| |
| </a> |
| |
| |
| |
| |
| <div class="version"> |
| 1.0 |
| </div> |
| |
| |
| |
| |
| <div role="search"> |
| <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> |
| <input type="text" name="q" placeholder="Search docs" /> |
| <input type="hidden" name="check_keywords" value="yes" /> |
| <input type="hidden" name="area" value="default" /> |
| </form> |
| </div> |
| |
| |
| </div> |
| |
| <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> |
| |
| |
| |
| <p class="caption"><span class="caption-text">Getting Started</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../introduction/overview.html">Getting Started</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../introduction/usergrid-features.html">Usergrid Features</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../introduction/data-model.html">Usergrid Data model</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../introduction/async-vs-sync.html">Async vs. sync calls</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Using Usergrid</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../using-usergrid/creating-account.html">Creating a Usergrid Account</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../using-usergrid/creating-a-new-application.html">Creating a new application</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../using-usergrid/using-a-sandbox-app.html">Using a Sandbox Application</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../using-usergrid/using-the-api.html">Using the API</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Data Storage</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../data-storage/data-store-dbms.html">The Usergrid Data Store</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../data-storage/optimizing-access.html">Data Store Best Practices</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../data-storage/collections.html">Collections</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../data-storage/entities.html">Entities</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Data Queries</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../data-queries/querying-your-data.html">Querying your data</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../data-queries/query-parameters.html">Query parameters & clauses</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../data-queries/operators-and-types.html">Query operators & data types</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../data-queries/advanced-query-usage.html">Advanced query usage</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Entity Connections</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../entity-connections/connecting-entities.html">Connecting entities</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../entity-connections/retrieving-entities.html">Retrieving connections</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../entity-connections/disconnecting-entities.html">Disconnecting entities</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Push Notifications</span></p> |
| <ul class="current"> |
| <li class="toctree-l1"><a class="reference internal" href="overview.html">Push notifications overview</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="adding-push-support.html">Adding push notifications support</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="getting-started.html">Getting started with push notifications</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial: Push notifications sample app</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="registering.html">Registering with a notification service</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="creating-notifiers.html">Creating notifiers</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="managing-users-and-devices.html">Managing users and devices</a></li> |
| <li class="toctree-l1 current"><a class="current reference internal" href="">Creating and managing notifications</a><ul> |
| <li class="toctree-l2"><a class="reference internal" href="#creating-notifications">Creating notifications</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#creating-notificastions-with-curl">Creating notificastions with cURL</a><ul> |
| <li class="toctree-l4"><a class="reference internal" href="#targeting-a-single-device">Targeting a single device</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#targeting-all-devices">Targeting all devices</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#targeting-a-single-user">Targeting a single user</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#targeting-a-group">Targeting a group</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#targeting-users-by-location">Targeting users by location</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#request-parameters">Request Parameters</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l3"><a class="reference internal" href="#creating-notificastions-with-admin-portal">Creating notificastions with Admin portal</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#creating-notificastions-with-ios">Creating notificastions with iOS</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l2"><a class="reference internal" href="#scheduling-notifications">Scheduling notifications</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#curl">cURL</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l2"><a class="reference internal" href="#targeting-multiple-notifiers-or-messages">Targeting multiple notifiers or messages</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="#setting-a-notification-expiration">Setting a notification expiration</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="#getting-notifications">Getting notifications</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#id1">cURL</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l2"><a class="reference internal" href="#canceling-sent-notifications">Canceling sent notifications</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#admin-portal">Admin portal</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l2"><a class="reference internal" href="#deleting-unsent-notifications">Deleting unsent notifications</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#deleting-unsent-notifications-with-curl">Deleting unsent notifications with cURL</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#deleting-unsent-notifications-with-admin-portal">Deleting unsent notifications with Admin Portal</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l2"><a class="reference internal" href="#getting-receipts">Getting receipts</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="#notification-endpoints">Notification endpoints</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Security & Authentication</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/app-security.html">Security & token authentication</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/using-permissions.html">Using permissions</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/using-roles.html">Using roles</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/authenticating-users-and-application-clients.html">Authenticating users & app clients</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/user-authentication-types.html">Authentication levels</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/changing-token-time-live-ttl.html">Changing token expiration (time-to-live)</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/authenticating-api-requests.html">Authenticating API requests</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/revoking-tokens-logout.html">Revoking tokens (logout)</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/facebook-sign.html">Facebook sign in</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../security-and-auth/securing-your-app.html">Security best practices</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">User Management & Social Graph</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../user-management/user-management.html">User management & social graph</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../user-management/working-user-data.html">Working with User Data</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../user-management/group.html">Working with group data</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../user-management/activity.html">Activity</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../user-management/user-connections.html">Social Graph Connections</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../user-management/user-connections.html#creating-other-connections">Creating other connections</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../user-management/messagee-example.html">App Example - Messagee</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Geo-location</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../geolocation/geolocation.html">Geolocating your Entities</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Assets & Files</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../assets-and-files/uploading-assets.html">Uploading assets</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../assets-and-files/retrieving-assets.html">Retrieving assets</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../assets-and-files/folders.html">Folders</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Counters & Events</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../counters-and-events/events-and-counters.html">Counters & events</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../counters-and-events/creating-and-incrementing-counters.html">Creating & incrementing counters</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../counters-and-events/creating-and-incrementing-counters.html#decrementing-resetting-counters">Decrementing/resetting counters</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../counters-and-events/creating-and-incrementing-counters.html#using-counters-hierarchically">Using counters hierarchically</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../counters-and-events/retrieving-counters.html">Retrieving counters</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Organizations & Applications</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/managing.html">Organization & application management</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/organization.html">Organization</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/application.html">Application</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/admin-user.html">Admin user</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">API Reference</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../rest-endpoints/api-docs.html">Methods</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../rest-endpoints/api-docs.html#models">Models</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../rest-endpoints/api-docs.html#sub-types">Sub-Types</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Client SDKs</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../sdks/tbd.html">COMING SOON...</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">Installing Usergrid</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../installation/deployment-guide.html">Usergrid 2.1.0 Deployment Guide</a></li> |
| </ul> |
| <p class="caption"><span class="caption-text">More about Usergrid</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../reference/presos-and-videos.html">Presentations & Videos</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../reference/contribute-code.html">How to Contribute Code & Docs</a></li> |
| </ul> |
| |
| |
| |
| </div> |
| |
| </nav> |
| |
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> |
| |
| |
| <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> |
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> |
| <a href="../index.html">Apache Usergrid</a> |
| </nav> |
| |
| |
| |
| <div class="wy-nav-content"> |
| <div class="rst-content"> |
| <div role="navigation" aria-label="breadcrumbs navigation"> |
| <ul class="wy-breadcrumbs"> |
| <li><a href="../index.html">Docs</a> »</li> |
| |
| <li>Creating and managing notifications</li> |
| <li class="wy-breadcrumbs-aside"> |
| |
| |
| <a href="../_sources/push-notifications/creating-and-managing-notifications.txt" rel="nofollow"> View page source</a> |
| |
| |
| </li> |
| </ul> |
| <hr/> |
| </div> |
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> |
| <div itemprop="articleBody"> |
| |
| <div class="section" id="creating-and-managing-notifications"> |
| <h1>Creating and managing notifications<a class="headerlink" href="#creating-and-managing-notifications" title="Permalink to this headline">¶</a></h1> |
| <p>This topic provides information on setting up and sending push |
| notifications with the Usergrid API backend as a service (BaaS). For |
| high-level information, prerequisites, and tutorials, see <a class="reference external" href="overview.html">Push |
| notifications overview</a>.</p> |
| <div class="admonition note"> <p class="first admonition-title"><p>Note</p> |
| </p> <p class="last"> |
| |
| |
| Although not shown in many of the API examples below, you need to<p>provide a valid access token with each API call. See <a class="reference external" href="../security-and-auth/authenticating-users-and-application-clients.html">Authenticating |
| users and application |
| clients</a> |
| for details.</p> |
| </p></div> |
| |
| <div class="admonition note"> <p class="first admonition-title"><p>Note</p> |
| </p> <p class="last"> |
| |
| |
| For an overview of how to set up push notifications, including<p>troubleshooting tips, see <a class="reference external" href="adding-push-support.html">Adding push notifications |
| support</a>.</p> |
| </p></div><div class="section" id="creating-notifications"> |
| <h2>Creating notifications<a class="headerlink" href="#creating-notifications" title="Permalink to this headline">¶</a></h2> |
| <p>When you create a notification, it is scheduled to be delivered to all |
| applicable devices immediately unless the deliver property has been set. |
| A notification may contain multiple messages (payloads), and each |
| payload must be associated with a notifier in order to deliver that |
| message to the associated app. This allows a single notification to be |
| delivered to multiple apps across various services, and is useful if you |
| want to send messages to multiple notifiers, such as development and |
| production versions of both Apple and Google simultaneously.</p> |
| <p>Notification can be created via POST request to the BaaS API, or in the |
| admin portal:</p> |
| <div class="section" id="creating-notificastions-with-curl"> |
| <h3>Creating notificastions with cURL<a class="headerlink" href="#creating-notificastions-with-curl" title="Permalink to this headline">¶</a></h3> |
| <div class="section" id="targeting-a-single-device"> |
| <h4>Targeting a single device<a class="headerlink" href="#targeting-a-single-device" title="Permalink to this headline">¶</a></h4> |
| <p>This request will target a specific device entity.</p> |
| <p>Request Syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre>curl -X POST https://api.usergrid.com/<org>/<app>/devices/<device_ID>/notifications -d '{"payloads":{<notifier>:<message>}}' |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="targeting-all-devices"> |
| <h4>Targeting all devices<a class="headerlink" href="#targeting-all-devices" title="Permalink to this headline">¶</a></h4> |
| <p>This request will target all device entities.</p> |
| <p>Request Syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre>curl -X POST https://api.usergrid.com/<org>/<app>/devices/*/notifications -d '{"payloads":{<notifier>:<message>}}' |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="targeting-a-single-user"> |
| <h4>Targeting a single user<a class="headerlink" href="#targeting-a-single-user" title="Permalink to this headline">¶</a></h4> |
| <p>This request will target a specific user entity.</p> |
| <p>Request Syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre>curl -X POST https://api.usergrid.com/<org>/<app>/users/<username>/notifications -d '{"payloads":{<notifier>:<message>}}' |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="targeting-a-group"> |
| <h4>Targeting a group<a class="headerlink" href="#targeting-a-group" title="Permalink to this headline">¶</a></h4> |
| <p>This request will target all users associated with a specific group |
| entity.</p> |
| <p>Request Syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre>curl -X POST https://api.usergrid.com/<org>/<app>/groups/<group_path>/notifications -d '{"payloads":{<notifier>:<message>}}' |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="targeting-users-by-location"> |
| <h4>Targeting users by location<a class="headerlink" href="#targeting-users-by-location" title="Permalink to this headline">¶</a></h4> |
| <p>This request will target all device entities that are within a set |
| radius of a latitude/longitude coordinate.</p> |
| <p>Request Syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre>curl -X POST https://api.usergrid.com/<org>/<app>/devices;ql=location within <radius> of <lat>,<long>/notifications -d '{"payloads":{<notifier>:<message>}}' |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="request-parameters"> |
| <h4>Request Parameters<a class="headerlink" href="#request-parameters" title="Permalink to this headline">¶</a></h4> |
| <p>The following parameters can be specified when targeting push |
| notifications.</p> |
| <p>Base URL</p> |
| <p>These parameters are used in forming the base URL of the request:</p> |
| <table border="1" class="docutils"> |
| <colgroup> |
| <col width="24%" /> |
| <col width="76%" /> |
| </colgroup> |
| <thead valign="bottom"> |
| <tr class="row-odd"><th class="head">Parameter</th> |
| <th class="head">Description</th> |
| </tr> |
| </thead> |
| <tbody valign="top"> |
| <tr class="row-even"><td>org</td> |
| <td>Organization UUID or organization name</td> |
| </tr> |
| <tr class="row-odd"><td>app</td> |
| <td>Application UUID or application name</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>Notification</p> |
| <p>These parameters are used when forming the notification portion of the |
| request:</p> |
| <table border="1" class="docutils"> |
| <colgroup> |
| <col width="7%" /> |
| <col width="93%" /> |
| </colgroup> |
| <thead valign="bottom"> |
| <tr class="row-odd"><th class="head">Parameter</th> |
| <th class="head">Description</th> |
| </tr> |
| </thead> |
| <tbody valign="top"> |
| <tr class="row-even"><td>notifier</td> |
| <td>The <code class="docutils literal"><span class="pre">notifier</span></code> entity you wish to associate with the notification (see <a class="reference external" href="creating-notifiers.html">Creating notifiers</a> for information on creating notifiers)</td> |
| </tr> |
| <tr class="row-odd"><td>message</td> |
| <td>The push notification message that will be delivered to the user</td> |
| </tr> |
| </tbody> |
| </table> |
| <p><strong>Note</strong>: If your message contains double-quotes (“”) you must escape |
| them with a backslash</p> |
| <p>Targets</p> |
| <p>These parameters are used when specifying the notification target in the |
| request.</p> |
| <table border="1" class="docutils"> |
| <colgroup> |
| <col width="21%" /> |
| <col width="79%" /> |
| </colgroup> |
| <thead valign="bottom"> |
| <tr class="row-odd"><th class="head">Parameter</th> |
| <th class="head">Description</th> |
| </tr> |
| </thead> |
| <tbody valign="top"> |
| <tr class="row-even"><td>device</td> |
| <td>UUID of a device entity.</td> |
| </tr> |
| <tr class="row-odd"><td>user</td> |
| <td>UUID or username of a user entity.</td> |
| </tr> |
| <tr class="row-even"><td>phone_type</td> |
| <td>Specified in a appended query string. The type property of a device entity.</td> |
| </tr> |
| <tr class="row-odd"><td>group</td> |
| <td>UUID or name of the group entity.</td> |
| </tr> |
| <tr class="row-even"><td>latitude, longitude, radius</td> |
| <td>Specified in a appended query string. The radius in meters of a user device from a latitude/longitude coordinate.</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="section" id="creating-notificastions-with-admin-portal"> |
| <h3>Creating notificastions with Admin portal<a class="headerlink" href="#creating-notificastions-with-admin-portal" title="Permalink to this headline">¶</a></h3> |
| <p>To create the new notification with the admin portal, do the following:</p> |
| <ol class="arabic simple"> |
| <li>Log in to the admin portal.</li> |
| <li>In the left nav, click <strong>Push > Send Notification</strong>.</li> |
| <li>From the <strong>Notifier</strong> drop-down, select the appropriate notifier.</li> |
| <li>Under the notifier name, select one of the following to specify where |
| your notification message should go:</li> |
| </ol> |
| <ul class="simple"> |
| <li><strong>All Devices</strong> to have the message sent to all devices.</li> |
| <li><strong>Devices</strong> to have the message sent to a particular subset of |
| devices. Enter a comma-separated list of device UUIDs in the box |
| provided.</li> |
| <li><strong>Users</strong> to have the message sent to a particular subset of users. |
| Enter a comma-separated list of username values in the box provided.</li> |
| <li><strong>Groups</strong> to have the message sent to a particular subset of user |
| groups. Enter a comma-separated list of group paths in the box |
| provided.</li> |
| </ul> |
| <ol class="arabic simple" start="5"> |
| <li>In the <strong>Notifier Message</strong> field, enter the message (payload) you |
| want delivered.</li> |
| <li>If double-quotes are included in your message, you must escape them |
| with a backslash. 7, Under <strong>Delivery</strong>, select one of the following |
| to specify when the notification should be delivered:</li> |
| </ol> |
| <ul class="simple"> |
| <li><strong>Now</strong> to have the message delivered immediately.</li> |
| <li>Schedule for later to choose a date and time at which the message |
| should be delivered.</li> |
| </ul> |
| <ol class="arabic simple" start="7"> |
| <li>Click <strong>Submit</strong>.</li> |
| </ol> |
| <p>To create a notification to send multiple messages or target multiple |
| platforms, see the cURL syntax for creating notifications.</p> |
| </div> |
| <div class="section" id="creating-notificastions-with-ios"> |
| <h3>Creating notificastions with iOS<a class="headerlink" href="#creating-notificastions-with-ios" title="Permalink to this headline">¶</a></h3> |
| <p>To send notifications from iOS app code, you use the |
| 11ApigeeAPSDestination11 and <code class="docutils literal"><span class="pre">ApigeeAPSPayload</span></code> classes.</p> |
| <p>With <code class="docutils literal"><span class="pre">ApigeeAPSDestination</span></code>, you specify where the notification should |
| go (a particular user or device or user group, for example). With |
| <code class="docutils literal"><span class="pre">ApigeeAPSPayload</span></code>, you specify the contents of the message, including |
| any alert text, sound, or badge (items specified by Apple as allowable |
| notification content types). You then use <code class="docutils literal"><span class="pre">ApigeeDataClient</span></code> to send |
| the message via Apigee and Apple APNs.</p> |
| <p>The following code illustrates how to send a notification to a single |
| user. Though this is the device on which the app itself is installed, |
| you can imagine how you might send a notification to another device, |
| such as one belonging to someone “following” this user. For more, see |
| the iOS push sample application included with the <a class="reference external" href="../sdks/tbd.html">Apigee iOS |
| SDK</a>.</p> |
| <div class="highlight-python"><div class="highlight"><pre>- (void)sendMyselfAPushNotification:(NSString *)message |
| completionHandler:(ApigeeDataClientCompletionHandler)completionHandler |
| { |
| // send to a single device -- our own device |
| NSString *deviceId = [ApigeeDataClient getUniqueDeviceID]; |
| ApigeeAPSDestination* destination = |
| [ApigeeAPSDestination destinationSingleDevice:deviceId]; |
| |
| // set our APS payload |
| ApigeeAPSPayload* apsPayload = [[ApigeeAPSPayload alloc] init]; |
| apsPayload.sound = kBundledSoundNameWithExt; |
| apsPayload.alertText = message; |
| |
| // Example of what a custom payload might look like -- remember that |
| // APNS payloads are limited to a maximum of 256 bytes (for the entire |
| // payload -- including the 'aps' part) |
| NSMutableDictionary* customPayload = [[NSMutableDictionary alloc] init]; |
| [customPayload setValue:@"72" forKey:@"degrees"]; |
| [customPayload setValue:@"3" forKey:@"newOrders"]; |
| |
| __weak AppDelegate* weakSelf = self; |
| |
| // send the push notification |
| [dataClient pushAlert:apsPayload |
| customPayload:customPayload |
| destination:destination |
| usingNotifier:notifier |
| completionHandler:^(ApigeeClientResponse *response) { |
| if ( ! [response completedSuccessfully]) { |
| [weakSelf alert:response.rawResponse |
| title: @"Error"]; |
| } |
| |
| if (completionHandler) { |
| completionHandler(response); |
| } |
| }]; |
| } |
| </pre></div> |
| </div> |
| </div> |
| </div> |
| <div class="section" id="scheduling-notifications"> |
| <h2>Scheduling notifications<a class="headerlink" href="#scheduling-notifications" title="Permalink to this headline">¶</a></h2> |
| <div class="section" id="curl"> |
| <h3>cURL<a class="headerlink" href="#curl" title="Permalink to this headline">¶</a></h3> |
| <p>To schedule a notification for a later time, add the deliver parameter |
| with a UNIX timestamp to the body of your request.</p> |
| <p>Request body syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre><span class="s">'{"deliver":<unix_timestamp>,"payloads":{<notifier>:<message>}}'</span> |
| </pre></div> |
| </div> |
| </div> |
| </div> |
| <div class="section" id="targeting-multiple-notifiers-or-messages"> |
| <h2>Targeting multiple notifiers or messages<a class="headerlink" href="#targeting-multiple-notifiers-or-messages" title="Permalink to this headline">¶</a></h2> |
| <p>To send multiple messages or target multiple platforms with a single |
| notification entity, include multiple notifier-message pairs as a |
| comma-separated list in the payloads object of the request body:</p> |
| <p>Request body syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre><span class="s">'{"payloads":{<notifier>:<message>, <notifier>:<message>, ...}}'</span> |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="setting-a-notification-expiration"> |
| <h2>Setting a notification expiration<a class="headerlink" href="#setting-a-notification-expiration" title="Permalink to this headline">¶</a></h2> |
| <p>If a push service can’t deliver a message to a device and needs to |
| resend it (for example, if the device is turned off), you can set a |
| notification to expire after a certain date/time.</p> |
| <p>To do this, adding the expire parameter with a UNIX timestamp to your |
| request body. This specifies when the service should stop trying to send |
| the notification.</p> |
| <div class="admonition warning"> <p class="first admonition-title"><p>Warning</p> |
| </p> <p class="last"> |
| |
| |
| Please note that if the expire property is not set and Apple APNS or<p>Google GCM are not able to immediately deliver your push notification, |
| delivery will not be retried. This means your notification will not be |
| delivered. As a best practice, you should always set an expire timestamp |
| to ensure your notification is delivered in the event the delivery |
| initially fails.</p> |
| </p></div><p>Request body syntax</p> |
| <div class="highlight-python"><div class="highlight"><pre><span class="s">'{"expire":<unix_timestamp>,"payloads":{"<notifier_name>":"<message>"}}'</span> |
| </pre></div> |
| </div> |
| <p>NOTE: The timestamp is a UNIX timestamp and is specified in seconds.</p> |
| </div> |
| <div class="section" id="getting-notifications"> |
| <h2>Getting notifications<a class="headerlink" href="#getting-notifications" title="Permalink to this headline">¶</a></h2> |
| <div class="section" id="id1"> |
| <h3>cURL<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3> |
| <p>The following are endpoints can be used to get notifications. For |
| details on the notification properties you can get, see Notifier, |
| Receipt, and Notification.</p> |
| <p>Getting one or more notifications:</p> |
| <div class="highlight-python"><div class="highlight"><pre>/notifications |
| </pre></div> |
| </div> |
| <p>Getting notifications associated with one or more receipts:</p> |
| <div class="highlight-python"><div class="highlight"><pre>/receipts/*/notification |
| </pre></div> |
| </div> |
| <p>Getting the list of devices associated with one or more notifications |
| before the notifications are sent:</p> |
| <div class="highlight-python"><div class="highlight"><pre>/notifications/*/queue |
| </pre></div> |
| </div> |
| </div> |
| </div> |
| <div class="section" id="canceling-sent-notifications"> |
| <h2>Canceling sent notifications<a class="headerlink" href="#canceling-sent-notifications" title="Permalink to this headline">¶</a></h2> |
| <p>You can cancel a notification that’s already in progress by doing the |
| following:</p> |
| <div class="highlight-python"><div class="highlight"><pre>curl -X PUT "https://api.usergrid.com/my-org/sandbox/notifications/<notification-uuid>" -d '{"canceled": true}' |
| </pre></div> |
| </div> |
| <div class="section" id="admin-portal"> |
| <h3>Admin portal<a class="headerlink" href="#admin-portal" title="Permalink to this headline">¶</a></h3> |
| <p>You can view JSON for notifications by viewing their entity entries in |
| the Data section of your application.</p> |
| <p>In the admin portal, click Data, then click the <strong>/notifications</strong> |
| collection. You can also view notification data in the message history.</p> |
| <p>In the admin portal, click Push, then click Message History. Locate the |
| notification for which you want to view data, then click its view |
| details link.</p> |
| </div> |
| </div> |
| <div class="section" id="deleting-unsent-notifications"> |
| <h2>Deleting unsent notifications<a class="headerlink" href="#deleting-unsent-notifications" title="Permalink to this headline">¶</a></h2> |
| <div class="section" id="deleting-unsent-notifications-with-curl"> |
| <h3>Deleting unsent notifications with cURL<a class="headerlink" href="#deleting-unsent-notifications-with-curl" title="Permalink to this headline">¶</a></h3> |
| <div class="highlight-python"><div class="highlight"><pre>curl -X DELETE "https://api.usergrid.com/<you-org>/<app>/notifications/<notification-uuid>" |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="deleting-unsent-notifications-with-admin-portal"> |
| <h3>Deleting unsent notifications with Admin Portal<a class="headerlink" href="#deleting-unsent-notifications-with-admin-portal" title="Permalink to this headline">¶</a></h3> |
| <ol class="arabic simple"> |
| <li>In the admin portal, click Push, then Message History.</li> |
| <li>On the Message History page, click Scheduled.</li> |
| <li>In the list of scheduled messages, locate the message you want to |
| delete.</li> |
| <li>In the top area of the message item, click the delete link.</li> |
| </ol> |
| </div> |
| </div> |
| <div class="section" id="getting-receipts"> |
| <h2>Getting receipts<a class="headerlink" href="#getting-receipts" title="Permalink to this headline">¶</a></h2> |
| <p>After sending a notification, the BaaS generates a receipt entity that |
| contains details about the notification. Receipts show details such as |
| timestamps, payloads sent, and the receipt endpoints.</p> |
| <p>For information about what’s contained in a receipt, see |
| <a class="reference external" href="..//rest-endpoints/api-docs.html#notifier">Notifier</a>, |
| <a class="reference external" href="..//rest-endpoints/api-docs.html#receipt">Receipt</a>, and |
| <a class="reference external" href="..//rest-endpoints/api-docs.html#notification">Notification</a>. Use |
| the following endpoints to get receipts.</p> |
| <p>To get one or more receipts:</p> |
| <div class="highlight-python"><div class="highlight"><pre>/receipts |
| </pre></div> |
| </div> |
| <p>To get receipts associated with one or more devices:</p> |
| <div class="highlight-python"><div class="highlight"><pre>/devices/*/receipts |
| </pre></div> |
| </div> |
| <p>To get receipts for one or more notifications. For example, get receipts |
| for notifications that had errors.</p> |
| <div class="highlight-python"><div class="highlight"><pre>/notifications/*/receipts |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="notification-endpoints"> |
| <h2>Notification endpoints<a class="headerlink" href="#notification-endpoints" title="Permalink to this headline">¶</a></h2> |
| <p>The <code class="docutils literal"><span class="pre">/notifications</span></code> endpoints let you create, schedule, cancel, and |
| delete notifications. You can also use the following endpoints to |
| accomplish the same actions for specific groups, users, devices, or any |
| combination thereof.</p> |
| <p>Base URL: <code class="docutils literal"><span class="pre">https://api.usergrid.com/my-org/my-app</span></code></p> |
| <div class="highlight-python"><div class="highlight"><pre>/groups/*/notifications |
| /groups/*/users/*/notifications |
| /groups/*/users/*/devices/*/notifications |
| /users/*/notifications |
| /users/*/devices/*/notifications |
| /devices/*/notifications |
| </pre></div> |
| </div> |
| </div> |
| </div> |
| |
| |
| </div> |
| </div> |
| <footer> |
| |
| <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> |
| |
| <a href="troubleshooting.html" class="btn btn-neutral float-right" title="Troubleshooting" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> |
| |
| |
| <a href="managing-users-and-devices.html" class="btn btn-neutral" title="Managing users and devices" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> |
| |
| </div> |
| |
| |
| <hr/> |
| |
| <div role="contentinfo"> |
| <p> |
| © Copyright 2013-2015, Apache Usergrid. |
| |
| </p> |
| </div> |
| Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. |
| |
| </footer> |
| |
| </div> |
| </div> |
| |
| </section> |
| |
| </div> |
| |
| |
| |
| |
| |
| <script type="text/javascript"> |
| var DOCUMENTATION_OPTIONS = { |
| URL_ROOT:'../', |
| VERSION:'1.0', |
| COLLAPSE_INDEX:false, |
| FILE_SUFFIX:'.html', |
| HAS_SOURCE: true |
| }; |
| </script> |
| <script type="text/javascript" src="../_static/jquery.js"></script> |
| <script type="text/javascript" src="../_static/underscore.js"></script> |
| <script type="text/javascript" src="../_static/doctools.js"></script> |
| |
| |
| |
| |
| |
| <script type="text/javascript" src="../_static/js/theme.js"></script> |
| |
| |
| |
| |
| <script type="text/javascript"> |
| jQuery(function () { |
| SphinxRtdTheme.StickyNav.enable(); |
| }); |
| </script> |
| |
| |
| </body> |
| </html> |