iOSアプリ開発:Parseを利用したプッシュ通知
Parseを利用した、プッシュ通知について、簡単にまとめています。
# 基礎
Local および PushNotification プログラミングガイド
# 用語集(当ブログ内)
- 起動している:アプリが起動している状態。フォアグラウンドかバックグラウンドかは問わない
- 起動していない:アプリが起動していない状態。フォアグラウンドにもバックグラウンドにもない状態
- フォアグラウンド:アプリが前面にあり、画面上にアプリが表示されている状態
- バックグラウンド:アプリが背面にあり、ホーム画面もしくは他のアプリが画面に表示されている状態
- バナー:スクリーンの上部から通知の内容が表示される通知。タップすると、アプリが起動する
- ダイアログ:スクリーンのセンターにポップアップで通知の内容が表示され、「開く」をタップすると、アプリが起動する通知
# デバイス上での通知の設定項目
# バナーとダイアログ
# Parseの設定
iOSだけ、Androidだけに通知がデフォルトでできます。チャンネル(複数可)を設定すれば、そのチャンネルのユーザーだけに配信することもできます。
例)通知するJSON
{ “alert”: “12月の怖話アワードが決定しました!”, “sound”: “default”, “badge”: “1”, “url”: “http://kowabana.jp/stories/22479” }
※ soundを設定すると、ユーザーによっては、サウンドだけでなくバイブレーションもします。
# iPhoneの通知について
アプリケーションがフォアグラウンドで動作中でないときに、通知が配信される。システムはこの場合、警告を表示し、アイコンにバッジを添え、サウンドを鳴らす、という形でユーザに知らせるとともに、おそらくアクションボタンをいくつか表示してタップできるようにします。
アプリケーションがフォアグラウンドにあるときは、- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo で通知を取得でき、アラートを出す、サウンドを出す、といった処理は自分で実装する必要があります。
OSXが稼働するコンピュータ上でアプリケーションアイコンがクリックされた場合、アプリケーションはデリゲートのapplicationDidFinishLaunching:メソッドを呼び出し、デリゲートはこのメソッド内でリモート通知ペイロードを取得できます。iOSが稼働するデバイス上で、アプリケーションアイコンがタップされた場合、アプリケーションは同じメソッドを呼び出しますが、通知に関する情報は渡しません。
上記の通り、通知のバナーやダイアログをタップせず、アプリケーションのアイコンをタップして起動した場合、通知の内容を取得することはできませんので、注意が必要です。
各リモート通知にはペイロードがあります。ここには、システムがユーザに警告する方法に関する情報や、別途渡したカスタムデータなどが収容されます。iOS8以降、通知ペイロードに許される最大サイズは2キロバイトになりました。ApplePushNotificationサービスでは、この上限を超える通知は拒否されます(旧iOSおよびOSXの場合、ペイロードの最大サイズは256バイト)。
通知を配信する際は、iOS7以降を対応する場合、256バイト以下に収める必要があります。
参考:Local および PushNotification プログラミングガイド
# ユーザーによる通知の設定
ユーザーの環境毎に、通知を受け取った際のアクションが異なり、サウンドが鳴る、バイブレーションがするなど、設定により異なります。
サイレントモード時は、通知を受け取っても、サウンドもバイブレーションもしません。
サイレントモードでなくとも、設定 > サウンド でバイブレーションをオフにしていると、通知を受け取ってもバイブレーションしません。
また、設定 > 通知 > 怖話 でサウンドのオフや、通知のスタイルをオフにする(バナーもダイアログを表示されない)といった設定もあります。
通知を配信する側は、テキスト、サウンド、バッジを設定して配信することができますが、受け取った際にどんなアクションがあるのかは、上記の通り、ユーザー毎に異なります。
# 怖話アプリの通知の仕様
## フォアグラウンド時
通知で受け取った内容を、ポップアップで表示して、「開く」をタップ後、怖い話ページに飛びます。
Parseから配信する際に、サウンド、バッジを設定していても、フォアグラウンド時には何も反映されません。
## バッググラウンド時、起動していない時
通知をタップ後、アプリを起動して、ポップアップを表示します。
Parseから配信する際に、サウンド、バッジを設定していると、ユーザーによっては適用されます。