经过后台推送的一些测试/调试后,iPhone 上的“pushDisallowed”和“决定:绝对不能继续”

2024-02-04

我正在创建一个 Xamarin Forms 应用程序,它通过 Azure 通知中心使用后台推送。该应用程序针对 Android 和 iOS,经过一些初步原型设计和测试后,一切在两个平台上都运行良好。对于 iOS,我发送包含以下内容的推送:

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

In my AppDelegate the DidReceiveRemoteNotification无论应用程序处于活动状态、在后台还是完全关闭,方法都会被调用。然后,我通过代码手动创建一个可见的通知并将其显示给用户(并且因为我还需要执行一些其他逻辑,所以我不直接在推送中使用“警报”)。

然后,我开始在 Android 项目中实现所有特定于平台的逻辑,并通过我的后端服务发送了一堆测试通知,其中我的 iPhone 仍然在原型设计阶段注册。因此,当我测试 Android 应用程序时,我看到我的 iPhone 也收到了所有测试推送。完成 Android 端后,我回到 iOS 并在那里实现了所有内容,仍然按预期工作。但不久之后 iPhone 就停止接收我的推送了。
经过调查我发现DidReceiveRemoteNotification不再被调用,无论应用程序的状态如何,只有WillPresentNotification in my UNUserNotificationCenterDelegate如果应用程序在前台处于活动状态,则调用。
经过更多调查(并使用相同的代码验证我的测试应用程序仍然完全工作),我发现除了在代码中调用我的处理程序之外,一切都在后台工作(例如徽章号码更新)。
然后,我在收到推送后挖掘设备日志并发现以下内容:

dasd[93] : com.apple.pushLaunch.com.Company.MyApp:AB795D:[ {名称:ApplicationPolicy,policyWeight:50.000,响应:{决定:绝对不能继续,分数:0.00,理由:[{[pushDisallowed] :必需:0.00,观察到:1.00},]}} ],最终决定:绝对不能继续}

(顺便说一句:我必须使用Mac才能得到这一点,VS中的设备日志没有显示[)

我猜我 iPhone 的省电程序认为我的应用程序污染了我的手机,因为收到了很多通知但没有进行交互。

如何让我的 iPhone 再次允许这些通知?


我遇到了类似的问题并通过删除声音键解决了它,即"sound": "",来自要发送的内容。 如果你调查docs https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification for "content-available": 1:

后台通知标志。要执行静默后台更新,请指定值 1 并且不要在负载中包含警报、徽章或声音键。请参阅将后台更新推送到您的应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经过后台推送的一些测试/调试后,iPhone 上的“pushDisallowed”和“决定:绝对不能继续” 的相关文章

随机推荐