macOS Catalina(Catalystアプリ)でサイレントプッシュ通知(バックグラウンド)が受信されない


9

私は現在実装していますプッシュ通知、使用して-私たちのアプリ(同じコードベースのMacOSカタリナ&iOS版)に、当社のバックエンドサーバからのアップルのプッシュ通知(鍵ID、teamId、からJWTを生成&認証トークンベースの方法を...&それに署名しますApple開発者コンソールで生成された秘密鍵を使用して)、APNサービスにプッシュを送信します。

私が直面している問題は、「アラート」通知(ステータス200、ヘッダー付きapns-push-type: alert)を正常に送信し、iOSおよびMacOSデバイスで受信できることです(プッシュ通知はプロダクションモードおよびサンドボックスモードで正常に表示されます)が、何らかの理由で「サイレント」 "ヘッダー付きのプッシュapns-push-type: backgroundは、iOSデバイス(iPhone)でのみ受信され、Macでは受信されませんdidReceiveRemoteNotification(...)in AppDelegateは呼び出されません)。

これまでに行ったこと:

  • APNリクエストヘッダーがサイレントプッシュ用に正しく設定されていることを確認しました。 apns-push-type: background
  • 正しいAPNトピックヘッダーがあることを確認しました:(apns-topic: my.bundle.idこれはサンドボックス/プロダクションでは異なります)
  • 「準必須」の優先度ヘッダーを追加:(apns-priority: 5バックグラウンドプッシュを配信する場合のみ)
  • 作成されたJWTが有効であり、APN authヘッダーで使用されていることを確認しましたauthorization: mytoken(そうである必要があります。そうでない場合、APNサービスはステータス200で応答しません)
  • アプリケーションにXcodeで定義された正しいエンタイトルメントと機能があることを確認しました(私の推論:これは事実である必要があります。そうでない場合、「アラート」プッシュ通知も機能しません)
  • Macアプリのプッシュ通知が許可/有効化されていることを再確認しました(システム設定を確認しました)
  • プッシュを送信するデバイストークンが、実際にプッシュを受信することを目的としたデバイスからのものであることを確認しました(例:MacBook)
  • JWTの署名に使用している秘密鍵にAPN機能があることを確認しました
  • Macアプリの実行中にテストされていますが、フォーカスされていません。

プッシュを送信するために実行しているAPNsリクエストは次のとおりです。

リクエスト本文でAPNサービスに送信するペイロード(JSON)は次のようになります。

{
   "aps": {
      "content-available": 1 # defines push as "silent"
   },
   "data": { #some key-value pairs here }
}

いずれの場合でも(iOSとmacOSの両方のデバイストークンを使用するプロダクションとサンドボックスの両方)、APNへのリクエストがステータスコード200で返されます。私のMacBookはCatalina 10.15.3を実行しています。私はここで何が間違っているのでしょうか、それとも単にCatalystアプリでサポートされていないことですか?

回答:


2

うわー、おかしい質問。私はAPNsの頭痛にかなり精通していますが、最新のドキュメントから何かが飛び出しました:

さらに、通知のPOSTリクエストには、値がbackgroundのapns-push-typeヘッダーフィールドと、値が5のapns-priorityフィールドが含まれている必要があります。APNsサーバーは、プッシュ通知をに送信するときにapns-push-typeフィールドを必要としますApple Watch。すべてのプラットフォームに推奨されています。詳細については、「POSTリクエストを作成してAPNに送信する」を参照してください。

優先順位5のことで違いはありますか?

また、これらの問題を修正するために私が通常試みるのは、Xcodeビルドではなく、アーカイブでテストすることです。私の知る限り、本番用プッシュサーバーはApp Store、アドホック、エンタープライズ、またはテストフライトのビルドにのみ送信できるため、Xcodeからビルドするだけの場合は、プロダクションAPNでプッシュ通知を受け取ることはないと思います。


1
どうもありがとうございました。apes-priorityヘッダー(値5)でも試しましたが、残念ながら違いはありません。アーカイブされたビルドでのテストに関して、あなたが行った最後の提案を試します。
Philipp Jahoda

@PhilippJahodaのfyiアーカイブはソリューションの半分にすぎません。本番用のプッシュ通知を受信するには、アドホックまたは私がリストした他の方法のいずれかを配布する必要があります。これにより、デバッグの負担も大きくなります。うまくいけば、あなたがこれを解決できるといいのですが、いつそうするか知りたいです。
マシューウェルドン

はい、ヘッドアップしていただきありがとうございます。これはお尻の大きな痛みです。それ以外の考えはありますか?iOSでは機能しているがmacOSでは機能していないという事実に頭を抱えることはできません。
Philipp Jahoda
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.