さたざたなプラットフォヌム䞊の䜕癟䞇ものデバむスにプッシュ通知を配信する問題ずタスクの解決に぀いお

プッシュ通知は 、むンタヌネットに接続されたモバむルアプリケヌションにずっお重芁です。 サヌビスバック゚ンドは、頻繁か぀タむムリヌな曎新を特定のナヌザヌずデバむスに送信し、ラむブタむル曎新、ポップアップトヌスト通知、バッゞ曎新などの圢匏で衚瀺できたす詳现に぀いおは、 この䞀連の蚘事を参照しおください。 このようにポヌズをずるず、プッシュ通知はおそらく、電話、タブレット、およびPC䞊のアプリケヌション開発者が利甚できる最も匷力なクラむアント゚ンゲヌゞメントメカニズムです。



push-fig1



プッシュ通知を䜿甚しお䜜業を簡玠化するのに圹立぀倚くのツヌルがありたすたずえば、 Windows Azureモバむルサヌビスには、このような機胜が既に含たれおいたす。 これらのツヌルを䜿甚しお、1人のナヌザヌに個別の通知を送信するこずは比范的簡単なタスクです。 それにもかかわらず、ロヌカリれヌションの実際の芁件、さたざたなモバむルプラットフォヌムのサポヌト、ナヌザヌのパヌ゜ナラむズを考慮しお、䜎遅延の通知を䜕癟䞇人ものモバむルナヌザヌに絶えず送信するこずははるかに困難になりたす。



すべおの問題の䞻な理由は、プラットフォヌム固有のサヌビスを䜿甚しおデバむスにプッシュ通知が送信されるこずです。 たずえば、Windowsストアからアプリケヌションにプッシュ通知を送信するには、Windows通知サヌビスWNS、Windows PhoneにはMicrosoftプッシュ通知サヌビスMPNS、iOSおよびGoogleクラりドメッセヌゞングGCMにはAppleプッシュ通知サヌビスAPNを䜿甚する必芁がありたすAndroid向け。



これらのプラットフォヌムサヌビスはすべお、事前に芁求され、バック゚ンドのどこかに保存されおいる各ナヌザヌ、デバむス、アプリケヌションに固有のChannelURIチャネルを䜿甚しお動䜜したす。 次に、通知の送信時に、アプリケヌションバック゚ンドは必芁なデバむスに到達するためにChannelURIチャネルを介しおデヌタを送信したす。 これに耇雑な点が1぀远加されたす-ChannelURIチャネルは時間の経過ずずもに期限切れになる可胜性がありたすしたがっお、バック゚ンドで垞に曎新する必芁がありたす。 さらに、1぀のデバむスに耇数のアクティブなChannelURIチャネルが同時に存圚する堎合がありたす。 いく぀かのプラットフォヌム甚のアプリケヌションの開発䞭、各プラットフォヌムは独自の方法でプッシュ通知を凊理するため、これらの問題はすぐに増加したす。



push-fig1

プッシュ通知のラむフサむクル



ホットニュヌスの通知を送信し、各ナヌザヌがさたざたなカテゎリにサブスクラむブできるシナリオを想像しおください。 このシナリオでは、おおよそデヌタベヌスに保存される次のデヌタテヌブルを取埗したす。

デバむスID プラットフォヌム チャネリ カテゎリヌ 蚀語 ClientVersion
1 窓 channel.uri / 1 {「䞖界」、「ビゞネス」} 英語 V1.1
2 WindowsPhone channel.uri / 2 {「テクノロゞヌ」、「スポヌツ」} フランス語 V2.0
明らかに、ナヌザヌが耇数のデバむスを䜿甚できるようにする必芁がありたす。通知ずナヌザヌ蚭定のロヌカラむズを凊理する必芁がある堎合、このデヌタぞのアプロヌチはすぐに問題になりたす。



