戻る
■概要・前提・注意点など
■概要 AndroidとiOSにプッシュを送信するためのメモ AndroidとiOSではプッシュの仕組みはまったく異なる また、大量のプッシュを安定して配信するのも難しい部分が多い。この部分はAmazonSNSに任せることとする iOSよりもAndroidの方が実装が比較的容易なので、 まずはAndroid単体でプッシュを実装し、 次にiOS単体でプッシュを実装し、 最後にAmazonSNSでAndroidとiOSの両方にプッシュを送信できるようにする ■参考ページ Android から Amazon SNS を使ってみる - Qiita https://qiita.com/kusokamayarou/items/27e023ad06cade20c731 ※Android版のみだが、全体の流れとスクリーンショットは参考になる ただし以下に記載したKotlin・Swift・PHPプログラムなどは、別途調査してくれた人のものをベースにしている 解説で触れられている Amazon Cognito は、以下に記載したメモでは使っていない ■開発環境 サーバサイドは通常のLAMP環境で大丈夫だが、PHPを使う場合は7以上が必要 Vagrantで構築することも可能だが、アプリからPHPにアクセス場合は同一LAN内の他端末からアクセスできるようにしておく必要がある ■アプリのID いったんアプリを公開すると変更できないので、慎重に決定したい 「iOSとAndroidの両方で作る」「本番用と検収用と開発用がある」「Pushも使用する」などを考慮する 現状の結論として、iOSもAndroidも net.refirio.pushtest1 のようなIDで作って開発版書き出し時には .dev を付ける…が良さそう iOSとAndroidでIDを統一できるように、「pushtest1」部分にハイフンやアンダーバーは無い方が無難 詳細はこのテキストの「考察: 本番公開用に作成する」も参考に ■Android: ターゲットデバイス Android4は今はSSLへのリクエストに難がある プッシュの動作を検証する程度なら問題無さそうだが、公開用のアプリならできるだけAndroid5以降をターゲットデバイスとする方が無難そう Android4系端末のTLS1.1&1.2対応について - Qiita https://qiita.com/ntsk/items/9f31fc7b44c04ea45e0b android - javax.net.ssl.SSLException: Read error: ssl=0x9524b800: I/O error during system call, Connection reset by peer - Stack Overflow https://stackoverflow.com/questions/30538640/javax-net-ssl-sslexception-read-error-ssl-0x9524b800-i-... ■Android: GCMの廃止 Googleのプッシュ送信は、以前はGCMが使われていた 今はFCMで作る必要があるので、古い解説を参考にする場合は注意する 「Googleクラウドメッセージング(GCM)」が1年後に廃止、「Firebase Cloud Messaging(FCM)」への移行が必要に:Googleのアプリメッセージング基盤が完全に交代 - @IT http://www.atmarkit.co.jp/ait/articles/1804/13/news051.html おじさんのための2018年スマホPUSH通知事情 (+GCM終了のお知らせ) - Qiita https://qiita.com/keidroid/items/290af7b99952e889f4a7 ご注意ください!プッシュ配信GCM廃止について(〜2019年04月10日まで) - ニフクラ mobile backend(mBaaS)お役立ちブログ https://blog.mbaas.nifcloud.com/entry/2018/04/11/165730 ■iOS: レガシーバイナリプロトコルの廃止 ※未検証 ApnsPHPでは「旧式のバイナリインターフェイス」を利用しているが、これは2020年11月以降使えなくなる HTTP/2ベースに移行する必要がある ニュース - Apple Developer https://developer.apple.com/jp/news/ APNs Provider API(HTTP/2)をPHPで試してみる - Qiita https://qiita.com/itosho/items/2402df4de85b360d5bd9 APNsとHTTP/2通信でiOSのPush通知 - Qiita https://qiita.com/joooee0000/items/721e809954f7d1cc3c42 cURL(curl)でアプリにプッシュ通知を送信する - すいすいSwift https://swiswiswift.com/2019-11-06/ 環境の構築は以下を参考にできそう PHP curlでHTTP/2リクエストを実行するための設定 on CentOS 7 | 稲葉サーバーデザイン https://inaba-serverdesign.jp/blog/20171011/php_curl_http2_centos7.html 以下、昔調べてもらったときの資料 【ドキュメント】バイナリProvider API https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Bin... Binary Provider API https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotifi...