メモ > 技術 > サービス: 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」などは使うことが無いか。