12

NotificationService Extension ターゲットを使用して、プッシュ通知が表示される前に変更できるようにしています。うまく機能していますが、処理後にユーザーに表示したくない通知がいくつかあります。

bestAttemptContent のタイトルと本文を "" に設定しようとしましたが、完全な通知が返されます。

aps["content-available"] を 1 に、body を "" に設定してみましたが、同じ効果が得られます。

4

1 に答える 1

15

状況

私は実際に、通知サービス拡張機能をローカルで使用して、特定のデバイスに配信される通知の種類を管理して、あなたと同じことを達成しようとしました。しかし、私はそれが設計によるものであることを理解しなければなりませんでした...

  • ...個別のAPIを介して通知をキャンセルすることはできません。
  • ...通知の内容を空にすると、通知サービス拡張機能が呼び出されていないかのように通知が配信されます。

これは、Apple がユーザーの電話に通知をスパム送信することを望んでいないためです (バックグラウンドで処理され、配信されていない場合でも)。

ソリューション

今何をすべきかについて、次の 4 つの選択肢があります。

  • サイレント プッシュを使用します。次に、ローカル通知をトリガーします。注: サイレント プッシュは常に信頼できるとは限りません。
  • VoIP プッシュを使用します。これは、たとえばWhatsAppが使用するものであり、私の知る限り、通知のキャンセルなどを可能にします。ただし、Apple はアプリのレビューに関しては厳格です。VoIP アプリのみが VoIP プッシュの使用を許可されています (WhatsApp が音声通話を導入したのはそのためだと思います。通知サービスの拡張機能がバックグラウンドでメッセージを復号化するために VoIP プッシュが必要だったからです)。 iOS 9 ではまだオプションではありませんでした)。
  • 通知をすぐに受け取るべきユーザーにのみ通知を送信することで、カスタムのキャンセル ロジックをサーバー側で処理します。
  • 通知テキストを空ではないものに操作して、元の通知テキストを非表示にします。これは、たとえば、アプリのプロ バージョンが現在割引価格で入手できるというプッシュを送信する場合に役立ちます。既存のプロ ユーザーの場合は、テキストを編集して「プロになってくれてありがとう」と読むことができます。
于 2018-03-16T23:13:45.507 に答える