| <!DOCTYPE html> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <html> |
| <head> |
| |
| |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| <meta name="viewport" content="width=device-width" /> |
| |
| <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> |
| <title>GoogleCloudMessaging | Android Developers</title> |
| |
| <!-- STYLESHEETS --> |
| <link rel="stylesheet" |
| href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto"> |
| <link href="/assets/css/default.css" rel="stylesheet" type="text/css"> |
| |
| |
| |
| <!-- JAVASCRIPT --> |
| <script src="//www.google.com/jsapi" type="text/javascript"></script> |
| <script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script> |
| <script type="text/javascript"> |
| var toRoot = "/"; |
| var metaTags = []; |
| var devsite = false; |
| </script> |
| <script src="/assets/js/docs.js" type="text/javascript"></script> |
| |
| <script type="text/javascript"> |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-5831155-1']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| </script> |
| </head> |
| <body class="gc-documentation google |
| develop" itemscope itemtype="http://schema.org/Article"> |
| <div id="doc-api-level" class="" style="display:none"></div> |
| <a name="top"></a> |
| |
| <a name="top"></a> |
| |
| <!-- Header --> |
| <div id="header"> |
| <div class="wrap" id="header-wrap"> |
| <div class="col-3 logo"> |
| <a href="/index.html"> |
| <img src="/assets/images/dac_logo.png" width="123" height="25" alt="Android Developers" /> |
| </a> |
| <div class="btn-quicknav" id="btn-quicknav"> |
| <a href="#" class="arrow-inactive">Quicknav</a> |
| <a href="#" class="arrow-active">Quicknav</a> |
| </div> |
| </div> |
| <ul class="nav-x col-9"> |
| <li class="design"> |
| <a href="/design/index.html" |
| zh-tw-lang="設計" |
| zh-cn-lang="设计" |
| ru-lang="Проектирование" |
| ko-lang="디자인" |
| ja-lang="設計" |
| es-lang="Diseñar" |
| >Design</a></li> |
| <li class="develop"><a href="/develop/index.html" |
| zh-tw-lang="開發" |
| zh-cn-lang="开发" |
| ru-lang="Разработка" |
| ko-lang="개발" |
| ja-lang="開発" |
| es-lang="Desarrollar" |
| >Develop</a></li> |
| <li class="distribute last"><a href="/distribute/index.html" |
| zh-tw-lang="發佈" |
| zh-cn-lang="分发" |
| ru-lang="Распространение" |
| ko-lang="배포" |
| ja-lang="配布" |
| es-lang="Distribuir" |
| >Distribute</a></li> |
| </ul> |
| |
| <!-- New Search --> |
| <div class="menu-container"> |
| <div class="moremenu"> |
| <div id="more-btn"></div> |
| </div> |
| <div class="morehover" id="moremenu"> |
| <div class="top"></div> |
| <div class="mid"> |
| <div class="header">Links</div> |
| <ul> |
| <li><a href="https://play.google.com/apps/publish/">Google Play Developer Console</a></li> |
| <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li> |
| <li><a href="/about/index.html">About Android</a></li> |
| </ul> |
| <div class="header">Android Sites</div> |
| <ul> |
| <li><a href="http://www.android.com">Android.com</a></li> |
| <li class="active"><a>Android Developers</a></li> |
| <li><a href="http://source.android.com">Android Open Source Project</a></li> |
| </ul> |
| |
| |
| |
| <div class="header">Language</div> |
| <div id="language" class="locales"> |
| <select name="language" onChange="changeLangPref(this.value, true)"> |
| <option value="en">English</option> |
| <option value="es">Español</option> |
| <option value="ja">日本語</option> |
| <option value="ko">한국어</option> |
| <option value="ru">Русский</option> |
| <option value="zh-cn">中文 (中国)</option> |
| <option value="zh-tw">中文 (台灣)</option> |
| </select> |
| </div> |
| <script type="text/javascript"> |
| <!-- |
| loadLangPref(); |
| //--> |
| </script> |
| |
| |
| |
| |
| <br class="clearfix" /> |
| </div> |
| <div class="bottom"></div> |
| </div> |
| <div class="search" id="search-container"> |
| <div class="search-inner"> |
| <div id="search-btn"></div> |
| <div class="left"></div> |
| <form onsubmit="return submit_search()"> |
| <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q" |
| onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)" |
| onkeydown="return search_changed(event, true, '/')" |
| onkeyup="return search_changed(event, false, '/')" /> |
| </form> |
| <div class="right"></div> |
| <a class="close hide">close</a> |
| <div class="left"></div> |
| <div class="right"></div> |
| </div> |
| </div> |
| |
| <div class="search_filtered_wrapper reference"> |
| <div class="suggest-card reference no-display"> |
| <ul class="search_filtered"> |
| </ul> |
| </div> |
| </div> |
| |
| <div class="search_filtered_wrapper docs"> |
| <div class="suggest-card dummy no-display"> </div> |
| <div class="suggest-card develop no-display"> |
| <ul class="search_filtered"> |
| </ul> |
| <div class="child-card guides no-display"> |
| </div> |
| <div class="child-card training no-display"> |
| </div> |
| <div class="child-card samples no-display"> |
| </div> |
| </div> |
| <div class="suggest-card design no-display"> |
| <ul class="search_filtered"> |
| </ul> |
| </div> |
| <div class="suggest-card distribute no-display"> |
| <ul class="search_filtered"> |
| </ul> |
| </div> |
| </div> |
| |
| </div> |
| <!-- /New Search> |
| |
| |
| <!-- Expanded quicknav --> |
| <div id="quicknav" class="col-9"> |
| <ul> |
| <li class="design"> |
| <ul> |
| <li><a href="/design/index.html">Get Started</a></li> |
| <li><a href="/design/style/index.html">Style</a></li> |
| <li><a href="/design/patterns/index.html">Patterns</a></li> |
| <li><a href="/design/building-blocks/index.html">Building Blocks</a></li> |
| <li><a href="/design/downloads/index.html">Downloads</a></li> |
| <li><a href="/design/videos/index.html">Videos</a></li> |
| </ul> |
| </li> |
| <li class="develop"> |
| <ul> |
| <li><a href="/training/index.html" |
| zh-tw-lang="訓練課程" |
| zh-cn-lang="培训" |
| ru-lang="Курсы" |
| ko-lang="교육" |
| ja-lang="トレーニング" |
| es-lang="Capacitación" |
| >Training</a></li> |
| <li><a href="/guide/index.html" |
| zh-tw-lang="API 指南" |
| zh-cn-lang="API 指南" |
| ru-lang="Руководства по API" |
| ko-lang="API 가이드" |
| ja-lang="API ガイド" |
| es-lang="Guías de la API" |
| >API Guides</a></li> |
| <li><a href="/reference/packages.html" |
| zh-tw-lang="參考資源" |
| zh-cn-lang="参考" |
| ru-lang="Справочник" |
| ko-lang="참조문서" |
| ja-lang="リファレンス" |
| es-lang="Referencia" |
| >Reference</a></li> |
| <li><a href="/tools/index.html" |
| zh-tw-lang="相關工具" |
| zh-cn-lang="工具" |
| ru-lang="Инструменты" |
| ko-lang="도구" |
| ja-lang="ツール" |
| es-lang="Herramientas" |
| >Tools</a> |
| <ul><li><a href="/sdk/index.html">Get the SDK</a></li></ul> |
| </li> |
| <li><a href="/google/index.html">Google Services</a> |
| </li> |
| |
| <li><a href="/samples/index.html">Samples</a> |
| </li> |
| |
| </ul> |
| </li> |
| <li class="distribute last"> |
| <ul> |
| <li><a href="/distribute/index.html">Google Play</a></li> |
| <li><a href="/distribute/googleplay/publish/index.html">Publishing</a></li> |
| <li><a href="/distribute/googleplay/promote/index.html">Promoting</a></li> |
| <li><a href="/distribute/googleplay/quality/index.html">App Quality</a></li> |
| <li><a href="/distribute/googleplay/spotlight/index.html">Spotlight</a></li> |
| <li><a href="/distribute/open.html">Open Distribution</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <!-- /Expanded quicknav --> |
| </div> |
| </div> |
| <!-- /Header --> |
| |
| |
| <div id="searchResults" class="wrap" style="display:none;"> |
| <h2 id="searchTitle">Results</h2> |
| <div id="leftSearchControl" class="search-control">Loading...</div> |
| </div> |
| |
| |
| |
| <!-- Secondary x-nav --> |
| <div id="nav-x"> |
| <div class="wrap"> |
| <ul class="nav-x col-9 develop" style="width:100%"> |
| <li class="training"><a href="/training/index.html" |
| zh-tw-lang="訓練課程" |
| zh-cn-lang="培训" |
| ru-lang="Курсы" |
| ko-lang="교육" |
| ja-lang="トレーニング" |
| es-lang="Capacitación" |
| >Training</a></li> |
| <li class="guide"><a href="/guide/index.html" |
| zh-tw-lang="API 指南" |
| zh-cn-lang="API 指南" |
| ru-lang="Руководства по API" |
| ko-lang="API 가이드" |
| ja-lang="API ガイド" |
| es-lang="Guías de la API" |
| >API Guides</a></li> |
| <li class="reference"><a href="/reference/packages.html" |
| zh-tw-lang="參考資源" |
| zh-cn-lang="参考" |
| ru-lang="Справочник" |
| ko-lang="참조문서" |
| ja-lang="リファレンス" |
| es-lang="Referencia" |
| >Reference</a></li> |
| <li class="tools"><a href="/tools/index.html" |
| zh-tw-lang="相關工具" |
| zh-cn-lang="工具" |
| ru-lang="Инструменты" |
| ko-lang="도구" |
| ja-lang="ツール" |
| es-lang="Herramientas" |
| >Tools</a></li> |
| <li class="google"><a href="/google/index.html" |
| >Google Services</a> |
| </li> |
| |
| <li class="samples"><a href="/samples/index.html" |
| >Samples</a> |
| </li> |
| |
| </ul> |
| </div> |
| |
| </div> |
| <!-- /Sendondary x-nav --> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div class="wrap clearfix" id="body-content"> |
| <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> |
| <div id="devdoc-nav" class="scroll-pane"> |
| <a class="totop" href="#top" data-g-event="left-nav-top">to top</a> |
| |
| |
| |
| <ul id="nav"> |
| |
| <li class="nav-section"> |
| <div class="nav-section-header empty"><a href="/google/index.html"> |
| <span class="en">Overview</span> |
| </a></div> |
| </li> |
| |
| <li class="nav-section"> |
| <div class="nav-section-header empty"><a href="/google/play-services/games.html"> |
| <span class="en">Games</span> |
| </a></div> |
| </li> |
| <li class="nav-section"> |
| <div class="nav-section-header empty"><a href="/google/play-services/location.html"> |
| <span class="en">Location</span> |
| </a></div> |
| </li> |
| <li class="nav-section"> |
| <div class="nav-section-header empty"><a href="/google/play-services/plus.html"> |
| <span class="en">Google+</span> |
| </a></div> |
| </li> |
| <li class="nav-section"> |
| <div class="nav-section-header empty"><a href="/google/play-services/maps.html"> |
| <span class="en">Maps</span> |
| </a></div> |
| </li> |
| <li class="nav-section"> |
| <div class="nav-section-header"><a href="/google/play-services/ads.html"> |
| <span class="en">Ads</span></a> |
| </div> |
| <ul> |
| <li><a href="/google/play-services/id.html"> |
| <span class="en">Advertising ID</span></a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-section"> |
| <div class="nav-section-header empty"><a href="/google/play-services/wallet.html"> |
| <span class="en">Wallet</span> |
| </a></div> |
| </li> |
| <li class="nav-section"> |
| <div class="nav-section-header empty"><a href="/google/play-services/auth.html"> |
| <span class="en">Authorization</span> |
| </a></div> |
| </li> |
| |
| |
| |
| <li class="nav-section"> |
| <div class="nav-section-header"><a href="/google/play-services/index.html"> |
| <span class="en">Google Play Services</span></a> |
| </div> |
| <ul> |
| <li><a href="/google/play-services/setup.html"> |
| <span class="en">Setup</span></a> |
| </li> |
| <li id="gms-tree-list" class="nav-section"> |
| <div class="nav-section-header"> |
| <a href="/reference/gms-packages.html"> |
| <span class="en">Reference</span> |
| </a> |
| <div> |
| </li> |
| </ul> |
| </li> |
| |
| |
| <li class="nav-section"> |
| <div class="nav-section-header"><a href="/google/play/billing/index.html"> |
| <span class="en">Google Play In-app Billing</span></a> |
| </div> |
| <ul> |
| <li><a href="/google/play/billing/billing_overview.html"> |
| <span class="en">Overview</span></a> |
| </li> |
| <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html"> |
| <span class="en">Version 3 API</span></a></div> |
| <ul> |
| <li><a href="/google/play/billing/billing_integrate.html"> |
| <span class="en">Implementing the API</span></a></li> |
| <li><a href="/google/play/billing/billing_reference.html"> |
| <span class="en">Reference</span></a></li> |
| </ul> |
| </li> |
| <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html"> |
| <span class="en">Version 2 API</span></a></div> |
| <ul> |
| <li><a href="/google/play/billing/v2/billing_integrate.html"> |
| <span class="en">Implementing the API</span></a></li> |
| <li><a href="/google/play/billing/v2/billing_subscriptions.html"> |
| <span class="en">Subscriptions</span></a></li> |
| <li><a href="/google/play/billing/v2/billing_reference.html"> |
| <span class="en">Reference</span></a></li> |
| </ul> |
| </li> |
| <li><a href="/google/play/billing/billing_subscriptions.html"> |
| <span class="en">Subscriptions</span></a> |
| </li> |
| <li><a href="/google/play/billing/billing_best_practices.html"> |
| <span class="en">Security and Design</span></a> |
| </li> |
| <li><a href="/google/play/billing/billing_testing.html"> |
| <span class="en">Testing In-app Billing</span></a> |
| </li> |
| <li><a href="/google/play/billing/billing_admin.html"> |
| <span class="en">Administering In-app Billing</span></a> |
| </li> |
| <li><a href="/google/play/billing/gp-purchase-status-api.html"> |
| <span class="en">Purchase Status API</span></a> |
| </li> |
| <li><a href="/google/play/billing/versions.html"> |
| <span class="en">Version Notes</span></a> |
| </li> |
| </ul> |
| </li> |
| |
| |
| |
| <li class="nav-section"> |
| <div class="nav-section-header"><a href="/google/gcm/index.html"> |
| <span class="en">Google Cloud Messaging</span></a> |
| </div> |
| <ul> |
| <li><a href="/google/gcm/gcm.html"> |
| <span class="en">Overview</span></a> |
| </li> |
| <li><a href="/google/gcm/gs.html"> |
| <span class="en">Getting Started</span></a> |
| </li> |
| <li><a href="/google/gcm/client.html"> |
| <span class="en">Implementing GCM Client</span></a> |
| </li> |
| <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html"> |
| <span class="en">Implementing GCM Server</span></a></div> |
| <ul> |
| <li><a href="/google/gcm/ccs.html"> |
| <span class="en">CCS (XMPP)</span></a></li> |
| <li><a href="/google/gcm/http.html"> |
| <span class="en">HTTP</span></a></li> |
| </ul> |
| </li> |
| <li><a href="/google/gcm/notifications.html"> |
| <span class="en">User Notifications</span></a> |
| </li> |
| <li><a href="/google/gcm/adv.html"> |
| <span class="en">Advanced Topics</span></a> |
| </li> |
| <li><a href="/google/gcm/c2dm.html"> |
| <span class="en">Migration</span></a> |
| </li> |
| <li id="gcm-tree-list" class="nav-section"> |
| <div class="nav-section-header"> |
| <a href="/reference/gcm-packages.html"> |
| <span class="en">Reference</span> |
| </a> |
| <div> |
| </li> |
| </ul> |
| </li> |
| |
| <li class="nav-section"> |
| <div class="nav-section-header"><a href="/google/play/dist.html"> |
| <span class="en">Google Play Distribution</span></a> |
| </div> |
| <ul> |
| <li><a href="/google/play/filters.html"> |
| <span class="en">Filters on Google Play</span></a> |
| </li> |
| |
| <li><a href="/google/play/publishing/multiple-apks.html"> |
| <span class="en">Multiple APK Support</span></a> |
| </li> |
| <li><a href="/google/play/expansion-files.html"> |
| <span class="en">APK Expansion Files</span></a> |
| </li> |
| <li class="nav-section"> |
| <div class="nav-section-header"><a href="/google/play/licensing/index.html"> |
| <span class="en">Application Licensing</span></a> |
| </div> |
| <ul> |
| <li><a href="/google/play/licensing/overview.html"> |
| <span class="en">Licensing Overview</span></a> |
| </li> |
| <li><a href="/google/play/licensing/setting-up.html"> |
| <span class="en">Setting Up for Licensing</span></a> |
| </li> |
| <li><a href="/google/play/licensing/adding-licensing.html"> |
| <span class="en">Adding Licensing to Your App</span></a> |
| </li> |
| <li><a href="/google/play/licensing/licensing-reference.html"> |
| <span class="en">Licensing Reference</span></a> |
| </li> |
| </ul> |
| </li> |
| |
| <li class="nav-section"> |
| <div class="nav-section-header"><a href="/google/backup/index.html"> |
| Android Backup Service</a> |
| </div> |
| <ul> |
| <li><a href="/google/backup/signup.html"> |
| Register</a> |
| </li> |
| </ul> |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| <script type="text/javascript"> |
| <!-- |
| buildToggleLists(); |
| changeNavLang(getLangPref()); |
| //--> |
| </script> |
| |
| |
| |
| |
| </div> |
| <script type="text/javascript"> |
| showGoogleRefTree(); |
| |
| </script> |
| </div> <!-- end side-nav --> |
| <script> |
| $(document).ready(function() { |
| scrollIntoView("devdoc-nav"); |
| }); |
| </script> |
| |
| |
| |
| |
| |
| |
| <div class="col-12" id="doc-col"> |
| |
| <div id="api-info-block"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div class="sum-details-links"> |
| |
| Summary: |
| |
| |
| |
| |
| |
| <a href="#constants">Constants</a> |
| |
| |
| |
| |
| |
| |
| | <a href="#pubctors">Ctors</a> |
| |
| |
| |
| |
| | <a href="#pubmethods">Methods</a> |
| |
| |
| |
| |
| | <a href="#inhmethods">Inherited Methods</a> |
| |
| | <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a> |
| |
| </div><!-- end sum-details-links --> |
| <div class="api-level"> |
| |
| |
| |
| |
| </div> |
| </div><!-- end api-info-block --> |
| |
| |
| <!-- ======== START OF CLASS DATA ======== --> |
| |
| <div id="jd-header"> |
| public |
| |
| |
| |
| class |
| <h1 itemprop="name">GoogleCloudMessaging</h1> |
| |
| |
| |
| |
| extends Object<br/> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </div><!-- end header --> |
| |
| <div id="naMessage"></div> |
| |
| <div id="jd-content" class="api apilevel-"> |
| <table class="jd-inheritance-table"> |
| |
| |
| <tr> |
| |
| <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td> |
| </tr> |
| |
| |
| <tr> |
| |
| <td class="jd-inheritance-space"> ↳</td> |
| |
| <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.gcm.GoogleCloudMessaging</td> |
| </tr> |
| |
| |
| </table> |
| |
| |
| |
| |
| |
| |
| |
| <div class="jd-descr"> |
| |
| |
| <h2>Class Overview</h2> |
| <p itemprop="articleBody"><p>The class you use to write a GCM-enabled client application that runs on an Android device. |
| Client applications can receive GCM messages and optionally send messages of their own back to |
| the server. |
| |
| <p>This class requires Google Play services version 3.1 or higher. For a |
| detailed discussion of how to write a GCM client app, see |
| <a href="http://developer.android.com/google/gcm/client.html"> |
| Implementing GCM Client</a>. |
| |
| <p>To send or receive messages, your application first needs to get a registration ID. The |
| registration ID identifies the device and application, and also determines which 3rd-party |
| application servers are allowed to send messages to this application instance. |
| |
| <p>To get a registration ID, you must supply one or more sender IDs. A sender ID is a project |
| number you acquire from the API console, as described in |
| <a href="http://developer.android.com/google/gcm/gs.html">Getting Started</a>. The sender ID is |
| used in the registration process to identify a 3rd-party application server that is permitted to |
| send messages to the device. The following snippet shows you how to call the |
| <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#register(java.lang.String...)">register()</a></code> method. For a more comprehensive example, see |
| <a href="http://developer.android.com/google/gcm/client.html">Implementing GCM Client</a>. |
| |
| <pre> |
| String SENDER_ID = "My-Sender-ID"; |
| GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); |
| String registrationId = gcm.register(SENDER_ID); |
| // Upload the registration ID to your own server |
| // The request to your server should be authenticated if your app is using accounts. |
| </pre> |
| |
| <p>In order to receive GCM messages, you need to declare a permission and a |
| <code>BroadcastReceiver</code> in your manifest. This is a backward-compatible subset of what was |
| required in previous versions of GCM. |
| |
| <p>To allow the application to use GCM, add this permission to the manifest: |
| |
| <pre><uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /></pre> |
| |
| <p>GCM delivers messages as a broadcast. The receivers must be registered in the manifest in |
| order to wake up the application. |
| |
| <p>The <code>com.google.android.c2dm.permission.SEND permission</code> is held by Google Play |
| services. This prevents other code from invoking the broadcast receiver. Here is an excerpt |
| from a sample manifest: |
| |
| <pre> |
| <receiver android:name=".MyReceiver" android:exported="true" |
| android:permission="com.google.android.c2dm.permission.SEND" > |
| <intent-filter> |
| <action android:name="com.google.android.c2dm.intent.RECEIVE" /> |
| <category android:name="YOUR_PACKAGE_NAME" /> |
| </intent-filter> |
| </receiver></pre> |
| |
| <p>When a GCM connection server delivers the message to your client app, the |
| <code>BroadcastReceiver</code> receives the message as an intent. You can either process the |
| intent in the <code>BroadcastReceiver</code>, or you can pass off the work of processing the |
| intent to a service (typically, an <code>IntentService</code>). If you use a service, your |
| broadcast receiver should be an instance of <code>WakefulBroadcastReceiver</code>, to hold a |
| wake lock while the service is doing its work. |
| |
| <p>When processing the intent GCM passes into your app's broadcase receiver, you can determine |
| the message type by calling <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(intent)</a></code>. For example: |
| |
| <pre> |
| GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); |
| String messageType = gcm.getMessageType(intent); |
| ... |
| // Filter messages based on message type. It is likely that GCM will be extended in the future |
| // with new message types, so just ignore message types you're not interested in, or that you |
| // don't recognize. |
| if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) { |
| // It's an error. |
| } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) { |
| // Deleted messages on the server. |
| } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) { |
| // It's a regular GCM message, do some work. |
| } |
| </pre> |
| |
| <p>If you are using the XMPP-based |
| <a href="http://developer.android.com/google/gcm/ccs.html">Cloud Connection Server</a>, your |
| client app can send upstream messages back to the server. For example: |
| |
| <pre> |
| gcm.send(SENDER_ID + "@gcm.googleapis.com", id, data); |
| </pre> |
| |
| For a more details, see |
| <a href="http://developer.android.com/google/gcm/client.html">Implementing GCM Client</a>. |
| </p> |
| |
| |
| |
| |
| |
| </div><!-- jd-descr --> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div class="jd-descr"> |
| |
| |
| <h2>Summary</h2> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- =========== ENUM CONSTANT SUMMARY =========== --> |
| <table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol">String</td> |
| <td class="jd-linkcol"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#ERROR_MAIN_THREAD">ERROR_MAIN_THREAD</a></td> |
| <td class="jd-descrcol" width="100%">The GCM <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#register(java.lang.String...)">register()</a></code> and <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#unregister()">unregister()</a></code> methods are |
| blocking.</td> |
| </tr> |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol">String</td> |
| <td class="jd-linkcol"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#ERROR_SERVICE_NOT_AVAILABLE">ERROR_SERVICE_NOT_AVAILABLE</a></td> |
| <td class="jd-descrcol" width="100%">The device can't read the response, or there was a 500/503 from the |
| server that can be retried later.</td> |
| </tr> |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol">String</td> |
| <td class="jd-linkcol"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#MESSAGE_TYPE_DELETED">MESSAGE_TYPE_DELETED</a></td> |
| <td class="jd-descrcol" width="100%">Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate that the server deleted |
| some pending messages because they were collapsible.</td> |
| </tr> |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol">String</td> |
| <td class="jd-linkcol"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#MESSAGE_TYPE_MESSAGE">MESSAGE_TYPE_MESSAGE</a></td> |
| <td class="jd-descrcol" width="100%">Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate a regular message.</td> |
| </tr> |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol">String</td> |
| <td class="jd-linkcol"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#MESSAGE_TYPE_SEND_ERROR">MESSAGE_TYPE_SEND_ERROR</a></td> |
| <td class="jd-descrcol" width="100%">Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate a send error.</td> |
| </tr> |
| |
| |
| |
| </table> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- ======== CONSTRUCTOR SUMMARY ======== --> |
| <table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr> |
| |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| </nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#GoogleCloudMessaging()">GoogleCloudMessaging</a></span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| </table> |
| |
| |
| |
| |
| |
| |
| <!-- ========== METHOD SUMMARY =========== --> |
| <table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr> |
| |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#close()">close</a></span>()</nobr> |
| |
| <div class="jd-descrdiv">Must be called when your application is done using GCM, to release |
| internal resources.</div> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| synchronized |
| |
| static |
| |
| <a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">GoogleCloudMessaging</a></nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getInstance(android.content.Context)">getInstance</a></span>(Context context)</nobr> |
| |
| <div class="jd-descrdiv">Return the singleton instance of GCM.</div> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| String</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType</a></span>(Intent intent)</nobr> |
| |
| <div class="jd-descrdiv">Return the message type from an intent passed into a client app's broadcast receiver.</div> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| String</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#register(java.lang.String...)">register</a></span>(String... senderIds)</nobr> |
| |
| <div class="jd-descrdiv">Register the application for GCM and return the registration ID.</div> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#send(java.lang.String, java.lang.String, long, android.os.Bundle)">send</a></span>(String to, String msgId, long timeToLive, Bundle data)</nobr> |
| |
| <div class="jd-descrdiv">Send an upstream ("device to cloud") message.</div> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#send(java.lang.String, java.lang.String, android.os.Bundle)">send</a></span>(String to, String msgId, Bundle data)</nobr> |
| |
| <div class="jd-descrdiv">Send an upstream ("device to cloud") message.</div> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#unregister()">unregister</a></span>()</nobr> |
| |
| <div class="jd-descrdiv">Unregister the application.</div> |
| |
| </td></tr> |
| |
| |
| |
| </table> |
| |
| |
| |
| |
| |
| |
| |
| <!-- ========== METHOD SUMMARY =========== --> |
| <table id="inhmethods" class="jd-sumtable"><tr><th> |
| <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a> |
| <div style="clear:left;">Inherited Methods</div></th></tr> |
| |
| |
| <tr class="api apilevel-" > |
| <td colspan="12"> |
| <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed" |
| ><img id="inherited-methods-java.lang.Object-trigger" |
| src="/assets/images/triangle-closed.png" |
| class="jd-expando-trigger-img" /></a> |
| From class |
| |
| java.lang.Object |
| |
| <div id="inherited-methods-java.lang.Object"> |
| <div id="inherited-methods-java.lang.Object-list" |
| class="jd-inheritedlinks"> |
| </div> |
| <div id="inherited-methods-java.lang.Object-summary" style="display: none;"> |
| <table class="jd-sumtable-expando"> |
| |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| Object</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">clone</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| boolean</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">equals</span>(Object arg0)</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">finalize</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| final |
| |
| |
| Class<?></nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">getClass</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| int</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">hashCode</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| final |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">notify</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| final |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">notifyAll</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| |
| |
| |
| String</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">toString</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| final |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">wait</span>()</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| final |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">wait</span>(long arg0, int arg1)</nobr> |
| |
| </td></tr> |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"><nobr> |
| |
| |
| final |
| |
| |
| void</nobr> |
| </td> |
| <td class="jd-linkcol" width="100%"><nobr> |
| <span class="sympad">wait</span>(long arg0)</nobr> |
| |
| </td></tr> |
| |
| |
| </table> |
| </div> |
| </div> |
| </td></tr> |
| |
| |
| </table> |
| |
| |
| </div><!-- jd-descr (summary) --> |
| |
| <!-- Details --> |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- XML Attributes --> |
| |
| |
| <!-- Enum Values --> |
| |
| |
| <!-- Constants --> |
| |
| |
| <!-- ========= ENUM CONSTANTS DETAIL ======== --> |
| <h2>Constants</h2> |
| |
| |
| |
| |
| <A NAME="ERROR_MAIN_THREAD"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| static |
| final |
| String |
| </span> |
| ERROR_MAIN_THREAD |
| </h4> |
| <div class="api-level"> |
| |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>The GCM <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#register(java.lang.String...)">register()</a></code> and <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#unregister()">unregister()</a></code> methods are |
| blocking. You should not run them in the main thread or in broadcast receivers. |
| </p></div> |
| |
| |
| <div class="jd-tagdata"> |
| <span class="jd-tagtitle">Constant Value: </span> |
| <span> |
| |
| "MAIN_THREAD" |
| |
| </span> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| <A NAME="ERROR_SERVICE_NOT_AVAILABLE"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| static |
| final |
| String |
| </span> |
| ERROR_SERVICE_NOT_AVAILABLE |
| </h4> |
| <div class="api-level"> |
| |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>The device can't read the response, or there was a 500/503 from the |
| server that can be retried later. The application should use exponential |
| back off and retry. |
| </p></div> |
| |
| |
| <div class="jd-tagdata"> |
| <span class="jd-tagtitle">Constant Value: </span> |
| <span> |
| |
| "SERVICE_NOT_AVAILABLE" |
| |
| </span> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| <A NAME="MESSAGE_TYPE_DELETED"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| static |
| final |
| String |
| </span> |
| MESSAGE_TYPE_DELETED |
| </h4> |
| <div class="api-level"> |
| |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate that the server deleted |
| some pending messages because they were collapsible. |
| </p></div> |
| |
| |
| <div class="jd-tagdata"> |
| <span class="jd-tagtitle">Constant Value: </span> |
| <span> |
| |
| "deleted_messages" |
| |
| </span> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| <A NAME="MESSAGE_TYPE_MESSAGE"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| static |
| final |
| String |
| </span> |
| MESSAGE_TYPE_MESSAGE |
| </h4> |
| <div class="api-level"> |
| |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate a regular message. |
| </p></div> |
| |
| |
| <div class="jd-tagdata"> |
| <span class="jd-tagtitle">Constant Value: </span> |
| <span> |
| |
| "gcm" |
| |
| </span> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| <A NAME="MESSAGE_TYPE_SEND_ERROR"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| static |
| final |
| String |
| </span> |
| MESSAGE_TYPE_SEND_ERROR |
| </h4> |
| <div class="api-level"> |
| |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate a send error. |
| The intent includes the message ID of the message and an error code. |
| </p></div> |
| |
| |
| <div class="jd-tagdata"> |
| <span class="jd-tagtitle">Constant Value: </span> |
| <span> |
| |
| "send_error" |
| |
| </span> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| |
| <!-- Fields --> |
| |
| |
| <!-- Public ctors --> |
| |
| |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <h2>Public Constructors</h2> |
| |
| |
| |
| <A NAME="GoogleCloudMessaging()"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| |
| |
| |
| </span> |
| <span class="sympad">GoogleCloudMessaging</span> |
| <span class="normal">()</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p></p></div> |
| |
| </div> |
| </div> |
| |
| |
| |
| |
| |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <!-- Protected ctors --> |
| |
| |
| |
| <!-- ========= METHOD DETAIL ======== --> |
| <!-- Public methdos --> |
| |
| <h2>Public Methods</h2> |
| |
| |
| |
| <A NAME="close()"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| |
| |
| void |
| </span> |
| <span class="sympad">close</span> |
| <span class="normal">()</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Must be called when your application is done using GCM, to release |
| internal resources. |
| </p></div> |
| |
| </div> |
| </div> |
| |
| |
| <A NAME="getInstance(android.content.Context)"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| static |
| |
| |
| synchronized |
| <a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">GoogleCloudMessaging</a> |
| </span> |
| <span class="sympad">getInstance</span> |
| <span class="normal">(Context context)</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Return the singleton instance of GCM.</p></div> |
| |
| </div> |
| </div> |
| |
| |
| <A NAME="getMessageType(android.content.Intent)"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| |
| |
| String |
| </span> |
| <span class="sympad">getMessageType</span> |
| <span class="normal">(Intent intent)</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Return the message type from an intent passed into a client app's broadcast receiver. There |
| are two general categories of messages passed from the server: regular GCM messages, |
| and special GCM status messages. |
| |
| The possible types are: |
| <ul> |
| <li><code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#MESSAGE_TYPE_MESSAGE">MESSAGE_TYPE_MESSAGE</a></code>—regular message from your server. |
| </li><li><code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#MESSAGE_TYPE_DELETED">MESSAGE_TYPE_DELETED</a></code>—special status message indicating that some |
| messages have been collapsed by GCM. |
| </li><li><code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#MESSAGE_TYPE_SEND_ERROR">MESSAGE_TYPE_SEND_ERROR</a></code>—special status message indicating that |
| there were errors sending one of the messages. |
| </li></ul> |
| |
| You can use this method to filter based on message type. Since it is likely that GCM will |
| be extended in the future with new message types, just ignore any message types you're not |
| interested in, or that you don't recognize.</p></div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Returns</h5> |
| <ul class="nolist"><li>The message type or null if the intent is not a GCM intent |
| </li></ul> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| <A NAME="register(java.lang.String...)"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| |
| |
| String |
| </span> |
| <span class="sympad">register</span> |
| <span class="normal">(String... senderIds)</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Register the application for GCM and return the registration ID. You must call this once, |
| when your application is installed, and send the returned registration ID to the server. |
| <p> |
| Repeated calls to this method will return the original registration ID. |
| <p> |
| If you want to modify the list of senders, you must call <code>unregister()</code> first. |
| <p> |
| Most applications use a single sender ID. You may use multiple senders if different |
| servers may send messages to the app or for testing.</p></div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Parameters</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>senderIds</td> |
| <td>list of project numbers or Google accounts identifying who is allowed to |
| send messages to this application.</td> |
| </tr> |
| </table> |
| </div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Returns</h5> |
| <ul class="nolist"><li>registration id |
| </li></ul> |
| </div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Throws</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>IOException</td> |
| <td></td> |
| </tr> |
| </table> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| <A NAME="send(java.lang.String, java.lang.String, long, android.os.Bundle)"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| |
| |
| void |
| </span> |
| <span class="sympad">send</span> |
| <span class="normal">(String to, String msgId, long timeToLive, Bundle data)</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Send an upstream ("device to cloud") message. You can only use the upstream feature |
| if your GCM implementation uses the XMPP-based |
| <a href="http://developer.android.com/google/gcm/ccs.html">Cloud Connection Server</a>. |
| |
| The current limits for max storage time and number of outstanding messages per |
| application are documented in the |
| <a href="http://developer.android.com/google/gcm/index.html">GCM Developers Guide</a>.</p></div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Parameters</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>to</td> |
| <td>string identifying the receiver of the message. For GCM projects IDs |
| the value is <code>SENDER_ID@gcm.googleapis.com</code>. The <code>SENDER_ID</code> |
| should be one of the sender IDs used in <code>register()</code>.</td> |
| </tr> |
| <tr> |
| <th>msgId</td> |
| <td>ID of the message. This is generated by the application. It must be |
| unique for each message. This allows error callbacks and debugging.</td> |
| </tr> |
| <tr> |
| <th>timeToLive</td> |
| <td>If 0, we'll attempt to send immediately and return an |
| error if we're not connected. Otherwise, the message will be queued. |
| As for server-side messages, we don't return an error if the message has been |
| dropped because of TTL—this can happen on the server side, and it would require |
| extra communication.</td> |
| </tr> |
| <tr> |
| <th>data</td> |
| <td>key/value pairs to be sent. Values must be String, any other type will |
| be ignored.</td> |
| </tr> |
| </table> |
| </div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Throws</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>IllegalArgumentException</td> |
| <td></td> |
| </tr> |
| <tr> |
| <th>IOException</td> |
| <td></td> |
| </tr> |
| </table> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| <A NAME="send(java.lang.String, java.lang.String, android.os.Bundle)"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| |
| |
| void |
| </span> |
| <span class="sympad">send</span> |
| <span class="normal">(String to, String msgId, Bundle data)</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Send an upstream ("device to cloud") message. You can only use the upstream feature |
| if your GCM implementation uses the XMPP-based |
| <a href="http://developer.android.com/google/gcm/ccs.html">Cloud Connection Server</a>. |
| |
| The message will be queued if we don't have an active connection for the max interval.</p></div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Parameters</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>to</td> |
| <td>string identifying the receiver of the message. For GCM project IDs |
| the value is <code>SENDER_ID@gcm.googleapis.com</code>. The <code>SENDER_ID</code> |
| should be one of the sender IDs used in <code>register()</code>.</td> |
| </tr> |
| <tr> |
| <th>msgId</td> |
| <td>ID of the message. This is generated by the application. It must be |
| unique for each message. This allows error callbacks and debugging.</td> |
| </tr> |
| <tr> |
| <th>data</td> |
| <td>key/value pairs to be sent. Values must be String—any other type will |
| be ignored.</td> |
| </tr> |
| </table> |
| </div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Throws</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th></td> |
| <td>IllegalArgumentException</td> |
| </tr> |
| <tr> |
| <th>IOException</td> |
| <td></td> |
| </tr> |
| </table> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| <A NAME="unregister()"></A> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| |
| |
| void |
| </span> |
| <span class="sympad">unregister</span> |
| <span class="normal">()</span> |
| </h4> |
| <div class="api-level"> |
| <div></div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Unregister the application. Calling <code>unregister()</code> stops any |
| messages from the server. This is a blocking call—you shouldn't call |
| it from the UI thread. |
| |
| You should rarely (if ever) need to call this method. Not only is it |
| expensive in terms of resources, but it invalidates your registration ID, |
| which you should never change unnecessarily. A better approach is to simply |
| have your server stop sending messages. Only use unregister if you want |
| to change your sender ID.</p></div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Throws</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>IOException</td> |
| <td>if we can't connect to server to unregister. |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| |
| |
| <!-- ========= METHOD DETAIL ======== --> |
| |
| |
| |
| <!-- ========= END OF CLASS DATA ========= --> |
| <A NAME="navbar_top"></A> |
| |
| <div id="footer" class="wrap" > |
| |
| |
| <div id="copyright"> |
| |
| Except as noted, this content is licensed under <a |
| href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>. |
| For details and restrictions, see the <a href="/license.html"> |
| Content License</a>. |
| </div> |
| <div id="build_info"> |
| |
| <script src="/timestamp.js" type="text/javascript"></script> |
| <script>document.write(BUILD_TIMESTAMP)</script> |
| |
| </div> |
| |
| |
| <div id="footerlinks"> |
| |
| <p> |
| <a href="/about/index.html">About Android</a> | |
| <a href="/legal.html">Legal</a> | |
| <a href="/support.html">Support</a> |
| </p> |
| </div> |
| |
| </div> <!-- end footer --> |
| </div> <!-- jd-content --> |
| |
| </div><!-- end doc-content --> |
| |
| </div> <!-- end body-content --> |
| |
| |
| |
| |
| |
| |
| </body> |
| </html> |