サーバー開始型のネットワーク使用を最適化する

サーバー プログラムからアプリに送信されるネットワーク トラフィックは、最適化が難しい場合があります。この問題の解決策として、アプリが定期的にサーバーをポーリングして、更新をチェックする方法があります。 しかし、この方法の場合、アプリがデバイスの無線通信を開始する際にネットワーク接続や電力を浪費したにもかかわらず、結局、「利用可能な新しいデータはない」という返答を受け取るだけになる可能性があります。サーバー内に新しいデータがあるときにサーバーからアプリに通知する方法の方がはるかに効率的ですが、これまでは、サーバーから膨大な数のデバイスに通知を送信する方法が簡単には見つかりませんでした。

Google Cloud Messaging(GCM)サービスは、インストール場所を問わずにアプリのインスタンスに通知を送信することで、通信に関する上記の問題を解決します。これにより、ネットワーク効率を高め、消費電力を削減することができます。

このレッスンでは、GCM サービスを適用することで、サーバー開始型アクションのネットワーク使用を削減し、バッテリー消費を抑える方法について説明します。

GCM を使用してサーバーの更新情報を送信する

Google Cloud Messaging(GCM)は、アプリサーバーからアプリに簡単なメッセージを送信する際に使用される軽量なメカニズムです。GCM を使用すると、アプリサーバーは、メッセージ送信メカニズムを使用して、新しいデータが利用可能であることをアプリに通知できます。この方法の場合、利用できる新しいデータがないときには、バックエンド サーバーに対して新しいデータを問い合わせないようにすることで、アプリが実行するネットワーク トラフィックを削減できます。

GCM を使用する例としては、会議でスピーカー セッションをリストアップするアプリがあります。サーバー上でセッションが更新されると、サーバーからアプリに向けて、利用可能な更新データがあることを伝える簡単なメッセージが送信されます。これにより、アプリは、サーバー上に新しいデータがある場合に限り、デバイス上のセッションを更新するようにサーバーに求めることができます。

サーバー上の変更をアプリがポーリングする方法よりも、GCM の方が効率的です。GCM サービスを使用すると、ポーリングで「更新データなし」と返されるだけの場合の不必要な接続がなくなります。また、定期的にネットワーク リクエストを実行して、デバイスの無線通信の電源をオンにすることもなくなります。GCM は多数のアプリで使用できるため、各アプリ内で GCM を使用することで、ネットワーク接続の総数が減り、デバイスの無線通信が頻繁にスリープできるようになります。

GCM の詳細とアプリに実装する方法については、Google Cloud Messaging をご覧ください。

注: GCM を使用する場合、アプリは、メッセージを通常の優先度または高い優先度で送信することができます。 サーバーでは通常、通常の優先度でメッセージを配信するようにしてください。この優先度を使用することで、デバイスが非アクティブで低消費電力の Doze 状態のときに、ウェイクアップするのを防ぐことができます。高い優先度のメッセージを使用するのは、必要不可欠な場合に限るようにしてください。