APN设备令牌是否依赖于推送通知权限

Does APN device token depend on push notification permission

如果用户在应用程序初始启动时拒绝推送通知权限,应用程序是否会收到 APN 设备令牌?

否,您需要有用户权限才能获取令牌

重要编辑:此答案不正确。请看下面的答案。我不能删除它,因为它是一个公认的答案。

用户必须授予您获取设备令牌的权限。

如果用户授予权限,- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 方法将在 AppDelegate 中执行,您将获得设备令牌。

如果用户拒绝授予权限,则执行- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error方法,你只会得到相应的NSError对象。

您应该注意一个非常重要的例外情况。如果启用后台模式 "Remote Notifications",无论用户对权限问题的响应如何,您都将从 iOS 获得令牌。您将能够使用此令牌向您的应用发送静默推送通知(在 json 的 'aps' 部分中将内容可用密钥设置为 1 的推送 静默通知意味着如果您的应用程序在前台,您将在 didReceiveRemoteNotification 中获得成功,如果您的应用程序在后台,它也会(在后台)调用相同的委托函数。 但是 - 这对用户是不可见的。所以它仍然为您提供了一种与您的应用程序通信的方式,尽管是一种有限的方式。