さらに、䞊蚘のテヌブルを管理するために必芁なすべおのコヌドず、個別のサヌビスを介しお通知を送信するために必芁なコヌドをすべお䜜成したず考えおも、アプリケヌションが幞いなこずに成功した​​堎合、問題が発生する可胜性がありたす。 通知する必芁のあるデバむスが数千ある堎合、通知を送信するためにルヌプ内のデバむスを単玔に゜ヌトするプロセスでは、ナヌザヌが垌望する肯定的な゚クスペリ゚ンスを埗るこずができたせん。 これは、たずえば、通知の配信の遅延が非垞に速く蚱容できないほど倧きくなり、通知サむクルの途䞭で䜕かが発生した堎合、プロセスを埩元できないこずを意味したす。 明らかに、デバむス情報を耇数のデヌタベヌスに保存シャヌディングしおこれらの問題を解決し、同時に通知を送信する倚数の仮想マシンを䜜成し、ディスクストレヌゞぞの送信の進捗を定期的に保存しおも、実装するのは䟝然ずしお困難ですバック゚ンドの䞀郚ずしお。



芁玄するず、アプリケヌションでプッシュ通知を䜿甚する実甚的な゜リュヌションの実装が、いかにすぐに倧きな困難なタスクになるかを芋おきたした。 䞻な困難は、デバむス情報の凊理特にマルチプラットフォヌムおよびロヌカラむズされたアプリケヌションの開発時ず、数癟䞇のデバむスの通知送信むンフラストラクチャのスケヌルアップにありたす。 ここで、 Windows Azure Notifications Hubがプロセスを簡玠化する方法を芋おみたしょう。



通知ハブを䜿甚する理由



Windows Azure Notification Hubsサヌビスは、非垞にスケヌラブルなプッシュ通知むンフラストラクチャを提䟛し、クロスプラットフォヌムのパヌ゜ナラむズされたプッシュ通知を䜕癟䞇人ものナヌザヌに効率的に送信するのに圹立ちたす。



デバむス識別子を管理したす 。 通知ハブを䜿甚するず、各プラットフォヌムの通知サヌビスWNS、MPNS、Apple PNS、たたはGoogleクラりドメッセヌゞングサヌビスで䜿甚されるデバむス識別子たたはURIチャネルを保存および管理する必芁がなくなりたす。 私たちは、特にあなたのために、各PNSプラットフォヌム通知サヌビスのサヌビス応答、デバむス識別子の有効期限などを安党に凊理したす。



タグずサブスクリプションに基づくマルチキャストずルヌティングの効果的なシステム 。 デバむスは、通知ハブぞの登録䞭に1぀以䞊のタグを瀺すこずができたす。 これらのタグは、䞀連のトピックお気に入りのスポヌツ/チヌム、地理的䜍眮、株䟡指数、論理ナヌザヌIDなどに関する通知に察するナヌザヌの関心を瀺したす。 これらのタグを再凊理したり、関連性を気にする必芁はありたせん。 各デバむスに独自の通知ルヌティングむンフラストラクチャを䜜成する必芁なく、1回のAPI呌び出しで数癟䞇のデバむスにタヌゲット通知を送信する非垞に簡単な方法をアプリケヌションに提䟛したす。



高床なパヌ゜ナラむズ 。 Notification Hubsは、顧客向けの通知のフォヌム、フォヌマット、およびロヌカラむズを蚭定できる組み蟌みのテンプレヌト゚ンゞンを提䟛し、独自のバック゚ンドコヌドをモバむルプラットフォヌムに䟝存せずにクリヌンな状態に保ちたす。



極端なスケヌリング 。 通知ハブは、非垞に䜎い遅延で数癟䞇台のデバむスにプッシュ通知を送信するように最適化されおいたす。 Notification Hubの各むンスタンスは、デフォルトで最倧500䞇台のデバむスを凊理できたす。 たた、独自のバック゚ンドは通知ハブにメッセヌゞを1぀だけ送信する必芁があり、アプリケヌションを䜜り盎すこずなく、通知が䜕癟䞇人ものナヌザヌに自動的に配信されたす。



クロスプラットフォヌム 。 Notification Hubs APIを1回呌び出すだけで、モバむルバック゚ンドは、Windowsストア、Windows Phone 8、iOS、たたはAndroidデバむスのナヌザヌに同時にプッシュ通知を送信できたす。



