プッシュもOSごとに変わる?iOSとAndroidのプッシュ通知の違い

Pocket

こんにちは、pLuckyの隅田です。
もうすぐ12月ということでかなり寒くなって来ました。
今年もあと1ヶ月と少し、気合入れていきましょう!

さて、今回は自分の復習も含めてプッシュ通知の仕組みについてまとめてみました。
先週はスタートアップ向けのイベントにいくつか参加させていただいたのですが、
「プッシュ通知ってどうやって送られてるの?」
という質問も受けたので、もう一度勉強してみました。

プッシュ通知ってナニ?
という方は下記を参照していただけると幸いです。

プッシュ通知が送られる仕組み

プッシュ通知の仕組みとしては、アプリのサーバーシステムが外部のサーバーと連携して情報を取得しユーザ側に通知することで、デバイス画面上に情報が表示されます。

サーバー側から情報を押し出すという意味で「プッシュ(Push: 押す)通知」と呼ばれています。
このプッシュ通知に対して、ユーザがサーバーにアクセスするなどの操作を行うことで情報を取得できる方式が「プル(Pull: 引き出す)型通知」と呼ばれます。

iOSとAndroidの違い

iOSとAndroidでは、プッシュ通知の仕組みがそれぞれ異なります。
iOSではAPNs(Apple Push Notification Service)、AndroidではGCM(Google Cloud Messaging)という仕組みが採用されています。

一般的にAndroidのGCMは自由度が高いと言われています。
実装方法次第では、単純なテキストメッセージだけではなく画像や動画なども表示させることが可能になります。
一方でiOSのAPNsでは画像や動画の配信はできませんが、プッシュ通知のサウンドやiPhoneデスクトップでのバッジ*を設定することが可能で、Androidにはない魅力を持っています。
*iPhoneのデスクトップ画面で、アイコンの右上の表示される赤い数字のこと。通知数。

このように、プッシュ通知を配信するためにはそれぞれのOSが採用しているサービスを利用する必要があり、実装方法も変えなければいけません。
iOS、Android両方の違い、特徴を正しく理解することでより効果的でユーザに刺さるプッシュ通知が設計できるでしょう。

APNs(iOS)とは?

先述したように、iOSではAPNsという方式が採用されています。
APNsでは、ユーザがアプリのプッシュ通知を許可するとデバイストークンと呼ばれるデータがサーバへ送信されます。この時ユーザがプッシュ通知を許可しなければ、デバイストークンは取得されません。
デバイストークンとは、他のデバイスと重複することのないデバイス毎に固有な情報で、アプリ開発者はこのデバイストークンを利用して、ユーザのデバイスにプッシュ通知を送ることができます。

デバイストークンはデバイスごとに固有な情報と言いましたが、あくまでデバイスを識別するための情報であり、ユーザの個人情報(氏名、住所、電話番号など)は含んでいません。
アプリ開発者は事前にAppleに申請して証明書を受け取る必要があり、勝手にデバイストークンを利用することができないので、ユーザは個人情報を知られることなくプッシュ通知を受け取ることが可能なのです。

GCM(Andorid)とは?

Androidでは、GCMという方式が採用されています。
GCMもAPNsと同様に、ユーザがアプリからのプッシュ通知を許可すると、まずGCMのサーバーにそのデバイスの情報が送信され、デバイスを特定するためのID発行を申請します。
するとGCMからIDが送られるわけです。このIDはRegistration IDと呼ばれます。そしてこのIDを自社サーバに保管しておくことで、IDに紐付いてプッシュ通知が送れるようになります。

また、Andoridではデバイスから通知を解除することができないので、アプリ開発者がアプリ内で通知を解除できるよう実装しなければいけません。

AndroidのRegistration ID

もう一つiOSとAndroidのプッシュ通知の違いとして、株式会社シロクさんのブログ内では以下のように紹介されています。

iOSのデバイストークンはほぼ変わらないといって良いのに対して、AndroidのレジストレーションIDはよく変動します。

トークンの変化が激しいAndroidでは、1つの端末に対して複数のトークンが紐付いてしまう場合があります。トークンが変化しても古いトークンはしばらく有効ですので、サーバに複数のトークンを保持してしまうと多重送信が置きてしまうので、適切に処理してやる必要があります。

GCMにはそのための機構も用意されていて、プッシュ通知を送信したレスポンスにトークンが変化した旨と、新しいトークンが返送されます。これを元に、データベースを更新することで多重送信を制御することができます。

– 「三度の飯とエレクトロン」より –

まとめ

それぞれのOS毎にプッシュ通知の仕組みの違いをまとめていきました。

AndroidのGCMでは実装によってプッシュ通知設計の幅が広がるので、自由度が高いです。
しかし、ほとんど自分で実装しなければならないAndroidに比べiOSのAPNsでは、通知の表示方法やアプリ内での操作など規定の項目が多い分、手間なく実装することが可能です。

それぞれの特徴に合わせてプッシュ通知を設計することで、より効果的なプッシュを送ることができます。
是非、ワンプッシュでユーザに愛されるアプリを。

最後に宣伝になりますが、
pLuckyの「LogPush」ならエンジニアでなくとも簡単にプッシュ通知の設定ができ、ABテスト、セグメント配信、定期配信などの機能が無料でご利用いただけます!

是非宜しくお願いします!

参考

プッシュ通知の仕組みと活用方法について、GCMを例に挙げて分かりやすく説明されています。
GCMに関してより詳しい情報が知りたい方は必見です。

APNsのデバイストークンに関する詳しい情報はこちらに。
プロバイダからアプリにプッシュが通知されるまでの流れが分かりやすく紹介されています。