メモ > 技術 > サービス: AmazonSNS > メモ
メモ
■プッシュ通知設定時の挙動
プッシュ通知設定画面へ遷移させる為の実装 - Qiita
https://qiita.com/yamataku29/items/5361d7c3146604dcca44
■プッシュ通知受診時の挙動
Androidでプッシュ受信時にダイアログを表示できるか。
■メインスレッドで処理を実行
[Swift] MainThreadで処理を実行する - Qiita
https://qiita.com/valmet/items/6de0921ca6106414228c
■プッシュ通知の受診時にダイアログを表示する(Android)
Firebaseで送信する際に「Android通知ちゃんねる」「優先度」「通知音」などがある。
これらを変更して対応するのかも。
と思ったが、もともと「優先度」は「高」なので特に変化は無い。
■プッシュ通知のタップ時に任意の画面を開く
プッシュ通知からアプリ内の特定のviewを開く(iOS) - Growthbeat FAQ
https://faq.growthbeat.com/article/88-view-ios
[iOS 10] 画面上部または通知センター上に表示された通知がタップされたときの処理を実装する | DevelopersIO
https://dev.classmethod.jp/smartphone/iphone/wwdc-2016-user-notifications-7/
■アプリからプッシュ通知の設定画面を開く
プッシュ通知設定画面へ遷移させる為の実装 - Qiita
https://qiita.com/yamataku29/items/5361d7c3146604dcca44
■サイレントプッシュ
iOSのPUSH通知(APNS)の特徴・ノウハウまとめ(iOS 9まで対応) - Qiita
https://qiita.com/mono0926/items/df03c61adc56934e2e7a
AWS SNSを使ってiOSへpush通知 - Qiita
https://qiita.com/ijun/items/2cbff7664e49fb93bf39
Xcode:
Background Modes の Modes で「Remote notifications」に加えて「Background fetch」にもチェックを入れる。
PHP:
iOSに送るプッシュ通知データに「'content-available' => 1」を追加する。
$apns = json_encode([
'aps' => [
'alert' => [
'title' => 'タイトル',
'body' => $message,
],
'badge' => 0,
'sound' => 'default',
'content-available' => 1
],
'param1' => 'xxx',
'param2' => 'yyy'
]);
これでプッシュ通知受信時にiOSアプリ側の
// アプリ起動中に通知を受信する処理
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
}
のメソッドが呼ばれるようになるが、これだけだとプッシュ通知受診時にXcodeのコンソールに
「but the completion handler was never called.」
と表示される。以下のページにあるように
iOS アプリでメッセージを受信する | Firebase
https://firebase.google.com/docs/cloud-messaging/ios/receive?hl=ja
上記 application メソッドの最後に以下の処理を追加すると表示されなくなった。
completionHandler(UIBackgroundFetchResult.newData)
これで「プッシュ通知を受信した際に、バックグラウンドで任意の処理を実行する」ができそう。
このうえで、iOSに送る際に
$apns = json_encode([
'aps' => [
/*
'alert' => [
'title' => 'タイトル',
'body' => $message,
],
*/
'badge' => 1,
'sound' => 'default',
'content-available' => 1
],
'param1' => 'xxx',
'param2' => 'yyy'
]);
このように alert のブロックをを丸ごとコメントアウトすると、プッシュ通知は表示されないがプッシュ通知の受信処理は行われる。
さらに「'sound' => 'default',」もコメントアウトすると、プッシュ通知受診時のサウンドやバイブレーションも再生されない。
この仕組を使えば「サーバからの指示によって、裏側でこっそり任意の処理を行わせる」ができそう。
ただし当然ながら、プッシュ通知が許可されていなかったりオフラインになっていたりすると実行できないので注意。
■その他参考になりそうなページ
Amazon SNS で、iOS・Androidにpush通知する方法 - Qiita
https://qiita.com/papettoTV/items/f45f75ce00157f87e41a
phpでAWSのSNSを使ってpush通知を送るときのパターン的なお話 ~ 適当な感じでプログラミングとか!
http://watanabeyu.blogspot.com/2017/01/phpawssnspush.html
【iOS】Firebase の Notifications でプッシュ通知を送る - Qiita
https://qiita.com/koogawa/items/ca8cce019b4ff7ce2576
大規模ネイティブアプリへのプッシュ通知機能導入にあたって考えたこと - Qiita
https://qiita.com/gomi_ningen/items/ab31aa2b3d46bb6ffa5e
OreoでNotificationを表示させる方法 - Qiita
https://qiita.com/naoi/items/367fc23e55292c50d459
kotlin-AndroidでHTTPで取得したデータを表示する - 動かざることバグの如し
http://thr3a.hatenablog.com/entry/20180326/1521995307
AWS SNSを使ってiOSへpush通知 - Qiita
https://qiita.com/ijun/items/2cbff7664e49fb93bf39
iOSのPUSH通知(APNS)の特徴・ノウハウまとめ(iOS 9まで対応) - Qiita
https://qiita.com/mono0926/items/df03c61adc56934e2e7a
大規模ネイティブアプリへのプッシュ通知機能導入にあたって考えたこと - Qiita
https://qiita.com/gomi_ningen/items/ab31aa2b3d46bb6ffa5e
[AWS][iOS] Amazon SNS で APNs に大量 Publish してみた
http://dev.classmethod.jp/cloud/aws/sns-apns-push/