Appleのプッシュ通知サービスを利用したアプリケーションを書いています。一部のプッシュ通知はユーザーの場所に基づいており、ユーザーがオブジェクトから一定の距離にある場合にのみ配信する必要があります。サーバーに対するユーザーの位置を継続的に更新して、その方法でチェックを実行したくありません。まず、セキュリティ上の理由から、次にネットワークの使用量を削減するためです。デバイスがプッシュ通知を受信したときに、ユーザーに通知する前にチェックを行い、基準を満たしていない場合は通知を破棄する方法はありますか?助けてくれてありがとう!
3 に答える
いいえ、残念ながら、アプリが起動されていないときにユーザーが通知をクリックしない限り、クライアント側でコードを実行することはできません。プッシュを送信するかどうかを決定するには、サーバー側でチェックを行う必要があります。
アプリの実行中に受信されるプッシュ通知(最も一般的なケース)は、制御できません。送信されると、受信されてユーザーに表示されます(ユーザーがアクセス許可を付与していることを前提とします)
アプリの実行中にプッシュ通知を受信した場合は、プッシュ通知を制御できます。
代わりに、ローカル通知(ユーザーのデバイスから生成および受信される通知)を使用できます。それらがいつ生成されるかを完全に制御できます。
アプリでのバックグラウンド処理は、4つのことを除いて許可されていないことに注意してください
- 位置追跡(ユーザーがジオロケーションを変更したときにトリガーコードをサブスクライブできます)
- アラーム
- 音楽を演奏
- ボイスオーバーIP
これら以外のものはバックグラウンドで実行できません。
iOS7以降、コードを実行できるようになりました。「ユーザーに通知が表示されるのとほぼ同時に」と言います。
マルチタスクの機能強化
プッシュ通知を使用して新しいコンテンツが利用可能であることをユーザーに通知するアプリは、バックグラウンドでコンテンツをフェッチできます。このモードをサポートするには、アプリのInfo.plistファイルにリモート通知値を含むUIBackgroundModesキーを含めます。また、アプリデリゲートにapplication:didReceiveRemoteNotification:fetchCompletionHandler:メソッドを実装する必要があります。
詳細はこちらをご覧ください:
そしてここ:
まだ試していませんが、「apns」に標準の「alert」、「badge」の値がなく、カスタム値のプッシュ通知ペイロードを送信すると、コードが呼び出されますが、プッシュ通知を表示します。