ç§ãã¡ã¯iPhoneã®éçºããå§ããŸããããã¹ãŠãã¹ã ãŒãºã«æ©èœããã¯ãã§ããã
äœãããŸããããŸãããïŒ ã¢ããªã±ãŒã·ã§ã³ã®äž»ãªã¿ã¹ã¯ã¯ããWhere are youïŒããšãããªã¯ãšã¹ããéä¿¡ããããšã§ãã-è€éãªããšã¯äœããããŸããã ããããç§ã¯æ¬åœã«ãã®ãªã¯ãšã¹ããå¯èœãªéãè¿ éã«åä¿¡è ã«å±ããããšæã£ãŠããŸãã ããã§ã¯ãiPhoneåãã®éçºã®çµéšãããèªè ã¯ã APNãµãŒãã¹ãããã絶察ã«æ£ãããšèšããŸãã ããã䜿çšããã®ã¯ç§ãã¡ã§ãããæ²ãã¿ãç¥ããŸããã§ããããããã®éç¥ã¯1ç§ãããæ©ãé ä¿¡ãããããã§ãã
ãã®åŸãããã€ãã®å éšçãªçç±ã«ãããAndroidéçºã«åãæ¿ããŠããã¹ãŠããã°ãã移æ€ããŸããã ç¹ã«ãäœãèããã«ã APNã¢ãžã¥ãŒã«ã¯C2DMãåããåæ§ã®ã¢ãžã¥ãŒã«ã«çœ®ãæããããŸããã
éçºè ã®ãã¹ãŠã®é»è©±ã§ã®éç¥ã®é ä¿¡ã«åé¡ã¯ãããŸããã§ããã ããããæ°ãããŠãŒã¶ãŒã¯ããã«å€§ããªåé¡ã«çŽé¢ããŸãããéç¥ã®é ä¿¡æéã¯ä¿èšŒãããŠããããæ°æéã§å±ã人ãããŸããã ãããŠãåãããã€ã¹ã§ãæ°ç§ã§å°éããŸããã
ãã®åé¡ã調æ»ããŠãããšãã«ãGoogleããã®ãããã®éç¥ã®æäœã«é¢ããå€ãã®å¥åŠãªæ©èœã«åºäŒããŸããã
ã¹ããŒããã©ã³ãšãµãŒããŒãšã®å®è£ ãããäœã¬ãã«ã®å¯Ÿè©±ã«ç¡é¢å¿ã«èå³ããã人ã¯ããããã®åææ¡ä»¶ãã¹ãããããŠã»ã¯ã·ã§ã³ã4ã Google C2DMã®ä»£æ¿åã§ããã代æ¿åã§ã¯ãããŸãããã
1.éç¥ã䜿çšããã¹ããŒã
ãŸã第äžã«ãã·ã§ã ã«ïŒæå®ã¯GOSTã«ãããã®ã§ã¯ãªããæ確ã«ããããã«éžæãããŠããŸãïŒïŒ
åé¡ãç 究ããã«ã¯ãååç©1ã2ãããã³3ãã©ã®ããã«æ©èœããããç解ããå¿ èŠããããŸãã
- ããã¯ããªã¯ãšã¹ããéä¿¡ãããªãŒãã³HTTPæ¥ç¶ã§ãã ã¢ããªã±ãŒã·ã§ã³ã¯ãµãŒããŒã«200 OKã®ã¿ãæåŸ ããæ®ãã¯éèŠã§ã¯ãããŸããã ããã«ã®åºãéšåããããŸã-ãããŸã§ã®ãšãããŠãŒã¶ãŒã¯ã»ãšãã©ãªãããªã¯ãšã¹ããéä¿¡ããŸããïŒã¢ã¯ãã£ããªäœæ¥äžã«60-100ã¡ãã»ãŒãž/ç§ïŒã
- ãµãŒããŒã¯ã HTTPãä»ããŠãã®æ¥ç¶ãGoogleã®ãµãŒããŒã«éããŸãã ãã®å Žåã2ã€ã®é£ç¶ããæ¥ç¶ãäœæããå¿ èŠããããŸããæåã«ãæšå¥šãããã¡ãœããã§ããClientLoginã«ããèªèšŒã次ã«android.clients.google.com/c2dm/sendãžã®ãªã¯ãšã¹ãã§ãã 圌ããæåã«åé¡ãæ¢ãå§ããã®ã¯ããã§ãã
- æåŸã«ããã®æ¥ç¶ã¯GoogleèªäœãšAndroidã¹ããŒããã©ã³ãä¿æããŸãã
2. C2DMãžã®ãªã¯ãšã¹ãã«é¢ããåé¡ãæ¢ããŠããŸã
ç§ã¯äž»ã«ãµãŒããŒåŽãéçºããŠããã®ã§ãæåã®ç³ã¯æ¥ç¶çªå·2ã§èµ·ããããåé¡ã®ããã«é£ã³èŸŒãã§ããŸããã äœããããŸãããïŒ
ç§ã®è¬èãªæèŠã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã§C2DMãæ¥ç¶ããæ¹æ³ã®æè¯ã®èª¬æã¯habratopicã«ãããŸããCloudto Device MessagingïŒC2DMïŒããµããŒãããAndroidã¢ããªã±ãŒã·ã§ã³ãäœæããŠããŸãã
ãã®æ¥ç¶èªäœã¯ããã®èšäºã®æšå¥šäºé ã«åŸã£ãŠå®è£ ãããŸãã
GoogleãµãŒããŒã«æ¥ç¶ãããšãã«Connectionãã¿ã€ã ã¢ãŠãããããšããããåææ¥ç¶ã®æ°ãå¶éãããšããèãã«è³ããŸããã èãã¯ééã£ãŠãããããããŸããããé©çšããããœãªã¥ãŒã·ã§ã³ã¯æçšã§ããããšãå€æããŸããã
ãµãŒããŒåŽã¯Javaã§èšè¿°ãããJettyãçµã¿èŸŒãŸããå¥åã®JARãšããŠå®è¡ãããŸãã Spring Frameworkã¯ã»ããã¢ãããšå®è¡ãæ åœããŸããã€ãŸãã C2DMãµãŒããŒãšã®ããåããéåžžã«ç°¡åã«åæ§æã§ããŸããã
ã¹ããã1
ã¯ãšãªã®å®è¡ã«éåææ§ãè¿œå ããŸãã
public class C2DMServer implements IPushNotificator, IPushChecker { ... @Override @Async // public void sendData(String deviceId, String c2dmID, String jsonObject) { ... } }
ãã®ã¹ãããã«ãããã¹ããªãŒã ãGoogleéç¥ãµãŒããŒããã®å¿çãåŸ ããªããããèŠæ±ã¯ã©ã€ã¢ã³ããžã®200 OKå¿çãããã«é«éã«ãªããŸããã
ã¹ããã2
å¶éã«åãããŠãGoogleãžã®åæãªã¯ãšã¹ãã®æ°ãèšå®ããŸãã
å€ãã®ãã¹ããšä¿æ°ã®éžæããããçµæã¯ãã®ãããªSpringèšå®ã«ãªããŸããã
<task:annotation-driven executor="asyncExecutor" /> <task:executor id="asyncExecutor" pool-size="15" queue-capacity="300" rejection-policy="CALLER_RUNS" />
pool-sizeã15ãè¶ ããå€ã«èšå®ãããŠããå Žåããã®åææ¥ç¶æ°ã«ãããããããçš®é¡ã®ãããã¯ãŒã¯ãšã©ãŒãçºçããŸãã
ãŸãšã
å¬ããããš ïŒGoogleãµãŒããŒãžã®æ¥ç¶äžã«ãšã©ãŒã¯ãããããŸããã§ããã
åæº ïŒé ä¿¡é床ã®åé¡ãæ®ããŸããã
3. Androidã§Googleã®ä»äºãæ¢ã
Androidã«ã€ã³ã¹ããŒã«ãããšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã§ããéç¥ã®éä¿¡ã«äœ¿çšããç¹å¥ãªãµãŒãã¹ããèå¥åãèŠæ±ã§ããŸãã
ããã¯ãåºæ¬ã¯ã©ã¹C2DMBaseReceiverããç¶æ¿ããããšã«ããè¡ãããŸãã
åãhabtopopã§ãã®ãããªç¶æ¿ã®äŸãèŠãããšãã§ããŸã.Cloud to Device MessagingïŒC2DMïŒããµããŒãããAndroidã¢ããªã±ãŒã·ã§ã³ãäœæããŠããŸã ã ããã¯ç§ã®ããã«ä¿®æ£ãããå®è£ ã§ãïŒ
import com.google.android.c2dm.C2DMBaseReceiver; public class C2DMReceiver extends C2DMBaseReceiver { private static final String DATA = "data"; public C2DMReceiver() { super(Settings.C2DM_ACCOUNT); } @Override public void onDestroy() { super.onDestroy(); } @Override public void onError(Context context, String errorId) { Settings.Init(context, false); Settings.updateC2DM(null); } @Override protected void onMessage(Context context, Intent receiveIntent) { Settings.Init(context, false); String data = receiveIntent.getStringExtra(DATA); JSONUtils.processJSON(context, data); } @Override public void onRegistered(Context context, String registrationId) { Settings.Init(context, false); if (!registrationId.equals(Settings.getC2dm_id())) Settings.updateC2DM(registrationId); } @Override public void onUnregistered(Context context) { } }
ããã§ãèšå®ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãæ ŒçŽããããã®éçãã£ãŒã«ããšã¡ãœããã®æãæã€ãã«ããŒã¯ã©ã¹ã§ãã JSONUtilsã¯ãJSONã解æãããã¹ãŠã®ããŒã¿ãèšå®ã«ä¿åããå¥ã®ãã«ããŒã¯ã©ã¹ã§ãã
ç解ããããšãéèŠãªã®ã¯ãèå¥åãåãåã£ãç¬éãå®çŸ©ãããŠããªãããšã§ãã å®éããã®ã¯ã©ã¹ã§ã¯ã C2DMèå¥åãåä¿¡ããã€ãã³ãããã åŸ ã£ãŠããã ãã§ãããçè«çã«ã¯ãããªã¬ãŒããããšãã«ãããã«èå¥åããµãŒããŒã«è»¢éããå¿ èŠããããŸãã
ãã®ãããªèå¥åã®äŸïŒÂ«APA91bF8hral5wCq_E7HPD1wq29aSIEYyY2g_P4BOue_CaBTJvTHKFPplmp2MHxFgn3c1ysNjTHyXmsp8OejRSc809ZiOYqNcXoJWiWfvarCayT6ar3RyZwRRV0CrgQNaPjLxTrYqXXcQfcxjB07xmjeNtUzc6UlGQ»ã
ãã®åŸããã®èå¥åãæã€C2DMãµãŒããŒãžã®ã¡ãã»ãŒãžã¯ãç®çã®ããã€ã¹ãšã¢ããªã±ãŒã·ã§ã³ã«é ä¿¡ãããå¿ èŠããããŸãã
ãããã®ã¡ãã»ãŒãžãã©ã®ããã«é ä¿¡ãããããèŠãŠã¿ãŸããã
ãã¹ãŠã®äžå¿ã«ããã®ã¯ãã¯ã©ãŠãããããã€ã¹ãžã®ã¡ãã»ãŒãžã³ã°ã§ãã
èå³æ·±ãããšã«ãåé¡ã®ããããã€ã¹ã§ã¯ããã®ãµãŒãã¹ãã¡ã¢ãªããã¢ã³ããŒããããããšããããŸããã ããã¯ã OSããã¯ãååŸãããAndroidããªãœãŒã¹ãå¿ èŠãšãããšãã«ãªãã«ãªãå¯èœæ§ãããããšãæå³ããŸãã ãã®ãµãŒãã¹ã¯ãGTalkãäŸåããGoogleã¡ãã»ãŒãžã³ã°ãµãŒãã¹ã亀æãããã³ã«ã®ã³ã¢ãšããŠäœ¿çšããŸãã ããã¯ã C2DMãããã³ã«ãGTalkã亀æããXMPPãããã³ã«ã«ã«ãã»ã«åãããŠããããã§ãã ãã®ãã£ãã«ã§ã¯ã300ç§ããšã«1åã C2DMãµãŒãã¹ã¯PingãGoogleãµãŒããŒã«éä¿¡ããAckãåŸ æ©ããŠãæ¥ç¶ãæ£åžžã§ããããšã確èªããŸãã 詳现ã«ã€ããŠã¯ããã®ãããªã®ãœãŒã¹ãåç §ããŠãã ããã
ãã¡ãããµãŒãã¹ã§ã¯ããã¹ãŠãããã»ã©æ²ãããããŸããã éç¥ãµãŒãã¹ã¯ãåžžã«ã§ã¯ãããŸãããããããã¯ãŒã¯ã®ç¶æ ãå€åãããšããããã³ç»é¢ããªã³ã«ãªã£ããšãã«å埩ã§ããŸãã
æ¥ç¶ã®ç¶æ ã確èªããã«ã¯ã
*#*#8255#*#*
ããã€ã€ã«ããéããGTalkãµãŒãã¹ã¢ãã¿ãŒã§ãGoogleã¡ãã»ãŒãžã³ã°ãä»ããŠäº€æãããã¢ããªã±ãŒã·ã§ã³ã確èªããŸãã
ãã®ãããåé¡ã®äžéšãç¹å®ãããŸãããã解決çã¯ãããŸããã§ããã
ãªãæ£ç¢ºã«éšåãªã®ãïŒ ãšã«ããããµãŒãã¹ãå®è¡ããŠãéç¥ãå±ããªãããã§ãã ããæéïŒ20ã40åïŒåŸã«ããã¹ãŠã®ããã€ã¹ãåæã«ç°ãªãæéã«éä¿¡ãããéç¥ãåä¿¡ãããšãã«ãéç¥ã®æ³¢ãæã ãã£ãã
ãã®çµæãããã¥ã¡ã³ããå€ãã®ãã©ãŒã©ã ãQïŒAãèªãã§èããåŸããã¹ãŠã1ã€ã®ããšã«åæããŸããã代ããã®éç¥ãã£ãã«ãäœæããŸãã
4. Google C2DMã®ä»£æ¿ ããã ã代æ¿ã§ã¯ãªã
äž»ãªè³ªåïŒå®å®ãããµãŒããŒ/ã¯ã©ã€ã¢ã³ããã£ãã«ãæ§ç¯ããæ¹æ³ã¯ïŒ
å¯æ¬¡çãªè³ªåïŒãã®ãã£ã³ãã«ã§ãŠãŒã¶ãŒã®ããããªãŒå šäœãé£ã¹ãªãããã«ããæ¹æ³ã¯ïŒ
ã€ã³ã¹ãã¬ãŒã·ã§ã³ã®æºã¯http://code.google.com/p/android-random/ã®äŸã§ããã
ç¹ã«ãäŸã¯KeepAliveServiceã§ãã
æåã®ã¢ã€ãã¢ã¯ãæ£é¢ããã®ãœãªã¥ãŒã·ã§ã³ã§ããnç§ã«1åããµãŒããŒãžã®æ¥ç¶ãéããéç¥ã確èªããŸãã
ãé »ç¹ã«ãµãŒããŒãç §äŒããããšãããã®æ£é¢ããã®ãœãªã¥ãŒã·ã§ã³ã®ä»£ããã«ãèè ã¯ããåççãªãªãã·ã§ã³ãææ¡ããŸãããããã¯äžçš®ã®ããã¯ã®ããã«èŠããŸãã
ææ¡ããããœãªã¥ãŒã·ã§ã³ã®ãããïŒ
- ãµãŒããŒãžã®æ¥ç¶ã¯åžžã«ç¶æããå¿ èŠããããééã眮ããŠåæ¥ç¶ããªãã§ãã ããã
- nç§ïŒn> 60ïŒããšã«ãäœããéä¿¡ããŠæ¥ç¶ã®ç¶æ ã確èªããå£ããŠããå Žåã«ã®ã¿åæ¥ç¶ããŸãã
- ãµãŒããŒæ¥ç¶ã§ããããã³ã°èªã¿åãã䜿çšããŸãã
ã¯ã©ã€ã¢ã³ãéç¥ãµãŒããŒãæäœããããã®ããŸããŸãªãªãã·ã§ã³ããã¹ãããŸããã
2ã€ã®ã¯ã©ã€ã¢ã³ããäœæãããŸããã
- nç§ã«1åéããäœããçŸãããã©ãããèªã¿ãŸããã ãã¹ãã§å€åããã®ã¯nã§ãã
- æ°žç¶çãªæ¥ç¶ãéãã60ç§ããšã«ç¢ºèªããŸããã ã©ã€ãã¿ã€ã ã®éããç¥ãããã«ãããã€ã¹ã¯ããŸããŸã§ããã
æåã®ã¯ã©ã€ã¢ã³ããç¬ç«ããŠå®è£ ããããšã¯é£ãããããŸããã 2çªç®ã®ãã¹ãŠã®åŸ®åŠãªç¹ã¯ãã¢ãŒã«ã€ãã§èŠãããšãã§ããŸã ã ããã«ã¯ã2çªç®ã®ã¿ã€ãã®Androidã¯ã©ã€ã¢ã³ããšæ¥ç¶ããµããŒããããµãŒããŒãå«ãŸããã¯ã©ã€ã¢ã³ãã®ãã¹ãŠã®ããŒãã¢ã©ã€ãã¡ãã»ãŒãžããã°ã«è¡šç€ºããã©ã³ãã ãªç解ã«åŸã£ãŠ1åã«1åã¯ã©ã€ã¢ã³ãã«éç¥ãéä¿¡ããŸãã android-maven-pluginãæ¥ç¶ãããç¶æ ã§ããã¹ãŠãMavenã«ãã£ãŠåéãããŸãã
顧客1 | ã¯ã©ã€ã¢ã³ã2 | ||||||
è£ çœ® | 欲æ | 欲æ | 欲æ | 欲æ | 欲æ | å±±ç«äº | 欲æs |
ãã¹ãæéïŒåïŒ | 540 | 1273 | 845 | 962 | 1117 | 1180 | 1121 |
ãŠãããæ¶è²» | 82 | 87 | 31 | 9 | 39 | 80 | 49 |
æ°ç§ã§ããŒãã¢ã©ã€ã | 10 | 30 | 60 | 60 | 60 | 60 | 60 |
ã€ã³ã¿ãŒãããæ¥ç¶ | 3G | 3G | 3G | Wifi | 3G | 3G | 3G |
èšç®ãããæŸé»çïŒe.z./hïŒ | 10 | 4.28 | 2.22 | 0.56 | 2.22 | 4.28 | 3 |
ããã€ãã®çµæãããã«æããã«ãªããŸãã
- å°ãªããšãæ¥ç¶ãéãããŸãŸã«ããŠãæ¥ç¶ãåéããŸãããããããªãŒã®èŠ³ç¹ããã¯åé¡ã§ã¯ãããŸããã
- 3Gã¯WiFiãããäœåãéãããããªãŒãçãããŸãã
- æé©ãªããŒãªã³ã°æéã¯60ç§ã§ãã
ç§ãã¡ã«ãšã£ãŠæãéèŠãªã®ã¯æåã®çµæã§ãã ãã®ããšãããæ©èœã«å¿ããŠ2ã€ã®ã¯ã©ã€ã¢ã³ãããéžæããå¿ èŠããããŸãã åæ¥ç¶ã¯ã©ã€ã¢ã³ãïŒNo. 1ïŒã®å Žåãéç¥ã¯æå®ãããæ€èšŒééã§1åã ãéä¿¡ãããŸãã æ¥ç¶ããµããŒãããã¯ã©ã€ã¢ã³ãïŒNo. 2ïŒã¯ããµãŒããŒãéããŠããæ¥ç¶ã«æžã蟌ããšãã«éç¥ãåãåããŸãã ããã«ãå°æ¥ãèŠæ®ããŠããµãŒããŒããã®ã¡ãã»ãŒãžãéããŠããæ¥ç¶ã«å°éãããšãç ãããã€ã¹ã§ããèµ·åãããšèšããŸãã
TCPæ¥ç¶ã®æµå ¥ã«èããããã«ã次ã®ã¢ãŒããã¯ãã£ãæ§ç¯ããŸããã
éç¥ãµãŒããŒã¯ã2ã€ã®ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
- ã«ãŒã¿ãŒ-æ¥ç¶ãããããã€ã¹ãç»é²ããæ¥ç¶ãç¶æãããµãŒããŒã®ã¢ãã¬ã¹ãšããŒããæäŸããŸãã ããã«ã圌ã¯éç¥ãéä¿¡ããããã®ãã¹ãŠã®èŠæ±ãç®çã®éç¥ãµãŒããŒã«ã«ãŒãã£ã³ã°ããŸãã
- éç¥ãµãŒããŒèªäœ-æ¥ç¶ãç¶æããããã€ã¹ããããŒãã¢ã©ã€ããæ£åžžã«åä¿¡ããããšãã«ãŒã¿ãŒã«éç¥ããã«ãŒã¿ãŒãåŒã³åºããå Žåã«éç¥ãéä¿¡ããŸãã
ã¯ã©ã€ã¢ã³ããšã®ãã¹ãŠã®å¯Ÿè©±ã¯ãçŽç²ãªTCPã§è¡ãããŸã ã éç¥èªäœã®ãµã€ãºãšå 容ã¯ä»»æã§ãããã¢ããªã±ãŒã·ã§ã³ã®è² è·ã軜æžããããã«ãæ£ç¢ºã«1ãã€ãã®ã1ããéä¿¡ããŸãã
ãµãŒããŒã³ã³ããŒãã³ãéã§ãSpring Remotingã䜿çšãããšã RMIæ¥ç¶ãå¢å ããŸãã
ã¯ã©ã€ã¢ã³ãåŽã®ããžãã¯ã段éçã«èŠãŠã¿ãŸãããã
- éç¥ãµãŒããŒã«æ¥ç¶ãããšãã¯ã©ã€ã¢ã³ãã¯äžæã®èå¥åãå ±åããŸã ãç§ã®å Žåã¯ãåãªãGUIDã§ãã
- ããã«å¿ããŠã圌ã¯æ¥ç¶ãéããŠç¶æããã¢ãã¬ã¹ãšããŒããåãåããŸãã
- ãœã±ãããéããåŸãã¯ã©ã€ã¢ã³ãã¯èªã¿åãã¿ã€ã ã¢ãŠããèšå®ããã«èªã¿åãããããã¯ããŸãã
- AlarmManagerã䜿çšããŠãã¯ã©ã€ã¢ã³ãã¯60ç§ããšã«èµ·åãã GUIDã䜿çšããŠã¡ãã»ãŒãžãéããŠããæ¥ç¶ã«éä¿¡ããŸãã ãã®ããããµãŒããŒã¯ã©ã®çš®é¡ã®ã¯ã©ã€ã¢ã³ãããŸã çããŠããããèŠã€ããŸãã
- æ¥ç¶ãåæããããšãã¯ã©ã€ã¢ã³ãã¯ã€ã³ã¿ãŒããããžã®ã¢ã¯ã»ã¹ã確èªããå¯èœãªå Žåã¯åæ¥ç¶ããŸãã
- readãããŒã¿ãè¿ããå Žåãéç¥ãå°çããã¢ããªã±ãŒã·ã§ã³ããžãã¯ã®æ®ãã«å ±åãããã¯ã©ã€ã¢ã³ãã¯åã³èªã¿èŸŒã¿ããããã¯ããŸãã
AlarmManagerã®æäœã¯éåžžã«ç°¡åã§ãã
// , Intent i = new Intent(this, NotificationService.class).setAction(ACTION_KEEPALIVE); PendingIntent pi = PendingIntent.getService(this, 0, i, 0); // AlarmManager- AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE); alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + KEEP_ALIVE_INTERVAL, KEEP_ALIVE_INTERVAL, pi);
ããã¥ã¡ã³ãã®è©³çŽ°ã
å®è£ ã®çµæãšåé¡ããŸãã¯C2DMãå®å šã«æŸæ£ããããšãäžå¯èœãªçç±
- æãããæ倧ã«ããããã«ããã¹ãŠã®éç¥ãµãŒããŒã¯ãã¡ã€ã«ãŸãã¯ããŒã¿ããŒã¹ã®ããããšãæ©èœããŸããã ãããã£ãŠãæåã®çµæïŒéç¥ãå±ããªãã£ãå Žåãå±ããŸããã
- éç¥ãµãŒããŒã¯ãã«ãŒã¿ãŒå ã®ããŒã¿ã«ã€ããŠäœãç¥ããŸããã 2çªç®ã®çµæïŒã¯ã©ã€ã¢ã³ãã¯ã«ãŒã¿ãŒã«åŸãå¿ èŠããªããæå®ãããã¢ãã¬ã¹ãšããŒãã«æ£ç¢ºã«ç§»åããå¿ èŠããããŸãããã€ãŸããã¯ã©ã€ã¢ã³ãã¯1ã€ã®éç¥ãµãŒããŒã«æ»æãä»æããä»ã®ãµãŒããŒã¯ã¢ã€ãã«ç¶æ ã«ãªããŸãã
- ã«ãŒã¿ã¯ãããŒãã¢ã©ã€ããã¯ã©ã€ã¢ã³ããããã€æ¥ãããèšæ¶ããŸãã æçšãª3çªç®ã®çµæïŒã«ãŒã¿ãŒã¯ãã®æ å ±ãå€éšã·ã¹ãã ã«äŒããããšãã§ãããã®æ å ±ã¯åºæ¬çã«èª°ãçŸåšãªã³ã©ã€ã³ã«ãªã£ãŠãããã®èšé²ã§ãã
- ã«ãŒã¿ãŒã¯ãã¯ã©ã€ã¢ã³ããããŒãã¢ã©ã€ããéä¿¡ããéç¥ãµãŒããŒãèšæ¶ããŠããŸãã 4çªç®ã®çµæïŒã¯ã©ã€ã¢ã³ããééã£ããµãŒããŒã«æ¥ç¶ããå Žåã§ããã«ãŒã¿ãŒã¯ãã¹ãŠã®ãµãŒããŒã«ãã®ãã±ãããéä¿¡ãã代ããã«ãã©ã®éç¥ãµãŒããŒãä»ããŠãã±ãããéä¿¡ããããèªèããŸãã
5.çµè«
ãèªå°å¿ã®ããã¹ããŒããã©ã³ããã°ã©ãã¯ãéç¥ãµãŒãã¹ã®ç¬èªã®å®è£ ãäœæããå¿ èŠããããŸãã-ããã¯ãç§ã®ä»äºã®çµæãåè«ã§èª¬æããæ¹æ³ã§ãã
ãããããžã§ãŒã¯ã«ãããããããäžèšã®éç¥ãµãŒãã¹ã¯Appleãšåãé床ãšã»ãŒåãå®å®æ§ã§åäœããŸãããããã¯åã°ããããšã§ãããéçºè ãéåžžã«å¿é ããããã€ã¹ã®å¯¿åœã¯ããã»ã©ççž®ãããŸããã
6.䟿å©ãªãªã³ã¯
é©åãªéç¥é ä¿¡ãå®è£ ããæ¹æ³ã«ã€ããŠã®èã
Google C2DMæ¥ç¶ããã¥ã¡ã³ã
HabratopikãCloud to Device MessagingïŒC2DMïŒããµããŒãããAndroidçšã¢ããªã±ãŒã·ã§ã³ãäœæããŠããŸãã
C2DMããã®ä»ã® é床ã«é¢ããèŠæ -ãã€ãã圌ãã®äžã«ãäžæ³ïŒ ãã¹ãŠããŸããããŸããïŒã