簡體   English   中英

在 macOS Catalina(Catalyst 應用程序)上未收到靜默推送通知(后台)

[英]Silent push notification (background) not received on macOS Catalina (Catalyst app)

我目前正在執行推送通知,從我們的后端服務器,以我們的應用程序(卡特琳娜的MacOS和iOS -相同的代碼庫),使用蘋果推送通知和(生成從keyid的,teamId,智威湯遜認證的基於令牌的方式...&在簽約使用在 Apple 開發者控制台中生成的私鑰)向 APN 服務發送推送。

我面臨的問題是我可以成功發送“警報”通知(狀態 200,帶有標題apns-push-type: alert )並在我的 iOS 和 MacOS 設備上接收它們(推送通知在生產和沙盒模式下成功出現)但出於某種原因,“靜默”推送(帶有標題apns-push-type: background )僅在我的 iOS 設備(iPhone)上接收,而在我的 Mac 上無法接收(從不調用AppDelegate didReceiveRemoteNotification(...) )。

到目前為止我做了什么:

  • 確保為靜默推送正確配置了 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 應用程序根本不支持的東西?

哇,愚蠢的問題。 我對 APNs 頭痛相當熟悉,但從最新的文檔中突然出現了一些東西:

此外,通知的 POST 請求應包含值為 background 的 apns-push-type 頭字段和值為 5 的 apns-priority 字段。 APNs 服務器在向其發送推送通知時需要 apns-push-type 字段Apple Watch,並為所有平台推薦它。 有關更多信息,請參閱創建並向 APNs 發送 POST 請求。

優先級 5 的事情有什么不同嗎?

此外,我通常嘗試解決這些問題的方法是在存檔中進行測試,而不是在 Xcode 構建中進行測試。 AFAIK prod 推送服務器只能發送到 App Store、ad-hoc、企業或 testflight 構建,所以如果你只是從 Xcode 構建,我認為你不會收到任何關於生產 apns 的推送通知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM