Googleはプッシュ通知機能をどのように実装しましたか?バックグラウンドまたは別の方法で実行されているサービスによって行われるポーリングを通じて機能しますか?
Googleはプッシュ通知機能をどのように実装しましたか?バックグラウンドまたは別の方法で実行されているサービスによって行われるポーリングを通じて機能しますか?
回答:
イスラエルでのAndroid開発者会議で聞いた情報から:
クラウドのGoogleサーバーでは、TCPソケットが受け入れモードで待機しているだけです。TCP接続は、Google Playアプリケーションによって開始されました。そのため、Google Cloud Messaging(GCM)(以前のAndroid Cloud to Device Messaging Service- C2DM)を機能させるには、デバイスにGoogle Playをインストールする必要があります。
このTCPクライアントソケットがメッセージを受信すると、メッセージには、宛先のアプリケーションのパッケージ名や、もちろんデータ自体などの情報が含まれます。このデータは解析され、インテントにパッキングされてブロードキャストされ、最終的にアプリケーションによって受信されます。
デバイスの無線状態が「アイドル」モードになっても、TCPソケットは開いたままです。インテントを受信するためにアプリケーションが実行されている必要はありません。
詳細については、http://developer.android.com/google/gcm/gcm.htmlをご覧ください
AndroidはGoogleのサーバーへのアクティブな接続を1つ維持しますが、何かがGoogleクラウドメッセージング(GCM)メッセージを携帯電話のアプリに送信するまでトラフィックが送信されないため、電力やデータをあまり使用しません。電話での接続は1つだけで、すべてのアプリで使用されます。GCMを使用する新しいアプリをインストールしても、余分な負荷はかかりません。
GCMの最初のステップは、サードパーティのサーバー(メールサーバーなど)がリクエストをGoogleのGCMサーバーに送信することです。このサーバーは、開いている接続を介してデバイスにメッセージを送信します。Androidシステムはメッセージを見て、それが目的のアプリを判別し、そのアプリを起動します。GCMを使用するには、アプリがAndroidに登録されている必要があり、関連する権限が必要です。アプリが起動すると、メッセージのデータを含む通知がすぐに作成される場合があります。GCMメッセージのサイズは非常に限られているため、アプリは代わりにサードパーティサーバーへの通常の接続を開いて、詳細情報(新しいメールのヘッダーのダウンロードなど)を取得する場合があります。
プッシュ通知を使用する利点は、アプリが定期的に実行して新しいデータを確認する必要がないため、電力とデータの両方を節約できることです。GCMのような一元化されたメカニズムの利点は、デバイスが開いているネットワーク接続を1つだけ必要とし、Android GCMシステムは、独自のネットワークを維持するためにバックグラウンドで実行し続ける必要があるのではなく、実行し続ける必要がある唯一のことです。独自のサーバーへの接続。
2018年4月10日をもって、GoogleはGCMを廃止しました。GCMサーバーとクライアントAPIはサポートが終了しており、2019年4月11日をもって削除されます。GCMアプリをFirebase Cloud Messaging(FCM)に移行してください。
Androidデバイスでは、プッシュ通知を受け取ると、送信者アプリケーションの画像とメッセージがステータスバーに表示されます。まさにクライアントが通知をタップすると、彼/彼女はアプリケーションに到達します。