質問: 現在、プッシュ通知を用いて、サーバーとアプリとでデータの連携を検討しています。 具体的にはプッシュ通知のカスタムデータにアプリに持たせたいデータを格納してプッシュ通知を送信。 アプリ側で受信したタイミングでそのデータをローカルに保存。 という流れを考えているのですが、以下の場合にプッシュ通知の機能では抜けができてしまうのか、対策可能なのかというところが知りたいです。 ・ユーザーが通知を開封せずにアプリを起動した場合 ・ユーザーがプッシュ通知を拒否している場合 お手数ですがご確認お願いいたします。
回答: 残念ながら,お考えの目的でプッシュ通知を利用することはできません.プッシュ通知は,新着情報があることを通知するものであり,新着情報の内容を転送する目的で設計されていません. ですので,アプリが起動されれば,プッシュ通知とは関係なしに新着情報を取得しにいけばいいですよね,という思想のようです. 端末が通知を受信した時 * アプリがフォアグランドまたはバックグランドで処理可能な場合 → 通知を受け取って何かの処理を行うことは可能 * アプリが閉じられている場合 → 通知センターに届くだけ となります. 起動時に getDeliveredNotificationsWithCompletionHandler を使って,通知センターにある通知を取得することは可能ですが iOS 10 以降で追加されたものですし,利用者がアプリを起動させずに通知を消去していれば,アプリはこの方法で通知があったことを知る由もありません そして,お察しの通り,プッシュ通知を利用者が拒否することもできます.それを許可するよう強要することはできません.ただ,その利用者は新着情報があるよという通知が受け取れないだけです.アプリを起動させれば新着情報を得ることはできるでしょう. 長くなりましたが,プッシュ通知は,アプリが立ち上がっていない時に,アプリを立ち上げるよう促す(利用者に判断させる)ためのものであり,何か情報をアプリにサーバからプッシュ通信するものではないです.あくまで,情報はプルするものになります.