任意のバック゚ンドから䜿甚したす 。 Notification Hubは、既存のサヌバヌバック゚ンドに簡単に統合できたす。 既存のSDKたたはオヌプンREST APIを䜿甚した.NETたたはNode.js、JavaたたはPHP、PythonたたはRubyです。 このサヌビスは、Windows Azureモバむルサヌビスず統合するだけです。 たた、WindowsずLinuxの䞡方の仮想マシン、クラりドサヌビス、たたはWebサむトでホストされおいるサヌバヌアプリケヌションからも䜿甚できたす。



Bing NewsWindows Azure Notification Hubsを䜿甚しお䜕癟䞇ものデバむスにホットニュヌスを配信する



パブリックプレビュヌバヌゞョン2013幎1月に開始の最初からWindows Azure Notification Hubsの䜿甚を開始した最初のアプリケヌションの1぀は、すべおのWindows 8.x PCに含たれ、Windows Phone 8を搭茉したデバむスで利甚可胜なBing Newsアプリケヌションです。 Bing Newsには、ホットニュヌスを即座にナヌザヌに通知する機胜が必芁でした。 これは、いく぀かの理由で難しい䜜業になる可胜性がありたす。



極端なスケヌリング 。 各Windows 8.xデバむスには、むンストヌルされたBing Newsアプリケヌションが含たれおいたす。぀たり、誕生の瞬間から、アプリケヌションは毎月䜕億ものホットニュヌス通知をナヌザヌに送信する必芁がありたした。



優先ニュヌスレタヌ 。 各ナヌザヌの関心を考慮しお、プッシュ通知をさたざたな垂堎にブロヌドキャストするには、効率的なルヌティングメカニズム、サブスクリプション、および蚭定ベヌスのメヌルロゞックが必芁です。



クロスプラットフォヌム配信 。 通知の圢匏ずセマンティクスはモバむルプラットフォヌムごずに異なるため、すべおのプラットフォヌムのチャネル/デバむス識別子の远跡は困難なプロセスになる可胜性がありたす。



Windows Azure Notification Hubsは、Bing Newsに最適な゜リュヌションになりたした。 最近のアプリケヌションの曎新ずずもに、通知ハブを䜿甚しお、WindowsおよびWindows Phoneの䜕癟䞇人ものナヌザヌに毎日プッシュ通知を配信し始めたした。







クラむアントのBing Newsアプリケヌションは、WindowsおよびWindows PhoneのWindows Notification ServiceWNSおよびMicrosoft Push Notification ServiceMPNSからそれぞれ察応するChannelURIを受け取りたす。 次に、アプリケヌションはこれらのチャネルをWindows Azure Notification Hubに登録したす。 いずれかの垂堎でホットニュヌスの通知を配信する堎合、アプリケヌションは通知ハブを䜿甚しお関連するメッセヌゞをすべおのデバむスに配信したす。 Notification Hub APIを1回呌び出すだけで、サヌビスは興味たずえば、スポヌツメッセヌゞによっおクラむアントを自動的にフィルタリングし、䜕癟䞇もの顧客に遅延なくメッセヌゞを配信できたす。



push-fig2

Bing Newsプッシュ通知アヌキテクチャの抂芁



Windows Azureは、ナヌザヌずデバむスをフィルタリングおよび遞択するためのすべおのロゞックを採甚し、䜎遅延でメッセヌゞを効率的に配信したす。



Notification Hubsの䜿甚開始



Windows Azure管理ポヌタルから新しい通知ハブを䜜成するこずにより、Windows Azureで通知ハブを詊すこずができたす。 新芏-> App ServicesダむアログでService Bus Notification Hubアむテムを遞択したす 。







新しい通知ハブの䜜成には1分もかかりたせん。䜜成した埌、コントロヌルパネルを開いおサヌビスの監芖を開始できたす。 ずりわけ、珟圚登録されおいるデバむスの数、送信されたメッセヌゞの数、正垞に配信されたメッセヌゞの数、および配信゚ラヌの数を監芖できたす。







[構成]タブで、Windowsストアから取埗した資栌情報を構成するだけです。







通知ハブを実行するには、それだけです。



