【问题标题】:Read iOS push permissions via silent push通过静默推送读取 iOS 推送权限
【发布时间】:2025-11-26 05:05:02
【问题描述】:

是否可以通过发送静默推送来查询推送授权并将其报告回我的服务器? 我假设静默推送不需要推送权限。

【问题讨论】:

    标签: ios push


    【解决方案1】:

    有点,是的。如果您发送静默推送通知并且您的应用程序没有被强制终止,那么它可能会向您的某些服务器发回更新,说它收到了通知。 然而,如果用户手动退出应用程序,那么这些通知会被操作系统丢弃,因此您无法分辨。 此外,您只需在应用程序上调用isRegisteredForRemoteNotifications 即可检查设备是否已注册。

    更新

    更清楚地说:打开或关闭任何东西都没有关系,您永远不能依赖消息的传递。操作系统可能只是延迟交付,或者根本跳过它,你永远不会知道。至少,不在服务器端。您的应用确实可以检查(一旦再次运行) 它收到了什么样的通知(它只需要做一些簿记),然后询问服务器它拥有的所有东西是否也是服务器有时发送的所有东西 - 但这个逻辑必须由你实现。

    【讨论】:

    • 谢谢。因此,如果关闭推送权限,设备将永远不会收到通知负载。那正确吗?同样,如果关闭后台刷新,设备将永远不会收到静默推送有效负载。对吗?
    • 感谢您的澄清。来自Android背景,我试图了解通知消息在什么阶段没有显示。在 Android 上,对于“数据”消息,有效负载会传递到应用程序,但如果用户关闭了通知,则不会显示。目前我用它来衡量推送时的用户设置。想知道这样的事情在 iOS 上是否可行。
    【解决方案2】:

    静默推送通知不需要推送通知权限,但仍然可以通过关闭“后台应用刷新”来禁用它们:

    Is Silent Remote Notifications possible if user has disabled push for the app?

    在另一个应用程序运行时执行任何类型的后台网络请求是一项耗电的事情。许多网站告诉用户禁用使用大量电源的应用程序的后台应用程序刷新。不必要地使用此功能可能会引起对您应用的关注并让您的用户禁用此权限:

    https://www.businessinsider.com/how-to-make-iphone-last-longer-battery-life-tip-2019-7?r=US&IR=T#:~:text=Turn%20off%20Background%20App%20Refresh.&text=That%20way%20the%20next%20time,%22%20and%20select%20%22Off.%22

    您可以简单地在应用启动时检查推送通知权限并将其记录在那里。使用静默推送通知来跟踪用户设置是一件很奇怪的事情。如今,每个人都对正在跟踪的应用程序感兴趣,并且苹果公司竭尽全力通知用户正在跟踪的内容,如果发现它,这样做可能会给您的应用程序带来一些负面影响。我不会安装这样的应用程序,因为我会想“当我的应用程序关闭时,他们还会跟踪什么”

    【讨论】: