Firebase Consoleからでも出来るけど、プッシュ通知の多言語対応をしたかったので。。。
でもって、なんか数時間なやんだ結果、そんな事だったのか。。。。となったので自分への備忘録。
Firebaseのセットアップとかその辺はスキップ。
実際にcurlするところのメモだけ。
curl \
--header "Authorization: key=ご自身のAPI_KEY" \
--header Content-Type:"application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{
\"to\" : \"/topics/何か適当に\",
\"time_to_live\" : 0,
\"restricted_package_name\" : \"bundle id\",
\"notification\" : {
\"sound\" : \"default\",
\"badge\" : \"1\",
\"body_loc_key\" :\"KEY_ID\",
\"body_loc_args\" : [\"置き換え文字\"],
\"title_loc_key\" : \"TTL_KEY_ID\",
\"title_loc_args\" : [\"置き換え文字\"],
}
}"
補足:
Firebase Notificationsとは違い、FirebaseAnalyticsとは連携できていないようなので、
\"data\" : { \"push_label\" : \"キー\" }
みたいなのを一緒に送ってプッシュ通知の既読数をFirebaseAnalyticsへ送信とかした方がいいかも。
補足追記:
/topics
を指定すると
2016-05-31 06:48:40.731: <FIRMessaging/WARNING> Cannot parse topic name /topics. Will not subscribe.
といわれるので指定できないようです。
で
ハマった内容
メッセージが届くがローカライズされたメッセージが表示されないという問題。
ログでもプッシュ通知は届くがuserInfoの内容が変だった・・・
試行錯誤を数時間・・・
で
原因
Appleさんのドキュメントのパラメータは、title-loc-args: "KEY"
という感じで、
Firebaseのドキュメントのパラメータは、title_loc_args: "KEY"
という感じ。
私はアップルのドキュメントからキーとコピーしてきたのですが、
「 - 」
「 _ 」
って。。。
おぅぅ、、、なんとまぁ。。。
でアンダーバーにすれば問題無く解決したというお話。
後から気づいたのですが、Firebaseは基本的にanalyticsのイベント名とかも英数字とアンダーバーだけみたいです。
ドキュメントはきちんと読まないとダメですね。