私はモバイルアプリで信頼性の高いコミュニケーションを構築したいので、サードパーティのプッシュサービス(C2DM、APN、都市飛行船)のプッシュレポート(おそらくデバイスはオフラインです)をプッシュできますか? または自分でそれを構築する必要がありますか?どのように信頼性の高いプッシュメッセージサービスを達成するには?
答えて
Android C2DMの目的は、サーバアプリケーションがモバイルデバイスに信頼性の高い通信を開始するように通知するバッテリを節約する方法です。
新しいC2DMには、サーバーとの最後の双方向のやりとり(つまり、「取得したものを取得して取得する」)以降に発生したすべてのメッセージが含まれるようにメッセージを構成できます。失敗した配信レポートは、モバイルデバイスが即座に応答しないことを暗示しています(これは、C2DMがインテントを使用してアプリをアクティブにしていることを示しているためです)。
これは、損失の大きいメディアでの各メッセージの保証配信よりも実際には悪いことですか?さて、プライマリ通信方式を実装する必要があるという点で、さらに悪いことです。しかし、C2DMは着信専用なので、とにかくやらなければなりませんでした。
私はプッシュ通知IBM MQTTプロトコルを提案しています。これはプッシュ通知に十分です。 デモを見るhttps://github.com/tokudu/AndroidPushNotificationsDemo
お返事ありがとうございます!最初にあなたの答えを確認してください。 –
Vinayが言っているように、MQTTはあなたに望む機能を提供するかもしれません。クライアントがサーバーに接続すると、サーバーに「last will and testament」メッセージを登録できます。クライアントが予期せず切断された場合、サーバーは指示されたトピックにこのメッセージを送信します。
このスキームでは、クライアントは、クライアント//ステータスのようなメッセージに「オンライン」メッセージを送信し、同じトピックのLWTとしてメッセージ「オフライン」を登録できます。次に、トピックのクライアント/ +/statusを聞いたサーバーローカルクライアントを持つことができ、どのクライアントがオンラインでオフラインであるかを知ることができます。
私はtokuduのデモは、見て最適な場所ではないことをお勧めします。デール・レーンによるこのブログ記事は、Android上でMQTTを使用しての洞察を与える:http://dalelane.co.uk/blog/?p=1599とIOSとAndroidの両方を合わせてクライアントの実装がありますhttp://stephendnicholas.com/archives/219
で(再Android上)MQTTの電力使用量の見直しがあり、参照http://mqtt.org/software
お返事ありがとうございます!最初にあなたの答えを確認してください。 –
そしてもう一つの電力使用の比較は今回はhttpsです:http://stephendnicholas.com/archives/1217 – ralight
サービスは、失敗したプッシュについてのレポートを提供しません。
失敗プッシュレポートでは、すべてのサービスがすべての状況下でプッシュメッセージを配信することを目的としているAPN/C2DM /ヘリウムを少しSENCE
になります。 現在デバイスがオフラインの場合、デバイスがオンラインになるとプッシュが配信されます。
また、iOSのプッシュメッセージは、アプリケーションの通知ではなく、ユーザーの通知です。
簡単な例で説明します。 アプリケーションの電源を切ってもプッシュが受信されたとします。その場合、ユーザーへの通知が行われます。しかし、アプリケーションがプッシュからデータを受信するのは、ユーザーがその通知をタップした場合だけです。ユーザーがアプリケーションのアイコンをタップすると、データは受信されません。
技術的には、プッシュはiOSデバイスに配信され、アプリケーションは開始されますが、データは配信されません。あなたはプッシュのために、独自のトランスポートを実装するために検討することができAPNとヘリウム
と
UrbanAirhip。 MQTTは良い選択肢のようです。 しかし、この場合、キープアライブ、デバイススリープ、バッテリーの最適化に対処する必要があります。 Apple、Google、UrbanAirshipのエンジニアがすでに頑張っています。
ビジネスニーズに応じて、既存のソリューションにアーキテクチャを適用しやすくし、プッシュサービスを再度実装し直すことができます。
UrbanAirshipを詳しく見てください。実際、C2DMにはいくつかの制限があり、プッシュメッセージの配信タイミングが大きすぎることがあります。そのため、UAは独自の輸送手段、すなわちヘリウムを実装しています。ヘリウムは有料サービスですが、UAは優れたSLAを提供します。
データベースを既知のサブスクライバにプッシュキューを追跡していて、失敗したときにレポートを作成したのと似たようなことをしました。それは非常に単純であり、このような何かを行ってきました...
The schema was like so:
pushMessages
messageID , GUID, PK
message , nvarchar (256),
expires , datetime
messageQueues
subscriberID , GUID, PK
messageID , GUID PK
failedPushMessages
subscriberID, GUID, PK
messageID , GUID PK
(subscriber table omitted)
クライアントが正常にメッセージを受信すると、クライアントはバックプッシュサーバにpingを実行し、それがプッシュで受信したユニークなqueueItemsのIDを経由して、それを通知しますお知らせ。期限切れのプッシュメッセージをチェックする毎日のデータベースプロセスもあります。見つかった場合は、messageIDと一致するqueueMessagesへの結合を行い、その後それらをmessagesQueuesテーブルから削除し、failedPushMessagesテーブルにコピーします。
これは理解して維持するのが非常に簡単でしたが、別の方法で経験した経験はありません。
プッシュサービスは、ユーザーに警告するための効率的で信頼性の高い方法です。バックグラウンドアプリケーションでさえ、リアルタイムで新しい情報をユーザーに知らせることができます。プッシュサービスは、気象の更新、メッセージングサービス、メール通知、クーポンサービスなど、モバイルアプリケーションのさまざまな分野で広く使用されています。プッシュサービスはもはやオプションですが、必須となっています。
- 1. どのように信頼性の高いMicrosoft.Expression.Encoder.MediaItemですか?
- 2. Rubyで信頼性の高い高速ネットワークデーモンを作成するにはどうすればよいですか?
- 3. サービスファブリックWCF通信による信頼性の高いサービス
- 4. MPMoviePlayerContentPreloadDidFinishNotificationはMPMoviePlayerLoadStateDidChangeNotificationよりも信頼性が高いようです
- 5. node.jsのTCPによる信頼性の高いメッセージング
- 6. 信頼性の高い方法は、[]
- 7. UDP信頼性の高いデータサービス実装
- 8. PyS60には信頼性の高いガベージコレクションがありますか?
- 9. MailAddressクラスには信頼性の高いヘッダーが必要です
- 10. シンプルで信頼性の高いネットワークメッセージングを行うにはどうすればいいですか?
- 11. RubyのWebクローラー:どのように最高のパフォーマンスを達成するには?
- 12. PubSub +信頼性のない現在のユーザへの信頼性の高いメッセージ配信
- 13. はどのように信頼性の主要なデスクトップブラウザによって
- 14. Windowsタスクスケジューラより信頼性の高い代替手段
- 15. 信頼性の高い方法で__del__を使用するには?
- 16. シンプルで高速で信頼性の高いデータベース(NoSQL)
- 17. はHTTP部分的な信頼性の高いメカニズムですか?
- 18. UDP上のJgroupはどのように信頼性が高くなりますか?
- 19. 高性能Excel VSTO to SQL Serverを達成するには?
- 20. ファラデー:あなたは信頼性の高いタイムアウト
- 21. ライブオーディオストリーミング用の信頼性の高いスケーラブルなソリューションですか?
- 22. どのようにRSSベースのニュースロールを達成するには?
- 23. Grailsのjsリソースの信頼性の高いリフレッシュ - dev env
- 24. Silverlight 5 MEFを使用した信頼性の高いブラウザーアプリケーション
- 25. WPFコード化UIテスト:デスクトップアイコンの信頼性の高い検索
- 26. MQTT Paho Pythonの信頼性の高い再接続
- 27. iPhone:バルクデバイスの通知の信頼性を高める
- 28. どのようにクラウドでフォールトトレランスを達成するには?
- 29. NamedPipeServerStream/async信頼性の高い切断問題
- 30. F#とSilverlight 5:信頼性の高いブラウザー外?
ありがとう!私はそれが信頼できないプッシュベースのサービスに適していると思います。私はそれぞれの答えを評価し、私のために最高のものを授与します。 –