blob: d9364bd62ca3744c2e6fe053c86107f1e0a06d5b [file] [log] [blame]
<!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 &mdash; 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="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">
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 &amp; clauses</a></li>
<li class="toctree-l1"><a class="reference internal" href="../data-queries/operators-and-types.html">Query operators &amp; 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 &amp; Authentication</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/app-security.html">Security &amp; 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 &amp; 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 &amp; Social Graph</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../user-management/user-management.html">User management &amp; 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 &amp; 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 &amp; Events</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../counters-and-events/events-and-counters.html">Counters &amp; events</a></li>
<li class="toctree-l1"><a class="reference internal" href="../counters-and-events/creating-and-incrementing-counters.html">Creating &amp; 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 &amp; Applications</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/managing.html">Organization &amp; 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 &amp; Videos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/contribute-code.html">How to Contribute Code &amp; Docs</a></li>
</ul>
</div>
&nbsp;
</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> &raquo;</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&#8217;ll use a sample app (iOS, Android, or PhoneGap) to
send yourself a push notification with the Usergrid push notification
API. You&#8217;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&#8217;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 &amp; 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&#8217;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&#8217;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&#8217;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&#8217;s &#8220;sandbox&#8221;.)</li>
<li><strong>notifier</strong>: Name of the notifier you created. (For the sample, make
sure it&#8217;s &#8220;appledev&#8221;.).</li>
</ul>
<ol class="arabic simple" start="3">
<li>Plug your iOS device into your development machine.</li>
<li>In Xcode, select <strong>Window &gt; 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&#8217;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 &#8220;About provisioning profiles&#8221; 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 &gt; 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 &#8220;codesign wants to sign using key in your keychain.&#8221; 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&#8217;s &#8220;sandbox&#8221;.)</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 &gt; 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&#8217;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 &#8220;About provisioning profiles&#8221; 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 &gt; 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 &#8220;codesign wants to sign using key in your keychain&#8221; 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&#8217;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 &#8220;iOS App
Development&#8221; 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&#8217;t be able to create a provisioning portal with just
that certificate. You also need to create an &#8220;iOS App Development&#8221;
certificate (the configuration settings don&#8217;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&#8217;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&#8217;s &#8220;sandbox&#8221;.)</li>
<li><strong>USER</strong> and <strong>PASSWORD</strong>: Optional. If you created your notifier in
an app other than &#8220;sandbox&#8221; (which doesn&#8217;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 &gt; Libraries</strong> and
add all the JAR files from the project&#8217;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&#8217;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&#8217;s &#8220;sandbox&#8221;.)</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 &gt; Libraries</strong> and
add all the JAR files from the project&#8217;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&#8217;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&#8217;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 &quot;https://api.usergrid.com/your-org/your-app/devices/*/notifications&quot; -d &#39;{&quot;payloads&quot;:{&quot;notifier-name&quot;:&quot;I just sent another notification! Yea, me!&quot;}}&#39;
</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>
&copy; 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>