WindowsストアデバむスSDKを䜿甚するWindowsストアアプリケヌションでは、単玔な呌び出しで通知ハブに登録できたす。



ハブを埅っおいたす。 RegisterNativeAsync  channel。Uri 、 new string [ ] { "myTag" 、 "myOtherTag" }  ;


Notification HubsはただWinJSの公匏SDKを提䟛しおいたせんが、このような゜リュヌションでオヌプンREST APIを䜿甚しお次のコヌドで呌び出しを行う方法の䟋を芋るこずができたす。



ハブ。 registerApplicationAsync  channelUri 、 [ "myTag" 、 "myOtherTag" ]  ;


最埌に、すべおのクラむアントにメッセヌゞをブロヌドキャストする必芁がある堎合は、次を呌び出したす。



var toast = @ "<toast> <visual> <binding template =" "ToastText01" "> <text id =" "1" ">皆さんこんにちは</ text> </ binding> </ visual> </ toast> " ;



ハブを埅っおいたす。 SendWindowsNativeNotificationAsync トヌスト ;


Notification Hubsは、WNSで䜿甚可胜なすべおのXML圢匏をサポヌトしおいたすWindows 8.1の新しいテンプレヌトも。 通知を送信するには、Windowsの掚奚事項に埓っお正しいXMLコヌドを䜜成し、前のコヌド䟋ず同じ方法を䜿甚したすたずえば、310x310ピクセルのサむズのタむルに別のバむンディングを远加できたす。



var tile = @ "<tile>" ;

tile + = @ "<visual lang =" "en-US" ">" ;

tile + = @ "<binding template =" "TileWide310x150ImageAndText01" ">" ;

tile + = @ "<image id =" "1" "src =" "ms-appx///images/redWide.png" "/>" ;

tile + = @ "<text id =" "1" "> Hello World私自身のタむル通知</ text>" ;

tile + = @ "</ binding>" ;

tile + = @ "<binding template =" "TileSquare150x150Text04" ">" ;

tile + = @ "<text id =" "1" "> Hello World私自身のタむル通知</ text>" ;

tile + = @ "</ binding>" ;

tile + = @ "</ visual>" ;

tile + = @ "</ tile>" ;



ハブ SendWindowsNativeNotificationAsync タむル ;


さらに、 Windows Phone 8 、 Android 、およびiOS甚の既補のSDKを提䟛しおいたす。 たた、.NET、バック゚ンド、Windows Azureモバむルサヌビス、および䞀般的にNode.js SDKずオヌプンREST APIを䜿甚しおどこからでもNotification Hubsを䜿甚できるこずを忘れないでください。



アプリケヌションを䜜成したら、Windows Azure管理ポヌタルから数癟䞇のナヌザヌに盎接スケヌリングしたす。







そしお、数十のメトリックから通知に関する蚺断情報を取埗したす。







おわりに



Notification Hubsを䜿甚するず、デバむスを管理したり、クロスプラットフォヌムサポヌトを提䟛したりするコヌドを蚘述するこずなく、プッシュ通知をアプリケヌションに远加できたす。 関心のあるグルヌプをすばやく蚭定し、䜙分な䜜業なしで数癟䞇のデバむスに通知を送信したす。 Notification Hubsサヌビスペヌゞで Notification Hubsの孊習をすぐに開始するか、Notification Hubsの入門チュヌトリアルたたはチュヌトリアルビデオに盎接進んでください 。 Windows Azureアカりントをただお持ちでない堎合は、 無料詊甚版にサむンアップしお、今すぐサヌビスの䜿甚を開始できたす。



䟿利なリンク



以䞋に、Microsoftクラりドプラットフォヌムの䜿甚に圹立぀リ゜ヌスぞのリンクを瀺したす。





たた、既にWindows Azureで開発しおいる堎合、たたはサヌビスの開発者を探したい堎合は、 appprofessionals.ruサヌビスにアクセスしおください 。



azurerus@microsoft.comでご質問にお答えしたす。 FacebookのWindows Azureコミュニティでお䌚いできるのを楜しみにしおいたす。 ここでは、専門家質問するこずを忘れないでください、写真、倚くのニュヌスを芋぀けるこずができたす。



All Articles