通过静默推送读取 iOS 推送权限

Read iOS push permissions via silent push

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

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

更新

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

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

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

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

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