Mais conteúdo relacionado
Semelhante a PHPでスマホアプリにプッシュ通知する (20)
Mais de Tomoki Hasegawa (20)
PHPでスマホアプリにプッシュ通知する
- 10. スマホアプリのプッシュ通知
• 呼び方はiOS / Androidでちょっと違う
• iOS: Apple Push Notification Service (APNs)
• Android: Google Cloud Messaging (GCM)
• どっちもHTTPベースの技術でできています😃
• アプリに対して送信します。
• アプリが入っていないと届かない。
- 12. プッシュ通知の概要 - 準備
Apple / Google アプリ用サーバ
スマホアプリ
②デバイストークンを登録
(多くのケースではユーザIDや端末IDと
ひもづけて送信する。)
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
- 13. プッシュ通知の概要 - 送信
Apple / Google アプリ用サーバ
スマホアプリ
③デバイストークン
とメッセージを送信
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
http
- 16. プッシュ通知の概要 - 送信
Apple / Google アプリ用サーバ
スマホアプリ
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
- 17. プッシュ通知の概要 - 送信
Apple / Google アプリ用サーバ
スマホアプリ
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
- 18. プッシュ通知の概要 - 送信
Apple / Google アプリ用サーバ
スマホアプリ
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
これを で。
- 19. Androidのプッシュ通知送信
$ curl
--header "Authorization: key=【APIキー】"
--header Content-Type:"application/json""
https://android.googleapis.com/gcm/send
-d "{"registration_ids":["【RegistrationID】"],"data":
{"message":"Hello monotty!"}}"
- 20. Androidのプッシュ通知送信
$ curl
--header "Authorization: key=【APIキー】"
--header Content-Type:"application/json""
https://android.googleapis.com/gcm/send
-d "{"registration_ids":["【RegistrationID】"],"data":
{"message":"Hello monotty!"}}"
• かんたん。
• 生PHPでもぜんぜんOK。
😇
- 32. Apple / Google アプリ用サーバ
スマホアプリ
②デバイストークンを登録
(多くのケースではユーザIDや端末IDと
ひもづけて送信する。)
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
参考1: アプリ用サーバに送信するデータ例
- 33. Apple / Google アプリ用サーバ
スマホアプリ
②デバイストークンを登録
(多くのケースではユーザIDや端末IDと
ひもづけて送信する。)
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
参考1: アプリ用サーバに送信するデータ例
{
device_id : 6521e13b9e1e2b45f15b16c65334b622097f07489c96a9a35413b49018b4126a ,
os : iOS ,
device_token : 8994b692542e6d5229fb925fe29a5a60e51017a81eca3d76881c91bf0bce40e3
}
- 34. Apple / Google アプリ用サーバ
スマホアプリ
②デバイストークンを登録
(多くのケースではユーザIDや端末IDと
ひもづけて送信する。)
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
参考1: アプリ用サーバに送信するデータ例
{
device_id : 6521e13b9e1e2b45f15b16c65334b622097f07489c96a9a35413b49018b4126a ,
os : iOS ,
device_token : 8994b692542e6d5229fb925fe29a5a60e51017a81eca3d76881c91bf0bce40e3
}
デバイスIDとしてユーザID+シードのハッシュを使うことが多いです。
- 35. Apple / Google アプリ用サーバ
スマホアプリ
②デバイストークンを登録
(多くのケースではユーザIDや端末IDと
ひもづけて送信する。)
端末ID1, デバイストークン1
端末ID2, デバイストークン2
端末ID3, デバイストークン3
:
参考1: アプリ用サーバに送信するデータ例
{
device_id : 6521e13b9e1e2b45f15b16c65334b622097f07489c96a9a35413b49018b4126a ,
os : iOS ,
device_token : 8994b692542e6d5229fb925fe29a5a60e51017a81eca3d76881c91bf0bce40e3
}
デバイスIDとしてユーザID+シードのハッシュを使うことが多いです。
iOSの場合こんな長さ(64bytes)。Androidは140∼210bytes程度。
- 37. 参考3: iOS, 開発 & 本番環境
• iOSの場合、2つの接続先がある。
• 開発ビルド: 開発用プッシュ通知サーバ(SANDBOX)
• リリースビルド: 本番用プッシュ通知サーバ(PRODUCTION)
• デバイストークンが異なる。
• 開発用のトークンを本番に投げるとエラーになる。
• 本番環境に開発用トークンが混ざらないように注意。
• とは言っても混じるので送信プログラム側でエラー処理をちゃ
んとやる。
- 38. 参考4: 発生するエラー
• iOSの場合、エラーは2パターン。
• 送信時エラー: デバイストークンがおかしい等
• あとからエラー: 電源がずっと入っていないまたは圏外でのタイ
ムアウト、アプリがアンインストールされている等
→ このエラーもApnsPHPで取得できる。(Feedback)
• Androidの場合、送信時エラーのみ。
• Androidではアンインストールを検出できるのでアンインストー
ル時にアプリ用サーバからRegistration IDを削除すべき。
- 42. まとめ
• iOSもAndroidも基本的には同じ仕組み。
• デバイストークン / Registration IDを取得。
• 取得したトークンを使って送信先を指定する。
• プッシュ通知送信はHTTPで。
• AndroidはテキストベースのシンプルなHTTP通信で送信できる。
• iOSはちょっと面倒だけど、ApnsPHPを使ってラクできる。
• 特有の要注意ポイントあり。
• APIやバッチ設計時にしっかり考える。