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 | <a href="#lfields">Fields</a> 623 624 625 626 627 | <a href="#pubctors">Ctors</a> 628 629 630 631 632 | <a href="#pubmethods">Methods</a> 633 634 635 636 | <a href="#promethods">Protected Methods</a> 637 638 639 640 | <a href="#inhmethods">Inherited Methods</a> 641 642| <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"> ↳</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<String> 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<String> 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<String, String></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<?></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<String> 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<String> 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<String, String> 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> | 2161 <a href="/legal.html">Legal</a> | 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