簡體   English   中英

在使用后台推送進行一些測試/調試后,iPhone 上的“pushDisallowed”和“決定:絕對不能繼續”

[英]`pushDisallowed` and `Decision: Absolutely Must Not Proceed` on iPhone after some testing/debugging with background pushes

我正在創建一個 Xamarin Forms 應用程序,它通過 Azure 通知中心使用后台推送。 該應用程序的目標是 Android 和 iOS,經過一些初始原型設計和測試后,在兩個平台上一切正常。 對於 iOS,我正在發送包含以下內容的推送:

{ "aps": { "content-available": 1, "apns-priority": 5, "sound": "", "badge": 0 }, "id": 10, "title": "PushDemo", "message": "Hello #10!" }

在我的AppDelegate中,無論應用程序是處於活動狀態、在后台還是完全關閉,都會調用DidReceiveRemoteNotification方法。 然后我通過代碼手動創建一個可見通知並將其顯示給用戶(並且因為我還需要執行一些其他邏輯我不直接在推送中使用“警報”)。

然后我開始在 Android 項目中實現所有特定於平台的邏輯,並且我確實通過我的后端服務發送了一堆測試通知,我的 iPhone 仍然從原型階段注冊。 所以我在測試 Android 應用程序時看到我的 iPhone 也收到了所有測試推送。 完成 Android 端后,我回到 iOS 並在那里實現所有內容,仍然按預期工作。 但不久之后,iPhone 就停止接收我的推送。
經過調查,我發現不再調用DidReceiveRemoteNotification ,無論應用程序的 state,如果應用程序在前台處於活動狀態,則只調用我的WillPresentNotification中的UNUserNotificationCenterDelegate
經過更多調查(並使用相同的代碼驗證我的測試應用程序仍在完全運行)后,我看到除了在代碼中調用我的處理程序之外,一切都在后台運行(例如徽章編號更新)。
然后我通過設備日志挖掘並在收到推送后發現以下內容:

dasd[93]: com.apple.pushLaunch.com.Company.MyApp:AB795D:[ {name: ApplicationPolicy, policyWeight: 50.000, response: {Decision: Absolutely Must Not Proceed, Score: 0.00, Rationale: [{[pushDisallowed] :必需:0.00,觀察到:1.00},]}} ],FinalDecision:絕對不能繼續}

(順便說一句:我不得不使用 Mac 來獲取它,VS 中的設備日志沒有顯示[之后的部分)

我猜我的 iPhone 的節電器認為我的應用程序污染了我的手機,因為收到了很多通知但沒有與之交互。

我怎樣才能讓我的 iPhone 再次允許這些通知?

我遇到了類似的問題,通過從要發送的內容中刪除聲音鍵(即"sound": "" )解決了這個問題。 如果您查看“可用內容”的文檔"content-available": 1

后台通知標志。 要執行靜默后台更新,請指定值 1 並且不要在您的負載中包含警報、徽章或聲音鍵。 請參閱將后台更新推送到您的應用程序。

暫無
暫無

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

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