| <!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>Tutorial: Push notifications sample app — Apache Usergrid 2.x documentation</title> | |
| <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> | |
| <link rel="top" title="Apache Usergrid 2.x documentation" href="../index.html"/> | |
| <link rel="next" title="Registering with a notification service" href="registering.html"/> | |
| <link rel="prev" title="Getting started with push notifications" href="getting-started.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"> | |
| 2.x | |
| </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 current"><a class="current reference internal" href="">Tutorial: Push notifications sample app</a><ul> | |
| <li class="toctree-l2"><a class="reference internal" href="#before-you-begin">Before you begin</a></li> | |
| <li class="toctree-l2"><a class="reference internal" href="#step-1-download-a-sample-app">Step 1: Download a sample app</a></li> | |
| <li class="toctree-l2"><a class="reference internal" href="#step-2-register-with-a-notification-service-and-generate-a-certificate-key">Step 2: Register with a notification service and generate a certificate/key</a></li> | |
| <li class="toctree-l2"><a class="reference internal" href="#step-3-create-a-notifier">Step 3: Create a notifier</a></li> | |
| <li class="toctree-l2"><a class="reference internal" href="#step-4-configure-and-run-the-sample-app">Step 4: Configure and run the sample app</a><ul> | |
| <li class="toctree-l3"><a class="reference internal" href="#ios-dev-setup">iOS Dev Setup</a></li> | |
| <li class="toctree-l3"><a class="reference internal" href="#phonegap-ios-dev-setup">PhoneGap iOS Dev Setup</a></li> | |
| <li class="toctree-l3"><a class="reference internal" href="#about-ios-provisioning-profiles">About iOS provisioning profiles</a></li> | |
| <li class="toctree-l3"><a class="reference internal" href="#android-dev-setup">Android Dev Setup</a></li> | |
| <li class="toctree-l3"><a class="reference internal" href="#phonegap-android-dev-setup">PhoneGap Android Dev Setup</a></li> | |
| <li class="toctree-l3"><a class="reference internal" href="#more-about-phonegap">More about PhoneGap</a></li> | |
| </ul> | |
| </li> | |
| <li class="toctree-l2"><a class="reference internal" href="#step-5-review-the-data-entities-created-by-the-sample-app">Step 5: Review the data entities created by the sample app</a></li> | |
| <li class="toctree-l2"><a class="reference internal" href="#step-6-send-additional-push-notifications-using-other-usergrid-tools">Step 6: Send additional push notifications using other Usergrid tools</a><ul> | |
| <li class="toctree-l3"><a class="reference internal" href="#send-a-push-notification-directly-via-the-push-notifications-api">Send a push notification directly via the push notifications API</a></li> | |
| </ul> | |
| </li> | |
| </ul> | |
| </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"><a class="reference internal" href="creating-and-managing-notifications.html">Creating and managing notifications</a></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>Tutorial: Push notifications sample app</li> | |
| <li class="wy-breadcrumbs-aside"> | |
| <a href="../_sources/push-notifications/tutorial.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="tutorial-push-notifications-sample-app"> | |
| <h1>Tutorial: Push notifications sample app<a class="headerlink" href="#tutorial-push-notifications-sample-app" title="Permalink to this headline">¶</a></h1> | |
| <p>In this tutorial, you’ll use a sample app (iOS, Android, or PhoneGap) to | |
| send yourself a push notification with the Usergrid push notification | |
| API. You’ll register with a push notification services (Apple APNs or | |
| Google GCM) to create the required security certificate or key, create | |
| the required Usergrid notifier to send a message, then modify, compile | |
| and run the sample app to see push notifications in action.</p> | |
| <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="before-you-begin"> | |
| <h2>Before you begin<a class="headerlink" href="#before-you-begin" title="Permalink to this headline">¶</a></h2> | |
| <p>Before you can add support for push notifications, be sure that you’re | |
| set up for the requirements described in Adding push notifications | |
| support.</p> | |
| </div> | |
| <div class="section" id="step-1-download-a-sample-app"> | |
| <h2>Step 1: Download a sample app<a class="headerlink" href="#step-1-download-a-sample-app" title="Permalink to this headline">¶</a></h2> | |
| <p>Sample push notification apps are included in the /samples directory of | |
| the following platform SDKs and plugins:</p> | |
| <ul class="simple"> | |
| <li>Native iOS <a class="reference external" href="http://www.apigee.com/docs/content/ios-sdk-redirect">Download the | |
| SDK</a></li> | |
| <li>Native Android <a class="reference external" href="http://www.apigee.com/docs/content/android-sdk-redirect">Download the | |
| SDK</a></li> | |
| <li>PhoneGap iOS & Android (HTML5) [Download the | |
| SDK](<a class="reference external" href="http://www.apigee.com/docs/content/javascript-sdk-redirect">http://www.apigee.com/docs/content/javascript-sdk-redirect</a></li> | |
| </ul> | |
| <p>To begin this tutorial, download the sample app for the platform of your | |
| choice.</p> | |
| <p><strong>A note to PhoneGap developers</strong>: PhoneGap requires a plugin to enable | |
| push notifications. The plugin is included in the sample apps in the | |
| JavaScript SDK. For new PhoneGap applications, <a class="reference external" href="https://github.com/phonegap-build/PushPlugin">download the PhoneGap | |
| push plugin</a>.</p> | |
| </div> | |
| <div class="section" id="step-2-register-with-a-notification-service-and-generate-a-certificate-key"> | |
| <h2>Step 2: Register with a notification service and generate a certificate/key<a class="headerlink" href="#step-2-register-with-a-notification-service-and-generate-a-certificate-key" title="Permalink to this headline">¶</a></h2> | |
| <p>To send push notifications you must register your app with the push | |
| notification service that corresponds to your app’s platform. Once | |
| registered, the service will provide you with a certificate or key that | |
| you will provide when creating an Usergrid notifier.</p> | |
| <p>For a full walkthrough of how to register an app with a notification | |
| service and generate the necessary certificate/key, see <a class="reference external" href="registration.html">Registering | |
| with a notification service</a>.</p> | |
| </div> | |
| <div class="section" id="step-3-create-a-notifier"> | |
| <h2>Step 3: Create a notifier<a class="headerlink" href="#step-3-create-a-notifier" title="Permalink to this headline">¶</a></h2> | |
| <p>Notifiers are entities that carry your push notifications to a | |
| notification service. Once a notification service has verified that your | |
| notifier contains valid credentials, it will deliver your push | |
| notification to the devices of your app’s users.</p> | |
| <p>For information on how to use the admin portal to create a notifier, see | |
| <a class="reference external" href="creating-notifiers.html">Creating notifiers</a>.</p> | |
| </div> | |
| <div class="section" id="step-4-configure-and-run-the-sample-app"> | |
| <h2>Step 4: Configure and run the sample app<a class="headerlink" href="#step-4-configure-and-run-the-sample-app" title="Permalink to this headline">¶</a></h2> | |
| <p>In this step, you’ll open your sample app of choice in your IDE and | |
| configure it. The Android sample app can be run with an emulator, | |
| included in the Android Developer Tools. The iOS sample app must be run | |
| on an actual iOS device.</p> | |
| <p>The following sections provide platform-specific guidance for setting up | |
| and running the samples. However, this content assumes that you | |
| understand your development environment well enough to configure and | |
| work with projects.</p> | |
| <div class="section" id="ios-dev-setup"> | |
| <h3>iOS Dev Setup<a class="headerlink" href="#ios-dev-setup" title="Permalink to this headline">¶</a></h3> | |
| <p>To configure and run the Native iOS push notification sample app, do the | |
| following:</p> | |
| <ol class="arabic simple"> | |
| <li>Open the iOS sample app with XCode by opening its .xcodeproj file.</li> | |
| <li>Make the following changes to <strong>/Push Test/AppDelegate.m</strong>:</li> | |
| </ol> | |
| <ul class="simple"> | |
| <li><strong>orgName</strong>: Your Apigee organization.</li> | |
| <li><strong>appName</strong>: The app in your organization where you created the | |
| notifier. (For the sample, make sure it’s “sandbox”.)</li> | |
| <li><strong>notifier</strong>: Name of the notifier you created. (For the sample, make | |
| sure it’s “appledev”.).</li> | |
| </ul> | |
| <ol class="arabic simple" start="3"> | |
| <li>Plug your iOS device into your development machine.</li> | |
| <li>In Xcode, select <strong>Window > Organizer</strong> to open the Xcode Organizer.</li> | |
| <li>Under <strong>Devices</strong>, select the device you plugged in, then click | |
| <strong>Add to Member Center</strong>. You may be prompted to log in with the | |
| Apple ID associated with your Apple Developer account.</li> | |
| <li>If prompted, select a Development Team to use for provisioning. This | |
| will be a team you’ve registered at the Apple developer portal.</li> | |
| <li>Log in to the <a class="reference external" href="https://developer.apple.com/">Apple Developer | |
| portal</a> and create a provisioning | |
| profile that includes the App ID you chose when you registered the | |
| sample app with Apple APNs. For more information on how to create a | |
| provisioning profile, see “About provisioning profiles” below.</li> | |
| <li>Download the profile and add it into Xcode Organizer, in the | |
| Provisioning Profiles group under your plugged-in device.</li> | |
| <li>Close the Organizer.</li> | |
| <li>In Xcode, select the Project Navigator, then select the project root | |
| folder.</li> | |
| <li>In the <strong>General</strong> tab, in the <strong>Bundle Identifer</strong> box, enter the | |
| App ID associated with your provisioning profile.</li> | |
| <li>In the <strong>Build Settings</strong> tab, under <strong>Deployment</strong>, for the <strong>iOS | |
| Deployment Target</strong> select the iOS version on your connected device. | |
| The version is displayed in the Xcode Organizer.</li> | |
| <li>In the <strong>Build Settings</strong> tab, under <strong>Code Signing</strong>, under <strong>Code | |
| Signing Identity > Debug</strong>, select the Apple signing certificate | |
| corresponding to your developer identity.</li> | |
| </ol> | |
| <img alt="../_images/iospushsettings.png" src="../_images/iospushsettings.png" /> | |
| <ol class="arabic simple" start="14"> | |
| <li>Click <strong>Run</strong> to launch the sample on your iOS device.</li> | |
| <li>When the “codesign wants to sign using key in your keychain.” dialog | |
| is displayed, click <strong>Allow</strong>.</li> | |
| <li>The project is now built, and the app is installed on your device. | |
| The first time you run the push sample app, your device will ask | |
| permission to allow push notifications. Tap <strong>OK</strong>.</li> | |
| </ol> | |
| <img alt="../_images/iospushauth.png" src="../_images/iospushauth.png" /> | |
| <ol class="arabic simple" start="17"> | |
| <li>In the app, tap the <strong>push to this device</strong> button to send yourself | |
| a push notification. If you have configured your notification to go | |
| to multiple devices, tap the <strong>push to all devices</strong> button to send | |
| the push notification to all devices.</li> | |
| </ol> | |
| <img alt="../_images/iospushfinal.png" src="../_images/iospushfinal.png" /> | |
| </div> | |
| <div class="section" id="phonegap-ios-dev-setup"> | |
| <h3>PhoneGap iOS Dev Setup<a class="headerlink" href="#phonegap-ios-dev-setup" title="Permalink to this headline">¶</a></h3> | |
| <p>To configure and run the PhoneGap iOS push notification sample app, do | |
| the following:</p> | |
| <ol class="arabic simple"> | |
| <li>Open the iOS PhoneGap sample app with Xcode by opening its .xcodeproj | |
| file.</li> | |
| <li>Make the following changes in <strong>/www/js/index.js</strong>:</li> | |
| </ol> | |
| <ul class="simple"> | |
| <li><strong>orgName</strong>: Your Apigee organization.</li> | |
| <li><strong>appName</strong>: The app in your organization where you created the | |
| notifier. (For the sample, make sure it’s “sandbox”.)</li> | |
| <li><strong>notifier</strong>: Name of the notifier you created.</li> | |
| </ul> | |
| <ol class="arabic simple" start="3"> | |
| <li>Plug your iOS device into your development machine.</li> | |
| <li>In Xcode, select <strong>Window > Organizer</strong> to open the Xcode Organizer.</li> | |
| <li>Under <strong>Devices</strong>, select the device you plugged in, then click | |
| <strong>Add to Member Center</strong>. You may be prompted to log in with the | |
| Apple ID associated with your Apple Developer account.</li> | |
| <li>If prompted, select a Development Team to use for provisioning. This | |
| will be a team you’ve registered at the Apple developer portal.</li> | |
| <li>Log in to the <a class="reference external" href="https://developer.apple.com/">Apple Developer | |
| portal</a> and create a provisioning | |
| profile that includes the App ID you chose when you registered the | |
| sample app with Apple APNs. For more information on how to create a | |
| provisioning profile, see “About provisioning profiles” below.</li> | |
| <li>Download the profile and add it into Xcode Organizer, in the | |
| Provisioning Profiles group under your plugged-in device.</li> | |
| <li>Close the Organizer.</li> | |
| <li>In Xcode, select the Project Navigator, then select the project root | |
| folder.</li> | |
| <li>In the <strong>General</strong> tab, in the <strong>Bundle Identifer</strong> box, enter the | |
| App ID associated with your provisioning profile.</li> | |
| <li>In the <strong>Build Settings</strong> tab, under <strong>Deployment</strong>, for the <strong>iOS | |
| Deployment Target</strong> select the iOS version on your connected device. | |
| The version is displayed in the Xcode Organizer.</li> | |
| <li>In the <strong>Build Settings</strong> tab, under <strong>Code Signing</strong>, under <strong>Code | |
| Signing Identity > Debug</strong>, select the Apple signing certificate | |
| corresponding to your developer identity.</li> | |
| </ol> | |
| <img alt="../_images/iospgsettings.png" src="../_images/iospgsettings.png" /> | |
| <ol class="arabic simple" start="14"> | |
| <li>At the top of the IDE, ensure that the name for your plugged in | |
| device is displayed next to the target name, then click the Run | |
| button to launch the sample on your iOS device.</li> | |
| <li>If the “codesign wants to sign using key in your keychain” dialog is | |
| displayed, click <strong>Allow</strong>.</li> | |
| <li>The project is now built, and the app is installed on your device. | |
| The first time you run the push sample app, your device will ask | |
| permission to allow push notifications. Tap OK.</li> | |
| <li>In the app, tap the <strong>Send a push with Phonegap!</strong> button to send | |
| yourself a push notification.</li> | |
| </ol> | |
| <img alt="../_images/iospgapp.png" src="../_images/iospgapp.png" /> | |
| </div> | |
| <div class="section" id="about-ios-provisioning-profiles"> | |
| <h3>About iOS provisioning profiles<a class="headerlink" href="#about-ios-provisioning-profiles" title="Permalink to this headline">¶</a></h3> | |
| <p>For iOS app testing, you need a provisioning profile that’s associated | |
| with an Apple ID. You set up the provisioning profile in the Apple | |
| developer portal, download the profile, and import it into Xcode.</p> | |
| <p>To set up a provisioning profile, you need to create an “iOS App | |
| Development” certificate in the Apple developer portal. For example, in | |
| the Apple APNs setup earlier in this tutorial, you created a certificate | |
| in the Apple developer portal to be used for push notifications. | |
| However, you won’t be able to create a provisioning portal with just | |
| that certificate. You also need to create an “iOS App Development” | |
| certificate (the configuration settings don’t matter), as shown in the | |
| following image.</p> | |
| <img alt="../_images/iospgcert.png" src="../_images/iospgcert.png" /> | |
| <p>After you create an iOS App Development certificate, you can create a | |
| provisioning profile that includes your App ID/certificate for push | |
| notifications.</p> | |
| </div> | |
| <div class="section" id="android-dev-setup"> | |
| <h3>Android Dev Setup<a class="headerlink" href="#android-dev-setup" title="Permalink to this headline">¶</a></h3> | |
| <p>To configure and run the native Android push notification sample app, do | |
| the following:</p> | |
| <ol class="arabic simple"> | |
| <li>Make sure you have the latest Android SDK installed in your IDE, and | |
| that Android APIs have been installed via the Android SDK Manager.</li> | |
| <li>Import the native Android sample app project into your IDE</li> | |
| <li>Modify the following in <strong>/src/com.ganyo.pushtest/Settings.java</strong>:</li> | |
| </ol> | |
| <ul class="simple"> | |
| <li><strong>GCM_SENDER_ID</strong>: Your Google Cloud Messaging (GCM) project | |
| number, as described in the Tutorial: Push notifications sample app.</li> | |
| <li><strong>NOTIFIER</strong>: Name of your notifier. (For the sample, make sure it’s | |
| the name of the notifier you created.)</li> | |
| <li><strong>ORG</strong>: Your Apigee organization.</li> | |
| <li><strong>APP</strong>: The app in your organization where you created the notifier. | |
| (For the sample, make sure it’s “sandbox”.)</li> | |
| <li><strong>USER</strong> and <strong>PASSWORD</strong>: Optional. If you created your notifier in | |
| an app other than “sandbox” (which doesn’t require authentication), | |
| enter the username and password of one of your Usergrid admin users.</li> | |
| </ul> | |
| <ol class="arabic simple" start="4"> | |
| <li>In AndroidManifest.xml, be sure the proper Android permissions are | |
| included, such as READ_PHONE_STATE and VIBRATE.</li> | |
| <li>In your project properties, go to <strong>Java Build Path > Libraries</strong> and | |
| add all the JAR files from the project’s /libs directory.</li> | |
| <li>In the <strong>Order and Export</strong> tab, move the JARs to the top of the list | |
| and select all the check boxes. Make sure the order and selections | |
| match the following image:</li> | |
| </ol> | |
| <img alt="../_images/assettings.png" src="../_images/assettings.png" /> | |
| <ol class="arabic simple" start="7"> | |
| <li>If you’re using an emulator, configure the emulator to use the Google | |
| APIs Level 16 target.</li> | |
| </ol> | |
| <img alt="../_images/asemu.png" src="../_images/asemu.png" /> | |
| <ol class="arabic simple" start="8"> | |
| <li>Run the project as an Android Application. The IDE should compile the | |
| project and install the app on your device.</li> | |
| <li>Press the button on the app to send yourself a push notification.</li> | |
| </ol> | |
| <img alt="../_images/asapp.png" src="../_images/asapp.png" /> | |
| </div> | |
| <div class="section" id="phonegap-android-dev-setup"> | |
| <h3>PhoneGap Android Dev Setup<a class="headerlink" href="#phonegap-android-dev-setup" title="Permalink to this headline">¶</a></h3> | |
| <p>To configure and run the PhoneGap Android push notification sample app, | |
| do the following:</p> | |
| <ol class="arabic simple"> | |
| <li>Make sure you have the latest Android SDK installed in your IDE, and | |
| that Android APIs have been installed via the Android SDK Manager.</li> | |
| <li>Import the PhoneGap Android sample app project into your IDE.</li> | |
| <li>Modify the following in <strong>/assets/www/js/index.js</strong>:</li> | |
| </ol> | |
| <ul class="simple"> | |
| <li><strong>orgName</strong>: Your apigee organization.</li> | |
| <li><strong>appName</strong>: The app in your organization where you created the | |
| notifier. (For the sample, make sure it’s “sandbox”.)</li> | |
| <li><strong>notifier</strong>: Name of your notifier.</li> | |
| <li><strong>senderID</strong>: Your API project number (the project must support | |
| Google Cloud Messaging for Android (GCM)), as described in the | |
| <a class="reference external" href="registration.html">Registering with a notification service</a>.</li> | |
| </ul> | |
| <ol class="arabic simple" start="4"> | |
| <li>In <strong>AndroidManifest.xml</strong>, be sure the proper Android permissions | |
| are included. This includes READ_PHONE_STATE and VIBRATE.</li> | |
| <li>In your project properties, go to <strong>Java Build Path > Libraries</strong> and | |
| add all the JAR files from the project’s /libs directory.</li> | |
| <li>In the <strong>Order and Export</strong> tab, move the JARs to the top of the list | |
| and select all the check boxes. Make sure the order and selections | |
| match the following image:</li> | |
| </ol> | |
| <img alt="../_images/pgasettings.png" src="../_images/pgasettings.png" /> | |
| <ol class="arabic simple" start="7"> | |
| <li>If you’re using an emulator, configure the emulator to use the Google | |
| APIs Level 16 target or above. Also, be sure to see the Android | |
| requirements in <a class="reference external" href="adding-push-supprt.html">Adding push notifications | |
| support</a> for steps on setting up the | |
| emulator to support push notifications.</li> | |
| </ol> | |
| <img alt="../_images/pgaspath.png" src="../_images/pgaspath.png" /> | |
| <ol class="arabic simple" start="8"> | |
| <li>Run the project as an Android Application. The IDE should compile the | |
| project and install the app on your device.</li> | |
| <li>Press the button on the app to send yourself a push notification.</li> | |
| </ol> | |
| <img alt="../_images/pgaapp.png" src="../_images/pgaapp.png" /> | |
| <div class="admonition note"> <p class="first admonition-title"><p>Note</p> | |
| </p> <p class="last"> | |
| For troubleshooting tips, see [Adding push notifications<p>support](adding-push-supprt.html.</p> | |
| </p></div></div> | |
| <div class="section" id="more-about-phonegap"> | |
| <h3>More about PhoneGap<a class="headerlink" href="#more-about-phonegap" title="Permalink to this headline">¶</a></h3> | |
| <p>The <a class="reference external" href="http://phonegap.com/">PhoneGap</a> iOS push notification sample was | |
| created using standard web technologies such as HTML5, JavaScript, and | |
| CSS. You build the app with those technologies, and PhoneGap provides | |
| project templates for iOS, Android, and other platforms. For example, | |
| atop platform-specific PhoneGap code, core app code between the iOS and | |
| Android samples is essentially the same.</p> | |
| <p>When using PhoneGap to develop push notification apps, you use a | |
| PhoneGap plugin designed to support push notifications. That plugin is | |
| included in the Apigee samples. For more about the plugin, see the | |
| <a class="reference external" href="https://github.com/phonegap-build/PushPlugin/blob/master/README.md">plugin’s GitHub | |
| project</a>.</p> | |
| </div> | |
| </div> | |
| <div class="section" id="step-5-review-the-data-entities-created-by-the-sample-app"> | |
| <h2>Step 5: Review the data entities created by the sample app<a class="headerlink" href="#step-5-review-the-data-entities-created-by-the-sample-app" title="Permalink to this headline">¶</a></h2> | |
| <ol class="arabic simple"> | |
| <li>Log in to the admin portal, and select Data in the left navigation | |
| pane.</li> | |
| <li>Select any of the following collections to view the entities that | |
| were created in them by the push notification sample app:</li> | |
| </ol> | |
| <ul class="simple"> | |
| <li><code class="docutils literal"><span class="pre">/devices</span></code> - To see the device that was added.</li> | |
| <li><code class="docutils literal"><span class="pre">/notifications</span></code> - To see the notification that was sent.</li> | |
| <li><code class="docutils literal"><span class="pre">/receipts</span></code> - To see the receipt generated from the successful | |
| push.</li> | |
| </ul> | |
| </div> | |
| <div class="section" id="step-6-send-additional-push-notifications-using-other-usergrid-tools"> | |
| <h2>Step 6: Send additional push notifications using other Usergrid tools<a class="headerlink" href="#step-6-send-additional-push-notifications-using-other-usergrid-tools" title="Permalink to this headline">¶</a></h2> | |
| <p>Send a push notification from the Usergrid Notifications console On the | |
| Send Notification screen. Select your notifier, select All Devices, | |
| enter a message, select Now, and click to send it.</p> | |
| <img alt="../_images/sendnotification.png" src="../_images/sendnotification.png" /> | |
| <div class="section" id="send-a-push-notification-directly-via-the-push-notifications-api"> | |
| <h3>Send a push notification directly via the push notifications API<a class="headerlink" href="#send-a-push-notification-directly-via-the-push-notifications-api" title="Permalink to this headline">¶</a></h3> | |
| <p>Use the following curl command in a terminal window, replacing your-org, | |
| your-app and notifier-name.</p> | |
| <div class="highlight-python"><div class="highlight"><pre>curl -X POST "https://api.usergrid.com/your-org/your-app/devices/*/notifications" -d '{"payloads":{"notifier-name":"I just sent another notification! Yea, me!"}}' | |
| </pre></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <footer> | |
| <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> | |
| <a href="registering.html" class="btn btn-neutral float-right" title="Registering with a notification service" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> | |
| <a href="getting-started.html" class="btn btn-neutral" title="Getting started with push notifications" 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:'2.x', | |
| 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> |