スマホネイティブアプリ向けPush通知をAmazonSNSで送ることってあると思うんですが、AndroidとiOSで別々にJSON送らなくてもいいんだよというTips
解説
AmazonSNSでメッセージを送信する時にJSONの形式は以下の感じです
▼GCMへ送る場合
{ "default": "送りたい文字列", "GCM": "GCMに送りたいJSON" }
▼APNSに送りたい場合
{ "default": "送りたい文字列", "APNS": "ApplePushNotificationServerに送りたいJSON", }
このJSONを各AndroidはdefaultとGCMの要素を持つJSON,iOSはdefaultとAPNSの要素を持つJSONを送らなければならないのかと思いきや、一緒に送っても大丈夫。
実際に送ったことがあるJSONは以下。
{ "default": "send message", "APNS": "{\"aps\":{\"alert\":{\"title\":\"送るTitle\",\"body\":\"send message\"},\"sound\":\"default\",\"badge\":1}}", "GCM": "{\"data\":{\"body\":\"send message\",\"title\":\"送るTitle\"}}" }
※JSONの中にJSONが入っているので "
とかをエスケープする必要がある
そのため、わざわざ APNS用のJSON
GCM用のJSON
と分けて作らなくても同じものを込めてしまってもいいので、生成ロジックを複数に分けなくて済む。
余談
今、FCMにはAmazonSNSが対応していないのでFirebaseコンソールで古いキーを使ってるんだが、アップデートの予定あるんだろうか…。