Memo

メモ > 技術 > サービス: AmazonSNS > 考察: 本番公開用に作成する(上に整理する前の考察メモ)

考察: 本番公開用に作成する(上に整理する前の考察メモ)
■Firebaseから本番用と開発用のそれぞれにプッシュ通知を送信 前提。 例えば先に本番用に作成し、その後単純にAndroidStudioで .dev にして実行すると。 「No matching client found for package name」と表示されてインストールできない。 Firebaseをandroidアプリに追加したときにつまずいたポイント - noyのブログ http://noy.hatenablog.jp/entry/2018/02/15/121431 google-services.json の「package_name」に「.dev」を付けると .dev でインストールできる。 が、google-services.jsonは本番用なのでプッシュ通知は届かないみたい。 もちろん「.dev」を削除して 「.dev」 なしでインストールするとプッシュ通知は届く。 Firebaseプロジェクトを開発版用に用意する必要がある。 以下、本番用と開発用に分ける手順。(Zabbixからの通知を受け取るためのアプリを作成したときのもの。) まずは本番&開発などを一緒に管理するためのプロジェクトを作成しておく。 通常の手順で、Firebase本番想定のアプリを作成しておく。 Android パッケージ名: net.refirio.zabbix アプリのニックネーム: Zabbix Firebaseで開発用に、プロジェクトではなくアプリを追加する。 Android パッケージ名: net.refirio.zabbix.dev アプリのニックネーム: Zabbix Dev ダウンロードした google-services.json の内容を確認すると、本番用と開発用の記述両方があった。 Firebase SDK の追加作業は済んでいるので飛ばす。 その状態で developDebug 版に切り替えてみるとエラーは出なかった。 アプリを実行してインストールを確認すると「正常に追加されました」が表示された。 Firebaseのコンソールからサーバキーを確認すると本番と開発で共通になっていたので、この値を変更する必要はない。 アプリ内でのPHPの通信先調整(本番と開発)は必要。 これで本番と開発版を端末に共存させたうえで、プッシュ通知もそれぞれに送信できる。 1つのソースコードでPHPへの送信先を分ける必要があるので、例えば以下のようにして送信先を振り分ける。 実際はこの手の記述は、設定ファイルなどにまとめて記述すると良さそう。
var target = "" if ("production".equals(BuildConfig.FLAVOR)) { target = "https://example.com/tool/zabbix/prod/api.php" } else { target = "https://example.com/tool/zabbix/dev/api.php" } Log.d("TARGET", target)
同じ手順で net.refirio.zabbix net.refirio.zabbix.dev net.refirio.zabbix.dev.debug などを1端末に共存させて、それぞれでプッシュ通知を受け取ることも可能なはず。 以下の方法は採用していないが、参考までにメモ。 Firebaseプロジェクトを開発環境用と本番環境用にシンプルに分ける方法 - Qiita https://qiita.com/hinom77/items/9cd6818210a52f86a6a3 Flavor毎に異なったgoogle-services.jsonをつかう - Qiita https://qiita.com/gyamoto/items/39351917ee6755abf7bf ■Apple Developer Program から本番用と開発用のそれぞれにプッシュ通知を送信 BundleIDを以下のように設定してみた Develop_Debug | net.refirio.buildtest1.dev Develop_Release | net.refirio.buildtest1.dev Production_Release | net.refirio.buildtest1 アプリケーション名を以下のように設定してみた Develop_Debug | buildtest1 Dev Develop_Release | buildtest1 Dev Production_Release | buildtest1 開発時は net.refirio.zabbix.dev が実機にインストールされるので、この「Development SSL Certificate」に対して登録してみる。 証明書はいったん、本番用に作ったものを共用としてみる。 AmazonSNSで本番用の実機書き出し用として Zabbix-APNS-Dev を作ったが Zabbix-APNS-Development とした方が良かったかも。 その上で、開発用の実機書き出し用として Zabbix-APNS-Dev-Development を作るか。 それなら、Android版も同じルールにしておく方が無難か。 でもAndroidでは「Development SSL Certificate」と「Production SSL Certificate」のような区別は無いので、合わせると冗長か。 と思ったけど、AmazonSNSでは「Apple iOS Prod」と「Apple iOS Dev」が異なれば同じ名前を付けられる。 それなら 本番 ... Zabbix-APNS | Apple iOS Prod 本番 ... Zabbix-APNS_SANDBOX | Apple iOS Dev 開発 ... Zabbix-APNS-Dev | Apple iOS Prod 開発 ... Zabbix-APNS_SANDBOX-Dev | Apple iOS Dev 本番トピック ... Zabbix-APNS-All | Apple iOS Prod 本番トピック ... Zabbix-APNS_SANDBOX-All | Apple iOS Dev 開発トピック ... Zabbix-APNS-Dev-All | Apple iOS Prod 開発トピック ... Zabbix-APNS_SANDBOX-Dev-All | Apple iOS Dev とする方がいいか。 でもトピックではこのような区別がないので名前で区別するしかないか。 でもPHPプログラムのURLをどうするか。 また「Zabbix-APNS | Apple iOS Dev」などは使うことが無いか。

Advertisement