1<!DOCTYPE html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105<html>
106<head>
107<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
108
109<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
110<title>Sender | Android Developers</title>
111
112<!-- STYLESHEETS -->
113<link rel="stylesheet"
114href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
115<link href="/assets/css/default.css" rel="stylesheet" type="text/css">
116
117
118
119<!-- JAVASCRIPT -->
120<script src="//www.google.com/jsapi" type="text/javascript"></script>
121<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
122<script type="text/javascript">
123  var toRoot = "/";
124  
125  var devsite = false;
126  
127</script>
128<script src="/assets/js/docs.js" type="text/javascript"></script>
129
130<script src="/gms_navtree_data.js" type="text/javascript"></script>
131<script src="/gcm_navtree_data.js" type="text/javascript"></script>
132
133
134<script type="text/javascript">
135  var _gaq = _gaq || [];
136  _gaq.push(['_setAccount', 'UA-5831155-1']);
137  _gaq.push(['_trackPageview']);
138
139  (function() {
140    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
141    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
142    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
143  })();
144</script>
145</head>
146<body class="gc-documentation google
147  develop" itemscope itemtype="http://schema.org/Article">
148  <div id="doc-api-level" class="" style="display:none"></div>
149  <a name="top"></a>
150
151  
152    <!-- Header -->
153    <div id="header">
154        <div class="wrap" id="header-wrap">
155          <div class="col-3 logo">
156          <a href="/index.html">
157            <img src="/assets/images/dac_logo.png" width="123" height="25" alt="Android Developers" />
158          </a>
159          <div class="btn-quicknav" id="btn-quicknav">
160          	<a href="#" class="arrow-inactive">Quicknav</a>
161			      <a href="#" class="arrow-active">Quicknav</a>
162          </div>
163          </div>
164            <ul class="nav-x col-9">
165                <li class="design">
166                  <a href="/design/index.html" 
167                  zh-TW-lang="設è¨"
168                  zh-CN-lang="设计"
169                  ru-lang="ÐÑоекÑиÑование"
170                  ko-lang="ëìì¸"
171                  ja-lang="設è¨"
172                  es-lang="Diseñar"               
173                  >Design</a></li>
174                <li class="develop"><a href="/develop/index.html" class="selected"
175                  zh-TW-lang="éç¼"
176                  zh-CN-lang="å¼å"
177                  ru-lang="РазÑабоÑка"
178                  ko-lang="ê°ë°"
179                  ja-lang="éçº"
180                  es-lang="Desarrollar"               
181                  >Develop</a></li>
182                <li class="distribute last"><a href="/distribute/index.html" 
183                  zh-TW-lang="ç¼ä½"
184                  zh-CN-lang="åå"
185                  ru-lang="РаÑпÑоÑÑÑанение"
186                  ko-lang="ë°°í¬"
187                  ja-lang="éå¸"
188                  es-lang="Distribuir"               
189                  >Distribute</a></li>
190            </ul>
191            
192            <!-- New Search -->
193            <div class="menu-container">
194            <div class="moremenu">
195    <div id="more-btn"></div>
196  </div>
197  <div class="morehover" id="moremenu">
198    <div class="top"></div>
199    <div class="mid">
200      <div class="header">Links</div>
201      <ul>
202        <li><a href="https://play.google.com/apps/publish/">Google Play Developer Console</a></li>
203        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
204        <li><a href="/about/index.html">About Android</a></li>
205      </ul>
206      <div class="header">Android Sites</div>
207      <ul>
208        <li><a href="http://www.android.com">Android.com</a></li>
209        <li class="active"><a>Android Developers</a></li>
210        <li><a href="http://source.android.com">Android Open Source Project</a></li>
211      </ul>
212      
213
214      
215      
216        <div class="header">Language</div>
217          <div id="language" class="locales">
218            <select name="language" onChange="changeLangPref(this.value, true)">
219                <option value="en">English</option>
220                <option value="es">Español</option>
221                <option value="ja">æ¥æ¬èª</option>
222                <option value="ko">íêµ­ì´</option>
223                <option value="ru">РÑÑÑкий</option>
224                <option value="zh-CN">中æ (中å½)</option>
225                <option value="zh-TW">中æ (å°ç£)</option>
226            </select>
227          </div>
228        <script type="text/javascript">
229          <!--
230          loadLangPref();
231            //-->
232        </script>
233      
234      
235
236
237      <br class="clearfix" />
238    </div>
239    <div class="bottom"></div>
240  </div>
241  <div class="search" id="search-container">
242    <div class="search-inner">
243      <div id="search-btn"></div>
244      <div class="left"></div>
245      <form onsubmit="return submit_search()">
246        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
247onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
248onkeydown="return search_changed(event, true, '/')" 
249onkeyup="return search_changed(event, false, '/')" />
250      </form>
251      <div class="right"></div>
252        <a class="close hide">close</a>
253        <div class="left"></div>
254        <div class="right"></div>
255    </div>
256  </div>
257  <div id="search_filtered_wrapper">
258    <div id="search_filtered_div" class="no-display">
259        <ul id="search_filtered">
260        </ul>
261    </div>
262  </div>
263  
264  </div>
265  <!-- /New Search>
266          
267          
268          <!-- Expanded quicknav -->
269           <div id="quicknav" class="col-9">
270                <ul>
271                    <li class="design">
272                      <ul>
273                        <li><a href="/design/index.html">Get Started</a></li>
274                        <li><a href="/design/style/index.html">Style</a></li>
275                        <li><a href="/design/patterns/index.html">Patterns</a></li>
276                        <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
277                        <li><a href="/design/downloads/index.html">Downloads</a></li>
278                        <li><a href="/design/videos/index.html">Videos</a></li>
279                      </ul>
280                    </li>
281                    <li class="develop">
282                      <ul>
283                        <li><a href="/training/index.html"
284                          zh-TW-lang="è¨ç·´èª²ç¨"
285                          zh-CN-lang="å¹è®­"
286                          ru-lang="ÐÑÑÑÑ"
287                          ko-lang="êµì¡"
288                          ja-lang="ãã¬ã¼ãã³ã°"
289                          es-lang="Capacitación"               
290                          >Training</a></li>
291                        <li><a href="/guide/components/index.html"
292                          zh-TW-lang="API æå"
293                          zh-CN-lang="API æå"
294                          ru-lang="РÑководÑÑва по API"
295                          ko-lang="API ê°ì´ë"
296                          ja-lang="API ã¬ã¤ã"
297                          es-lang="Guías de la API"               
298                          >API Guides</a></li>
299                        <li><a href="/reference/packages.html"
300                          zh-TW-lang="åèè³æº"
301                          zh-CN-lang="åè"
302                          ru-lang="СпÑавоÑник"
303                          ko-lang="참조문ì"
304                          ja-lang="ãªãã¡ã¬ã³ã¹"
305                          es-lang="Referencia"               
306                          >Reference</a></li>
307                        <li><a href="/tools/index.html"
308                          zh-TW-lang="ç¸éå·¥å·"
309                          zh-CN-lang="å·¥å·"
310                          ru-lang="ÐнÑÑÑÑменÑÑ"
311                          ko-lang="ë구"
312                          ja-lang="ãã¼ã«"
313                          es-lang="Herramientas"               
314                          >Tools</a>
315                          <ul><li><a href="/sdk/index.html">Get the SDK</a></li></ul>
316                        </li>
317                        <li><a href="/google/index.html">Google Services</a>
318                        </li>
319                      </ul>
320                    </li>
321                    <li class="distribute last">
322                      <ul>
323                        <li><a href="/distribute/index.html">Google Play</a></li>
324                        <li><a href="/distribute/googleplay/publish/index.html">Publishing</a></li>
325                        <li><a href="/distribute/googleplay/promote/index.html">Promoting</a></li>
326                        <li><a href="/distribute/googleplay/quality/index.html">App Quality</a></li>
327                        <li><a href="/distribute/googleplay/spotlight/index.html">Spotlight</a></li>
328                        <li><a href="/distribute/open.html">Open Distribution</a></li>
329                      </ul>
330                    </li>
331                </ul>
332          </div>
333          <!-- /Expanded quicknav -->
334        </div>
335    </div>
336    <!-- /Header -->
337    
338    
339  <div id="searchResults" class="wrap" style="display:none;">
340          <h2 id="searchTitle">Results</h2>
341          <div id="leftSearchControl" class="search-control">Loading...</div>
342  </div>
343    
344    
345    
346
347    <!-- Secondary x-nav -->
348    <div id="nav-x">
349        <div class="wrap">
350            <ul class="nav-x col-9 develop" style="width:100%">
351                <li><a href="/training/index.html" 
352                  zh-TW-lang="è¨ç·´èª²ç¨"
353                  zh-CN-lang="å¹è®­"
354                  ru-lang="ÐÑÑÑÑ"
355                  ko-lang="êµì¡"
356                  ja-lang="ãã¬ã¼ãã³ã°"
357                  es-lang="Capacitación"               
358                  >Training</a></li>
359                <li><a href="/guide/components/index.html" 
360                  zh-TW-lang="API æå"
361                  zh-CN-lang="API æå"
362                  ru-lang="РÑководÑÑва по API"
363                  ko-lang="API ê°ì´ë"
364                  ja-lang="API ã¬ã¤ã"
365                  es-lang="Guías de la API"               
366                  >API Guides</a></li>
367                <li><a href="/reference/packages.html" 
368                  zh-TW-lang="åèè³æº"
369                  zh-CN-lang="åè"
370                  ru-lang="СпÑавоÑник"
371                  ko-lang="참조문ì"
372                  ja-lang="ãªãã¡ã¬ã³ã¹"
373                  es-lang="Referencia"               
374                  >Reference</a></li>
375                <li><a href="/tools/index.html" 
376                  zh-TW-lang="ç¸éå·¥å·"
377                  zh-CN-lang="å·¥å·"
378                  ru-lang="ÐнÑÑÑÑменÑÑ"
379                  ko-lang="ë구"
380                  ja-lang="ãã¼ã«"
381                  es-lang="Herramientas"
382                  >Tools</a></li>
383                <li><a href="/google/index.html" class="selected"
384                  >Google Services</a>
385                </li>
386            </ul>
387        </div>
388        
389    </div>
390    <!-- /Sendondary x-nav -->
391
392  
393  
394
395  
396  <div class="wrap clearfix" id="body-content">
397    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
398      <div id="devdoc-nav" class="scroll-pane">
399<a class="totop" href="#top" data-g-event="left-nav-top">to top</a>
400
401
402
403<ul id="nav">
404  <li class="nav-section">
405    <div class="nav-section-header empty"><a href="/google/index.html">
406        <span class="en">Overview</span>
407      </a></div>
408  </li>
409
410  <li class="nav-section">
411    <div class="nav-section-header"><a href="/google/play-services/index.html">
412      <span class="en">Google Play Services</span></a>
413    </div>
414    <ul>
415      <li><a href="/google/play-services/setup.html">
416          <span class="en">Setup</span></a>
417      </li>
418
419      <li><a href="/google/play-services/auth.html">
420          <span class="en">Authentication</span></a>
421      </li>
422
423      <li><a href="/google/play-services/plus.html">
424          <span class="en">Google+</span></a>
425      </li>
426
427      <li><a href="/google/play-services/maps.html">
428          <span class="en">Google Maps</span></a>
429      </li>
430
431      <li id="gms-tree-list" class="nav-section">
432        <div class="nav-section-header">
433          <a href="/reference/gms-packages.html">
434            <span class="en">Reference</span>
435          </a>
436        <div>
437      </li>
438
439    </ul>
440  </li>
441
442
443  <li class="nav-section">
444    <div class="nav-section-header"><a href="/google/play/billing/index.html">
445      <span class="en">Google Play In-app Billing</span></a>
446    </div>
447    <ul>
448      <li><a href="/google/play/billing/billing_overview.html">
449              <span class="en">Overview</span></a>
450      </li>
451      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html">
452              <span class="en">Version 3 API</span></a></div>
453              <ul>
454              <li><a href="/google/play/billing/billing_integrate.html">
455              <span class="en">Implementing the API</span></a></li>
456              <li><a href="/google/play/billing/billing_reference.html">
457              <span class="en">Reference</span></a></li>
458              </ul>
459      </li>
460      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
461              <span class="en">Version 2 API</span></a></div>
462              <ul>
463              <li><a href="/google/play/billing/v2/billing_integrate.html">
464              <span class="en">Implementing the API</span></a></li>
465              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
466              <span class="en">Subscriptions</span></a></li>
467              <li><a href="/google/play/billing/v2/billing_reference.html">
468              <span class="en">Reference</span></a></li>
469              </ul>
470      </li>
471      <li><a href="/google/play/billing/billing_best_practices.html">
472              <span class="en">Security and Design</span></a>
473      </li>
474      <li><a href="/google/play/billing/billing_testing.html">
475              <span class="en">Testing In-app Billing</span></a>
476      </li>
477      <li><a href="/google/play/billing/billing_admin.html">
478              <span class="en">Administering In-app Billing</span></a>
479      </li>
480      <li><a href="/google/play/billing/versions.html">
481              <span class="en">Version Notes</span></a>
482      </li>
483    </ul>
484  </li>
485
486  <li class="nav-section">
487    <div class="nav-section-header"><a href="/google/play/dist.html">
488      <span class="en">Google Play Distribution</span></a>
489    </div>
490    <ul>
491      <li><a href="/google/play/filters.html">
492          <span class="en">Filters on Google Play</span></a>
493      </li>
494
495      <li><a href="/google/play/publishing/multiple-apks.html">
496          <span class="en">Multiple APK Support</span></a>
497      </li>
498      <li><a href="/google/play/expansion-files.html">
499          <span class="en">APK Expansion Files</span></a>
500      </li>
501      <li class="nav-section">
502        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
503          <span class="en">Application Licensing</span></a>
504        </div>
505        <ul>
506          <li><a href="/google/play/licensing/overview.html">
507              <span class="en">Licensing Overview</span></a>
508          </li>
509          <li><a href="/google/play/licensing/setting-up.html">
510              <span class="en">Setting Up for Licensing</span></a>
511          </li>
512          <li><a href="/google/play/licensing/adding-licensing.html">
513              <span class="en">Adding Licensing to Your App</span></a>
514          </li>
515          <li><a href="/google/play/licensing/licensing-reference.html">
516              <span class="en">Licensing Reference</span></a>
517          </li>
518        </ul>
519      </li>
520    </ul>
521  </li>
522
523  <li class="nav-section">
524      <div class="nav-section-header"><a href="/google/gcm/index.html">
525        <span class="en">Google Cloud Messaging</span></a>
526      </div>
527      <ul>
528        <li><a href="/google/gcm/gs.html">
529            <span class="en">Getting Started</span></a>
530        </li>
531        <li><a href="/google/gcm/gcm.html">
532            <span class="en">Architectural Overview</span></a>
533        </li>
534        <li><a href="/google/gcm/demo.html">
535            <span class="en">Demo App Tutorial</span></a>
536        </li>
537        <li><a href="/google/gcm/adv.html">
538            <span class="en">Advanced Topics</span></a>
539        </li>
540        <li><a href="/google/gcm/c2dm.html">
541            <span class="en">Migration</span></a>
542        </li>
543        <li id="gcm-tree-list" class="nav-section">
544          <div class="nav-section-header">
545            <a href="/reference/gcm-packages.html">
546              <span class="en">Reference</span>
547            </a>
548          <div>
549        </li>
550      </ul>
551  </li>
552
553
554  <li class="nav-section">
555    <div class="nav-section-header"><a href="/google/backup/index.html">
556      Android Backup Service</a>
557    </div>
558    <ul>
559      <li><a href="/google/backup/signup.html">
560          Register</a>
561      </li>
562    </ul>
563  </li>
564
565</ul>
566
567<script type="text/javascript">
568<!--
569    buildToggleLists();
570    changeNavLang(getLangPref());
571//-->
572</script>
573
574
575        
576
577      </div>
578      <script type="text/javascript">
579       showGoogleRefTree();
580    
581      </script>
582
583    </div> <!-- end side-nav -->
584    <script>
585      $(document).ready(function() {
586        scrollIntoView("devdoc-nav");
587        });
588    </script>
589
590
591     
592
593
594
595<div class="col-12"  id="doc-col">
596
597<div id="api-info-block">
598
599
600
601  
602   
603  
604  
605  
606  
607
608
609<div class="sum-details-links">
610
611Summary:
612
613
614
615
616
617  <a href="#constants">Constants</a>
618  
619
620
621
622  &#124; <a href="#lfields">Fields</a>
623  
624
625
626
627  &#124; <a href="#pubctors">Ctors</a>
628  
629
630
631
632  &#124; <a href="#pubmethods">Methods</a>
633  
634
635
636  &#124; <a href="#promethods">Protected Methods</a>
637  
638
639
640  &#124; <a href="#inhmethods">Inherited Methods</a>
641
642&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
643
644</div><!-- end sum-details-links -->
645<div class="api-level">
646  
647  
648  
649
650</div>
651</div><!-- end api-info-block -->
652
653
654<!-- ======== START OF CLASS DATA ======== -->
655
656<div id="jd-header">
657    public
658     
659     
660    
661    class
662<h1 itemprop="name">Sender</h1>
663
664
665
666  
667    extends Object<br/>
668  
669  
670  
671
672  
673  
674  
675
676
677</div><!-- end header -->
678
679<div id="naMessage"></div>
680
681<div id="jd-content" class="api apilevel-">
682<table class="jd-inheritance-table">
683
684
685    <tr>
686         	
687        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
688    </tr>
689    
690
691    <tr>
692        
693            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
694         	
695        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gcm.server.Sender</td>
696    </tr>
697    
698
699</table>
700
701
702
703
704
705
706
707<div class="jd-descr">
708
709
710<h2>Class Overview</h2>
711<p itemprop="articleBody">Helper class to send messages to the GCM service using an API Key.
712</p>
713
714
715
716
717
718</div><!-- jd-descr -->
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735<div class="jd-descr">
736
737
738<h2>Summary</h2>
739
740
741
742
743
744
745
746
747
748
749
750
751
752<!-- =========== ENUM CONSTANT SUMMARY =========== -->
753<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
754
755
756    
757    <tr class="alt-color api apilevel-" >
758        <td class="jd-typecol">int</td>
759        <td class="jd-linkcol"><a href="/reference/com/google/android/gcm/server/Sender.html#BACKOFF_INITIAL_DELAY">BACKOFF_INITIAL_DELAY</a></td>
760        <td class="jd-descrcol" width="100%">Initial delay before first retry, without jitter.</td>
761    </tr>
762    
763    
764    <tr class=" api apilevel-" >
765        <td class="jd-typecol">int</td>
766        <td class="jd-linkcol"><a href="/reference/com/google/android/gcm/server/Sender.html#MAX_BACKOFF_DELAY">MAX_BACKOFF_DELAY</a></td>
767        <td class="jd-descrcol" width="100%">Maximum delay before a retry.</td>
768    </tr>
769    
770    
771    <tr class="alt-color api apilevel-" >
772        <td class="jd-typecol">String</td>
773        <td class="jd-linkcol"><a href="/reference/com/google/android/gcm/server/Sender.html#UTF8">UTF8</a></td>
774        <td class="jd-descrcol" width="100%"></td>
775    </tr>
776    
777    
778
779</table>
780
781
782
783
784
785
786
787<!-- =========== FIELD SUMMARY =========== -->
788<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
789
790
791    
792      <tr class="alt-color api apilevel-" >
793          <td class="jd-typecol"><nobr>
794          protected
795          static
796          final
797          Logger</nobr></td>
798          <td class="jd-linkcol"><a href="/reference/com/google/android/gcm/server/Sender.html#logger">logger</a></td>
799          <td class="jd-descrcol" width="100%"></td>
800      </tr>
801      
802    
803      <tr class=" api apilevel-" >
804          <td class="jd-typecol"><nobr>
805          protected
806          
807          final
808          Random</nobr></td>
809          <td class="jd-linkcol"><a href="/reference/com/google/android/gcm/server/Sender.html#random">random</a></td>
810          <td class="jd-descrcol" width="100%"></td>
811      </tr>
812      
813    
814
815</table>
816
817
818
819
820
821
822
823<!-- ======== CONSTRUCTOR SUMMARY ======== -->
824<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
825
826
827
828	 
829    <tr class="alt-color api apilevel-" >
830        <td class="jd-typecol"><nobr>
831            
832            
833            
834            
835            
836            </nobr>
837        </td>
838        <td class="jd-linkcol" width="100%"><nobr>
839        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#Sender(java.lang.String)">Sender</a></span>(String key)</nobr>
840        
841        <div class="jd-descrdiv">Default constructor.</div>
842  
843  </td></tr>
844
845
846
847</table>
848
849
850
851
852
853
854<!-- ========== METHOD SUMMARY =========== -->
855<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
856
857
858
859	 
860    <tr class="alt-color api apilevel-" >
861        <td class="jd-typecol"><nobr>
862            
863            
864            
865            
866            
867            <a href="/reference/com/google/android/gcm/server/MulticastResult.html">MulticastResult</a></nobr>
868        </td>
869        <td class="jd-linkcol" width="100%"><nobr>
870        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.util.List<java.lang.String>, int)">send</a></span>(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, List&lt;String&gt; regIds, int retries)</nobr>
871        
872        <div class="jd-descrdiv">Sends a message to many devices, retrying in case of unavailability.</div>
873  
874  </td></tr>
875
876
877	 
878    <tr class=" api apilevel-" >
879        <td class="jd-typecol"><nobr>
880            
881            
882            
883            
884            
885            <a href="/reference/com/google/android/gcm/server/Result.html">Result</a></nobr>
886        </td>
887        <td class="jd-linkcol" width="100%"><nobr>
888        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.lang.String, int)">send</a></span>(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, String registrationId, int retries)</nobr>
889        
890        <div class="jd-descrdiv">Sends a message to one device, retrying in case of unavailability.</div>
891  
892  </td></tr>
893
894
895	 
896    <tr class="alt-color api apilevel-" >
897        <td class="jd-typecol"><nobr>
898            
899            
900            
901            
902            
903            <a href="/reference/com/google/android/gcm/server/Result.html">Result</a></nobr>
904        </td>
905        <td class="jd-linkcol" width="100%"><nobr>
906        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#sendNoRetry(com.google.android.gcm.server.Message, java.lang.String)">sendNoRetry</a></span>(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, String registrationId)</nobr>
907        
908        <div class="jd-descrdiv">Sends a message without retrying in case of service unavailability.</div>
909  
910  </td></tr>
911
912
913	 
914    <tr class=" api apilevel-" >
915        <td class="jd-typecol"><nobr>
916            
917            
918            
919            
920            
921            <a href="/reference/com/google/android/gcm/server/MulticastResult.html">MulticastResult</a></nobr>
922        </td>
923        <td class="jd-linkcol" width="100%"><nobr>
924        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#sendNoRetry(com.google.android.gcm.server.Message, java.util.List<java.lang.String>)">sendNoRetry</a></span>(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, List&lt;String&gt; registrationIds)</nobr>
925        
926        <div class="jd-descrdiv">Sends a message without retrying in case of service unavailability.</div>
927  
928  </td></tr>
929
930
931
932</table>
933
934
935
936
937<!-- ========== METHOD SUMMARY =========== -->
938<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
939
940
941
942	 
943    <tr class="alt-color api apilevel-" >
944        <td class="jd-typecol"><nobr>
945            
946            
947            
948            static
949            
950            void</nobr>
951        </td>
952        <td class="jd-linkcol" width="100%"><nobr>
953        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#addParameter(java.lang.StringBuilder, java.lang.String, java.lang.String)">addParameter</a></span>(StringBuilder body, String name, String value)</nobr>
954        
955        <div class="jd-descrdiv">Adds a new parameter to the HTTP POST body.</div>
956  
957  </td></tr>
958
959
960	 
961    <tr class=" api apilevel-" >
962        <td class="jd-typecol"><nobr>
963            
964            
965            
966            
967            
968            HttpURLConnection</nobr>
969        </td>
970        <td class="jd-linkcol" width="100%"><nobr>
971        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#getConnection(java.lang.String)">getConnection</a></span>(String url)</nobr>
972        
973        <div class="jd-descrdiv">Gets an <code><a href="/reference/java/net/HttpURLConnection.html">HttpURLConnection</a></code> given an URL.</div>
974  
975  </td></tr>
976
977
978	 
979    <tr class="alt-color api apilevel-" >
980        <td class="jd-typecol"><nobr>
981            
982            
983            
984            static
985            
986            String</nobr>
987        </td>
988        <td class="jd-linkcol" width="100%"><nobr>
989        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#getString(java.io.InputStream)">getString</a></span>(InputStream stream)</nobr>
990        
991        <div class="jd-descrdiv">Convenience method to convert an InputStream to a String.</div>
992  
993  </td></tr>
994
995
996	 
997    <tr class=" api apilevel-" >
998        <td class="jd-typecol"><nobr>
999            
1000            
1001            
1002            static
1003            
1004            StringBuilder</nobr>
1005        </td>
1006        <td class="jd-linkcol" width="100%"><nobr>
1007        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#newBody(java.lang.String, java.lang.String)">newBody</a></span>(String name, String value)</nobr>
1008        
1009        <div class="jd-descrdiv">Creates a <code><a href="/reference/java/lang/StringBuilder.html">StringBuilder</a></code> to be used as the body of an HTTP POST.</div>
1010  
1011  </td></tr>
1012
1013
1014	 
1015    <tr class="alt-color api apilevel-" >
1016        <td class="jd-typecol"><nobr>
1017            
1018            
1019            final
1020            static
1021            
1022            Map&lt;String,&nbsp;String&gt;</nobr>
1023        </td>
1024        <td class="jd-linkcol" width="100%"><nobr>
1025        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#newKeyValues(java.lang.String, java.lang.String)">newKeyValues</a></span>(String key, String value)</nobr>
1026        
1027        <div class="jd-descrdiv">Creates a map with just one key-value pair.</div>
1028  
1029  </td></tr>
1030
1031
1032	 
1033    <tr class=" api apilevel-" >
1034        <td class="jd-typecol"><nobr>
1035            
1036            
1037            
1038            
1039            
1040            HttpURLConnection</nobr>
1041        </td>
1042        <td class="jd-linkcol" width="100%"><nobr>
1043        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#post(java.lang.String, java.lang.String, java.lang.String)">post</a></span>(String url, String contentType, String body)</nobr>
1044        
1045        <div class="jd-descrdiv">Makes an HTTP POST request to a given endpoint.</div>
1046  
1047  </td></tr>
1048
1049
1050	 
1051    <tr class="alt-color api apilevel-" >
1052        <td class="jd-typecol"><nobr>
1053            
1054            
1055            
1056            
1057            
1058            HttpURLConnection</nobr>
1059        </td>
1060        <td class="jd-linkcol" width="100%"><nobr>
1061        <span class="sympad"><a href="/reference/com/google/android/gcm/server/Sender.html#post(java.lang.String, java.lang.String)">post</a></span>(String url, String body)</nobr>
1062        
1063        <div class="jd-descrdiv">Make an HTTP post to a given URL.</div>
1064  
1065  </td></tr>
1066
1067
1068
1069</table>
1070
1071
1072
1073
1074
1075<!-- ========== METHOD SUMMARY =========== -->
1076<table id="inhmethods" class="jd-sumtable"><tr><th>
1077  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
1078  <div style="clear:left;">Inherited Methods</div></th></tr>
1079
1080
1081<tr class="api apilevel-" >
1082<td colspan="12">
1083  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
1084          ><img id="inherited-methods-java.lang.Object-trigger"
1085          src="/assets/images/triangle-closed.png"
1086          class="jd-expando-trigger-img" /></a>
1087From class
1088
1089  java.lang.Object
1090
1091<div id="inherited-methods-java.lang.Object">
1092  <div id="inherited-methods-java.lang.Object-list"
1093        class="jd-inheritedlinks">
1094  </div>
1095  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
1096    <table class="jd-sumtable-expando">
1097    
1098
1099
1100	 
1101    <tr class="alt-color api apilevel-" >
1102        <td class="jd-typecol"><nobr>
1103            
1104            
1105            
1106            
1107            
1108            Object</nobr>
1109        </td>
1110        <td class="jd-linkcol" width="100%"><nobr>
1111        <span class="sympad">clone</span>()</nobr>
1112        
1113  </td></tr>
1114
1115
1116	 
1117    <tr class=" api apilevel-" >
1118        <td class="jd-typecol"><nobr>
1119            
1120            
1121            
1122            
1123            
1124            boolean</nobr>
1125        </td>
1126        <td class="jd-linkcol" width="100%"><nobr>
1127        <span class="sympad">equals</span>(Object arg0)</nobr>
1128        
1129  </td></tr>
1130
1131
1132	 
1133    <tr class="alt-color api apilevel-" >
1134        <td class="jd-typecol"><nobr>
1135            
1136            
1137            
1138            
1139            
1140            void</nobr>
1141        </td>
1142        <td class="jd-linkcol" width="100%"><nobr>
1143        <span class="sympad">finalize</span>()</nobr>
1144        
1145  </td></tr>
1146
1147
1148	 
1149    <tr class=" api apilevel-" >
1150        <td class="jd-typecol"><nobr>
1151            
1152            
1153            final
1154            
1155            
1156            Class&lt;?&gt;</nobr>
1157        </td>
1158        <td class="jd-linkcol" width="100%"><nobr>
1159        <span class="sympad">getClass</span>()</nobr>
1160        
1161  </td></tr>
1162
1163
1164	 
1165    <tr class="alt-color api apilevel-" >
1166        <td class="jd-typecol"><nobr>
1167            
1168            
1169            
1170            
1171            
1172            int</nobr>
1173        </td>
1174        <td class="jd-linkcol" width="100%"><nobr>
1175        <span class="sympad">hashCode</span>()</nobr>
1176        
1177  </td></tr>
1178
1179
1180	 
1181    <tr class=" api apilevel-" >
1182        <td class="jd-typecol"><nobr>
1183            
1184            
1185            final
1186            
1187            
1188            void</nobr>
1189        </td>
1190        <td class="jd-linkcol" width="100%"><nobr>
1191        <span class="sympad">notify</span>()</nobr>
1192        
1193  </td></tr>
1194
1195
1196	 
1197    <tr class="alt-color api apilevel-" >
1198        <td class="jd-typecol"><nobr>
1199            
1200            
1201            final
1202            
1203            
1204            void</nobr>
1205        </td>
1206        <td class="jd-linkcol" width="100%"><nobr>
1207        <span class="sympad">notifyAll</span>()</nobr>
1208        
1209  </td></tr>
1210
1211
1212	 
1213    <tr class=" api apilevel-" >
1214        <td class="jd-typecol"><nobr>
1215            
1216            
1217            
1218            
1219            
1220            String</nobr>
1221        </td>
1222        <td class="jd-linkcol" width="100%"><nobr>
1223        <span class="sympad">toString</span>()</nobr>
1224        
1225  </td></tr>
1226
1227
1228	 
1229    <tr class="alt-color api apilevel-" >
1230        <td class="jd-typecol"><nobr>
1231            
1232            
1233            final
1234            
1235            
1236            void</nobr>
1237        </td>
1238        <td class="jd-linkcol" width="100%"><nobr>
1239        <span class="sympad">wait</span>()</nobr>
1240        
1241  </td></tr>
1242
1243
1244	 
1245    <tr class=" api apilevel-" >
1246        <td class="jd-typecol"><nobr>
1247            
1248            
1249            final
1250            
1251            
1252            void</nobr>
1253        </td>
1254        <td class="jd-linkcol" width="100%"><nobr>
1255        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
1256        
1257  </td></tr>
1258
1259
1260	 
1261    <tr class="alt-color api apilevel-" >
1262        <td class="jd-typecol"><nobr>
1263            
1264            
1265            final
1266            
1267            
1268            void</nobr>
1269        </td>
1270        <td class="jd-linkcol" width="100%"><nobr>
1271        <span class="sympad">wait</span>(long arg0)</nobr>
1272        
1273  </td></tr>
1274
1275
1276</table>
1277  </div>
1278</div>
1279</td></tr>
1280
1281
1282</table>
1283
1284
1285</div><!-- jd-descr (summary) -->
1286
1287<!-- Details -->
1288
1289
1290
1291
1292
1293
1294
1295
1296<!-- XML Attributes -->
1297
1298
1299<!-- Enum Values -->
1300
1301
1302<!-- Constants -->
1303
1304
1305<!-- ========= ENUM CONSTANTS DETAIL ======== -->
1306<h2>Constants</h2>
1307
1308
1309
1310
1311<A NAME="BACKOFF_INITIAL_DELAY"></A>
1312
1313<div class="jd-details api apilevel-"> 
1314    <h4 class="jd-details-title">
1315      <span class="normal">
1316        protected 
1317        static 
1318        final 
1319        int
1320      </span>
1321        BACKOFF_INITIAL_DELAY
1322    </h4>
1323      <div class="api-level">
1324        
1325        
1326  
1327
1328      </div>
1329    <div class="jd-details-descr">
1330      
1331  <div class="jd-tagdata jd-tagdescr"><p>Initial delay before first retry, without jitter.
1332</p></div>
1333
1334    
1335        <div class="jd-tagdata">
1336        <span class="jd-tagtitle">Constant Value: </span>
1337        <span>
1338            
1339                1000
1340                (0x000003e8)
1341            
1342        </span>
1343        </div>
1344    
1345    </div>
1346</div>
1347
1348
1349
1350<A NAME="MAX_BACKOFF_DELAY"></A>
1351
1352<div class="jd-details api apilevel-"> 
1353    <h4 class="jd-details-title">
1354      <span class="normal">
1355        protected 
1356        static 
1357        final 
1358        int
1359      </span>
1360        MAX_BACKOFF_DELAY
1361    </h4>
1362      <div class="api-level">
1363        
1364        
1365  
1366
1367      </div>
1368    <div class="jd-details-descr">
1369      
1370  <div class="jd-tagdata jd-tagdescr"><p>Maximum delay before a retry.
1371</p></div>
1372
1373    
1374        <div class="jd-tagdata">
1375        <span class="jd-tagtitle">Constant Value: </span>
1376        <span>
1377            
1378                1024000
1379                (0x000fa000)
1380            
1381        </span>
1382        </div>
1383    
1384    </div>
1385</div>
1386
1387
1388
1389<A NAME="UTF8"></A>
1390
1391<div class="jd-details api apilevel-"> 
1392    <h4 class="jd-details-title">
1393      <span class="normal">
1394        protected 
1395        static 
1396        final 
1397        String
1398      </span>
1399        UTF8
1400    </h4>
1401      <div class="api-level">
1402        
1403        
1404  
1405
1406      </div>
1407    <div class="jd-details-descr">
1408      
1409  <div class="jd-tagdata jd-tagdescr"><p></p></div>
1410
1411    
1412        <div class="jd-tagdata">
1413        <span class="jd-tagtitle">Constant Value: </span>
1414        <span>
1415            
1416                "UTF-8"
1417            
1418        </span>
1419        </div>
1420    
1421    </div>
1422</div>
1423
1424
1425
1426
1427<!-- Fields -->
1428
1429
1430<!-- ========= FIELD DETAIL ======== -->
1431<h2>Fields</h2>
1432
1433
1434
1435
1436<A NAME="logger"></A>
1437
1438<div class="jd-details api apilevel-"> 
1439    <h4 class="jd-details-title">
1440      <span class="normal">
1441        protected 
1442        static 
1443        final 
1444        Logger
1445      </span>
1446        logger
1447    </h4>
1448      <div class="api-level">
1449        
1450        
1451  
1452
1453      </div>
1454    <div class="jd-details-descr">
1455      
1456  <div class="jd-tagdata jd-tagdescr"><p></p></div>
1457
1458    
1459    </div>
1460</div>
1461
1462
1463
1464<A NAME="random"></A>
1465
1466<div class="jd-details api apilevel-"> 
1467    <h4 class="jd-details-title">
1468      <span class="normal">
1469        protected 
1470         
1471        final 
1472        Random
1473      </span>
1474        random
1475    </h4>
1476      <div class="api-level">
1477        
1478        
1479  
1480
1481      </div>
1482    <div class="jd-details-descr">
1483      
1484  <div class="jd-tagdata jd-tagdescr"><p></p></div>
1485
1486    
1487    </div>
1488</div>
1489
1490
1491
1492
1493<!-- Public ctors -->
1494
1495
1496<!-- ========= CONSTRUCTOR DETAIL ======== -->
1497<h2>Public Constructors</h2>
1498
1499
1500
1501<A NAME="Sender(java.lang.String)"></A>
1502
1503<div class="jd-details api apilevel-"> 
1504    <h4 class="jd-details-title">
1505      <span class="normal">
1506        public 
1507         
1508         
1509         
1510         
1511        
1512      </span>
1513      <span class="sympad">Sender</span>
1514      <span class="normal">(String key)</span>
1515    </h4>
1516      <div class="api-level">
1517        <div></div>
1518        
1519  
1520
1521      </div>
1522    <div class="jd-details-descr">
1523      
1524  <div class="jd-tagdata jd-tagdescr"><p>Default constructor.</p></div>
1525  <div class="jd-tagdata">
1526      <h5 class="jd-tagtitle">Parameters</h5>
1527      <table class="jd-tagtable">
1528        <tr>
1529          <th>key</td>
1530          <td>API key obtained through the Google API Console.
1531</td>
1532        </tr>
1533      </table>
1534  </div>
1535
1536    </div>
1537</div>
1538
1539
1540
1541
1542
1543<!-- ========= CONSTRUCTOR DETAIL ======== -->
1544<!-- Protected ctors -->
1545
1546
1547
1548<!-- ========= METHOD DETAIL ======== -->
1549<!-- Public methdos -->
1550
1551<h2>Public Methods</h2>
1552
1553
1554
1555<A NAME="send(com.google.android.gcm.server.Message, java.util.List<java.lang.String>, int)"></A>
1556
1557<div class="jd-details api apilevel-"> 
1558    <h4 class="jd-details-title">
1559      <span class="normal">
1560        public 
1561         
1562         
1563         
1564         
1565        <a href="/reference/com/google/android/gcm/server/MulticastResult.html">MulticastResult</a>
1566      </span>
1567      <span class="sympad">send</span>
1568      <span class="normal">(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, List&lt;String&gt; regIds, int retries)</span>
1569    </h4>
1570      <div class="api-level">
1571        <div></div>
1572        
1573  
1574
1575      </div>
1576    <div class="jd-details-descr">
1577      
1578  <div class="jd-tagdata jd-tagdescr"><p>Sends a message to many devices, retrying in case of unavailability.
1579
1580 <p>
1581 <strong>Note: </strong> this method uses exponential back-off to retry in
1582 case of service unavailability and hence could block the calling thread
1583 for many seconds.</p></div>
1584  <div class="jd-tagdata">
1585      <h5 class="jd-tagtitle">Parameters</h5>
1586      <table class="jd-tagtable">
1587        <tr>
1588          <th>message</td>
1589          <td>message to be sent.</td>
1590        </tr>
1591        <tr>
1592          <th>regIds</td>
1593          <td>registration id of the devices that will receive
1594        the message.</td>
1595        </tr>
1596        <tr>
1597          <th>retries</td>
1598          <td>number of retries in case of service unavailability errors.</td>
1599        </tr>
1600      </table>
1601  </div>
1602  <div class="jd-tagdata">
1603      <h5 class="jd-tagtitle">Returns</h5>
1604      <ul class="nolist"><li>combined result of all requests made.</li></ul>
1605  </div>
1606  <div class="jd-tagdata">
1607      <h5 class="jd-tagtitle">Throws</h5>
1608      <table class="jd-tagtable">  
1609        <tr>
1610            <th>IllegalArgumentException</td>
1611            <td>if registrationIds is null or
1612         empty.</td>
1613        </tr>  
1614        <tr>
1615            <th><a href="/reference/com/google/android/gcm/server/InvalidRequestException.html">InvalidRequestException</a></td>
1616            <td>if GCM didn't returned a 200 or 503 status.</td>
1617        </tr>  
1618        <tr>
1619            <th>IOException</td>
1620            <td>if message could not be sent.
1621</td>
1622        </tr>
1623      </table>
1624  </div>
1625
1626    </div>
1627</div>
1628
1629
1630<A NAME="send(com.google.android.gcm.server.Message, java.lang.String, int)"></A>
1631
1632<div class="jd-details api apilevel-"> 
1633    <h4 class="jd-details-title">
1634      <span class="normal">
1635        public 
1636         
1637         
1638         
1639         
1640        <a href="/reference/com/google/android/gcm/server/Result.html">Result</a>
1641      </span>
1642      <span class="sympad">send</span>
1643      <span class="normal">(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, String registrationId, int retries)</span>
1644    </h4>
1645      <div class="api-level">
1646        <div></div>
1647        
1648  
1649
1650      </div>
1651    <div class="jd-details-descr">
1652      
1653  <div class="jd-tagdata jd-tagdescr"><p>Sends a message to one device, retrying in case of unavailability.
1654
1655 <p>
1656 <strong>Note: </strong> this method uses exponential back-off to retry in
1657 case of service unavailability and hence could block the calling thread
1658 for many seconds.</p></div>
1659  <div class="jd-tagdata">
1660      <h5 class="jd-tagtitle">Parameters</h5>
1661      <table class="jd-tagtable">
1662        <tr>
1663          <th>message</td>
1664          <td>message to be sent, including the device's registration id.</td>
1665        </tr>
1666        <tr>
1667          <th>registrationId</td>
1668          <td>device where the message will be sent.</td>
1669        </tr>
1670        <tr>
1671          <th>retries</td>
1672          <td>number of retries in case of service unavailability errors.</td>
1673        </tr>
1674      </table>
1675  </div>
1676  <div class="jd-tagdata">
1677      <h5 class="jd-tagtitle">Returns</h5>
1678      <ul class="nolist"><li>result of the request (see its javadoc for more details).</li></ul>
1679  </div>
1680  <div class="jd-tagdata">
1681      <h5 class="jd-tagtitle">Throws</h5>
1682      <table class="jd-tagtable">  
1683        <tr>
1684            <th>IllegalArgumentException</td>
1685            <td>if registrationId is null.</td>
1686        </tr>  
1687        <tr>
1688            <th><a href="/reference/com/google/android/gcm/server/InvalidRequestException.html">InvalidRequestException</a></td>
1689            <td>if GCM didn't returned a 200 or 5xx status.</td>
1690        </tr>  
1691        <tr>
1692            <th>IOException</td>
1693            <td>if message could not be sent.
1694</td>
1695        </tr>
1696      </table>
1697  </div>
1698
1699    </div>
1700</div>
1701
1702
1703<A NAME="sendNoRetry(com.google.android.gcm.server.Message, java.lang.String)"></A>
1704
1705<div class="jd-details api apilevel-"> 
1706    <h4 class="jd-details-title">
1707      <span class="normal">
1708        public 
1709         
1710         
1711         
1712         
1713        <a href="/reference/com/google/android/gcm/server/Result.html">Result</a>
1714      </span>
1715      <span class="sympad">sendNoRetry</span>
1716      <span class="normal">(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, String registrationId)</span>
1717    </h4>
1718      <div class="api-level">
1719        <div></div>
1720        
1721  
1722
1723      </div>
1724    <div class="jd-details-descr">
1725      
1726  <div class="jd-tagdata jd-tagdescr"><p>Sends a message without retrying in case of service unavailability. See
1727 <code><a href="/reference/com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.lang.String, int)">send(Message, String, int)</a></code> for more info.</p></div>
1728  <div class="jd-tagdata">
1729      <h5 class="jd-tagtitle">Returns</h5>
1730      <ul class="nolist"><li>result of the post, or null if the GCM service was
1731         unavailable or any network exception caused the request to fail.</li></ul>
1732  </div>
1733  <div class="jd-tagdata">
1734      <h5 class="jd-tagtitle">Throws</h5>
1735      <table class="jd-tagtable">  
1736        <tr>
1737            <th><a href="/reference/com/google/android/gcm/server/InvalidRequestException.html">InvalidRequestException</a></td>
1738            <td>if GCM didn't returned a 200 or 5xx status.</td>
1739        </tr>  
1740        <tr>
1741            <th>IllegalArgumentException</td>
1742            <td>if registrationId is null.
1743</td>
1744        </tr>  
1745        <tr>
1746            <th>IOException</td>
1747            <td></td>
1748        </tr>
1749      </table>
1750  </div>
1751
1752    </div>
1753</div>
1754
1755
1756<A NAME="sendNoRetry(com.google.android.gcm.server.Message, java.util.List<java.lang.String>)"></A>
1757
1758<div class="jd-details api apilevel-"> 
1759    <h4 class="jd-details-title">
1760      <span class="normal">
1761        public 
1762         
1763         
1764         
1765         
1766        <a href="/reference/com/google/android/gcm/server/MulticastResult.html">MulticastResult</a>
1767      </span>
1768      <span class="sympad">sendNoRetry</span>
1769      <span class="normal">(<a href="/reference/com/google/android/gcm/server/Message.html">Message</a> message, List&lt;String&gt; registrationIds)</span>
1770    </h4>
1771      <div class="api-level">
1772        <div></div>
1773        
1774  
1775
1776      </div>
1777    <div class="jd-details-descr">
1778      
1779  <div class="jd-tagdata jd-tagdescr"><p>Sends a message without retrying in case of service unavailability. See
1780 <code><a href="/reference/com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.util.List<java.lang.String>, int)">send(Message, List, int)</a></code> for more info.</p></div>
1781  <div class="jd-tagdata">
1782      <h5 class="jd-tagtitle">Returns</h5>
1783      <ul class="nolist"><li>multicast results if the message was sent successfully,
1784         null if it failed but could be retried.</li></ul>
1785  </div>
1786  <div class="jd-tagdata">
1787      <h5 class="jd-tagtitle">Throws</h5>
1788      <table class="jd-tagtable">  
1789        <tr>
1790            <th>IllegalArgumentException</td>
1791            <td>if registrationIds is null or
1792         empty.</td>
1793        </tr>  
1794        <tr>
1795            <th><a href="/reference/com/google/android/gcm/server/InvalidRequestException.html">InvalidRequestException</a></td>
1796            <td>if GCM didn't returned a 200 status.</td>
1797        </tr>  
1798        <tr>
1799            <th>IOException</td>
1800            <td>if there was a JSON parsing error
1801</td>
1802        </tr>
1803      </table>
1804  </div>
1805
1806    </div>
1807</div>
1808
1809
1810
1811
1812
1813<!-- ========= METHOD DETAIL ======== -->
1814
1815<h2>Protected Methods</h2>
1816
1817
1818
1819<A NAME="addParameter(java.lang.StringBuilder, java.lang.String, java.lang.String)"></A>
1820
1821<div class="jd-details api apilevel-"> 
1822    <h4 class="jd-details-title">
1823      <span class="normal">
1824        protected 
1825        static 
1826         
1827         
1828         
1829        void
1830      </span>
1831      <span class="sympad">addParameter</span>
1832      <span class="normal">(StringBuilder body, String name, String value)</span>
1833    </h4>
1834      <div class="api-level">
1835        <div></div>
1836        
1837  
1838
1839      </div>
1840    <div class="jd-details-descr">
1841      
1842  <div class="jd-tagdata jd-tagdescr"><p>Adds a new parameter to the HTTP POST body.</p></div>
1843  <div class="jd-tagdata">
1844      <h5 class="jd-tagtitle">Parameters</h5>
1845      <table class="jd-tagtable">
1846        <tr>
1847          <th>body</td>
1848          <td>HTTP POST body.</td>
1849        </tr>
1850        <tr>
1851          <th>name</td>
1852          <td>parameter's name.</td>
1853        </tr>
1854        <tr>
1855          <th>value</td>
1856          <td>parameter's value.
1857</td>
1858        </tr>
1859      </table>
1860  </div>
1861
1862    </div>
1863</div>
1864
1865
1866<A NAME="getConnection(java.lang.String)"></A>
1867
1868<div class="jd-details api apilevel-"> 
1869    <h4 class="jd-details-title">
1870      <span class="normal">
1871        protected 
1872         
1873         
1874         
1875         
1876        HttpURLConnection
1877      </span>
1878      <span class="sympad">getConnection</span>
1879      <span class="normal">(String url)</span>
1880    </h4>
1881      <div class="api-level">
1882        <div></div>
1883        
1884  
1885
1886      </div>
1887    <div class="jd-details-descr">
1888      
1889  <div class="jd-tagdata jd-tagdescr"><p>Gets an <code><a href="/reference/java/net/HttpURLConnection.html">HttpURLConnection</a></code> given an URL.
1890</p></div>
1891  <div class="jd-tagdata">
1892      <h5 class="jd-tagtitle">Throws</h5>
1893      <table class="jd-tagtable">  
1894        <tr>
1895            <th>IOException</td>
1896            <td></td>
1897        </tr>
1898      </table>
1899  </div>
1900
1901    </div>
1902</div>
1903
1904
1905<A NAME="getString(java.io.InputStream)"></A>
1906
1907<div class="jd-details api apilevel-"> 
1908    <h4 class="jd-details-title">
1909      <span class="normal">
1910        protected 
1911        static 
1912         
1913         
1914         
1915        String
1916      </span>
1917      <span class="sympad">getString</span>
1918      <span class="normal">(InputStream stream)</span>
1919    </h4>
1920      <div class="api-level">
1921        <div></div>
1922        
1923  
1924
1925      </div>
1926    <div class="jd-details-descr">
1927      
1928  <div class="jd-tagdata jd-tagdescr"><p>Convenience method to convert an InputStream to a String.
1929 <p>
1930 If the stream ends in a newline character, it will be stripped.
1931 <p>
1932 If the stream is null, returns an empty string.
1933</p></div>
1934  <div class="jd-tagdata">
1935      <h5 class="jd-tagtitle">Throws</h5>
1936      <table class="jd-tagtable">  
1937        <tr>
1938            <th>IOException</td>
1939            <td></td>
1940        </tr>
1941      </table>
1942  </div>
1943
1944    </div>
1945</div>
1946
1947
1948<A NAME="newBody(java.lang.String, java.lang.String)"></A>
1949
1950<div class="jd-details api apilevel-"> 
1951    <h4 class="jd-details-title">
1952      <span class="normal">
1953        protected 
1954        static 
1955         
1956         
1957         
1958        StringBuilder
1959      </span>
1960      <span class="sympad">newBody</span>
1961      <span class="normal">(String name, String value)</span>
1962    </h4>
1963      <div class="api-level">
1964        <div></div>
1965        
1966  
1967
1968      </div>
1969    <div class="jd-details-descr">
1970      
1971  <div class="jd-tagdata jd-tagdescr"><p>Creates a <code><a href="/reference/java/lang/StringBuilder.html">StringBuilder</a></code> to be used as the body of an HTTP POST.</p></div>
1972  <div class="jd-tagdata">
1973      <h5 class="jd-tagtitle">Parameters</h5>
1974      <table class="jd-tagtable">
1975        <tr>
1976          <th>name</td>
1977          <td>initial parameter for the POST.</td>
1978        </tr>
1979        <tr>
1980          <th>value</td>
1981          <td>initial value for that parameter.</td>
1982        </tr>
1983      </table>
1984  </div>
1985  <div class="jd-tagdata">
1986      <h5 class="jd-tagtitle">Returns</h5>
1987      <ul class="nolist"><li>StringBuilder to be used an HTTP POST body.
1988</li></ul>
1989  </div>
1990
1991    </div>
1992</div>
1993
1994
1995<A NAME="newKeyValues(java.lang.String, java.lang.String)"></A>
1996
1997<div class="jd-details api apilevel-"> 
1998    <h4 class="jd-details-title">
1999      <span class="normal">
2000        protected 
2001        static 
2002        final 
2003         
2004         
2005        Map&lt;String,&nbsp;String&gt;
2006      </span>
2007      <span class="sympad">newKeyValues</span>
2008      <span class="normal">(String key, String value)</span>
2009    </h4>
2010      <div class="api-level">
2011        <div></div>
2012        
2013  
2014
2015      </div>
2016    <div class="jd-details-descr">
2017      
2018  <div class="jd-tagdata jd-tagdescr"><p>Creates a map with just one key-value pair.
2019</p></div>
2020
2021    </div>
2022</div>
2023
2024
2025<A NAME="post(java.lang.String, java.lang.String, java.lang.String)"></A>
2026
2027<div class="jd-details api apilevel-"> 
2028    <h4 class="jd-details-title">
2029      <span class="normal">
2030        protected 
2031         
2032         
2033         
2034         
2035        HttpURLConnection
2036      </span>
2037      <span class="sympad">post</span>
2038      <span class="normal">(String url, String contentType, String body)</span>
2039    </h4>
2040      <div class="api-level">
2041        <div></div>
2042        
2043  
2044
2045      </div>
2046    <div class="jd-details-descr">
2047      
2048  <div class="jd-tagdata jd-tagdescr"><p>Makes an HTTP POST request to a given endpoint.
2049
2050 <p>
2051 <strong>Note: </strong> the returned connected should not be disconnected,
2052 otherwise it would kill persistent connections made using Keep-Alive.</p></div>
2053  <div class="jd-tagdata">
2054      <h5 class="jd-tagtitle">Parameters</h5>
2055      <table class="jd-tagtable">
2056        <tr>
2057          <th>url</td>
2058          <td>endpoint to post the request.</td>
2059        </tr>
2060        <tr>
2061          <th>contentType</td>
2062          <td>type of request.</td>
2063        </tr>
2064        <tr>
2065          <th>body</td>
2066          <td>body of the request.</td>
2067        </tr>
2068      </table>
2069  </div>
2070  <div class="jd-tagdata">
2071      <h5 class="jd-tagtitle">Returns</h5>
2072      <ul class="nolist"><li>the underlying connection.</li></ul>
2073  </div>
2074  <div class="jd-tagdata">
2075      <h5 class="jd-tagtitle">Throws</h5>
2076      <table class="jd-tagtable">  
2077        <tr>
2078            <th>IOException</td>
2079            <td>propagated from underlying methods.
2080</td>
2081        </tr>
2082      </table>
2083  </div>
2084
2085    </div>
2086</div>
2087
2088
2089<A NAME="post(java.lang.String, java.lang.String)"></A>
2090
2091<div class="jd-details api apilevel-"> 
2092    <h4 class="jd-details-title">
2093      <span class="normal">
2094        protected 
2095         
2096         
2097         
2098         
2099        HttpURLConnection
2100      </span>
2101      <span class="sympad">post</span>
2102      <span class="normal">(String url, String body)</span>
2103    </h4>
2104      <div class="api-level">
2105        <div></div>
2106        
2107  
2108
2109      </div>
2110    <div class="jd-details-descr">
2111      
2112  <div class="jd-tagdata jd-tagdescr"><p>Make an HTTP post to a given URL.</p></div>
2113  <div class="jd-tagdata">
2114      <h5 class="jd-tagtitle">Returns</h5>
2115      <ul class="nolist"><li>HTTP response.
2116</li></ul>
2117  </div>
2118  <div class="jd-tagdata">
2119      <h5 class="jd-tagtitle">Throws</h5>
2120      <table class="jd-tagtable">  
2121        <tr>
2122            <th>IOException</td>
2123            <td></td>
2124        </tr>
2125      </table>
2126  </div>
2127
2128    </div>
2129</div>
2130
2131
2132
2133
2134
2135<!-- ========= END OF CLASS DATA ========= -->
2136<A NAME="navbar_top"></A>
2137
2138
2139<div id="footer" class="wrap" >
2140        
2141
2142  <div id="copyright">
2143    
2144  Except as noted, this content is licensed under <a
2145  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>. 
2146  For details and restrictions, see the <a href="/license.html">
2147  Content License</a>.
2148  </div>
2149  <div id="build_info">
2150    
2151<script src="/timestamp.js" type="text/javascript"></script>
2152<script>document.write(BUILD_TIMESTAMP)</script>
2153
2154  </div>
2155
2156
2157  <div id="footerlinks">
2158    
2159  <p>
2160    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
2161    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
2162    <a href="/support.html">Support</a>
2163  </p>
2164  </div>
2165
2166</div> <!-- end footer -->
2167
2168</div> <!-- jd-content -->
2169
2170</div><!-- end doc-content -->
2171
2172</div> <!-- end body-content --> 
2173
2174
2175
2176
2177
2178
2179</body>
2180</html>
2181