Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios APN设备令牌是否依赖于推送通知权限_Ios_Swift_Apple Push Notifications - Fatal编程技术网

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

Ios APN设备令牌是否依赖于推送通知权限,ios,swift,apple-push-notifications,Ios,Swift,Apple Push Notifications,如果用户在首次启动应用程序时拒绝推送通知权限,应用程序是否会收到APN设备令牌?否,您需要具有用户权限才能获取令牌。重要编辑:此回答不正确。请看下面的答案。我不能删除,因为这是一个公认的答案 用户必须授予您获取设备令牌的权限 如果用户给予许可,-(void)application:(UIApplication*)application didRegisterForRemotionTificationswithDeviceToken:(NSData*)deviceToken方法在AppDelega

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

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

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

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

如果用户给予许可,
-(void)application:(UIApplication*)application didRegisterForRemotionTificationswithDeviceToken:(NSData*)deviceToken
方法在
AppDelegate
中执行,您将获得设备令牌


如果用户拒绝授予权限,
-(void)application:(UIApplication*)application未能注册远程通知。将执行错误:(NSError*)error
方法,您将只获得相应的
NSError
对象。

有一个非常重要的异常,您应该注意。如果启用后台模式“远程通知”,则无论用户对权限问题的响应如何,都将从iOS获得令牌。您将能够使用此令牌向应用程序发送静默推送通知(在json的“aps”部分中,将content available key设置为1的推送) 静默通知意味着,如果你的应用程序位于前台,你将在DidReceiveMemoteNotification中获得成功,如果你的应用程序位于后台,它也将(在后台)获得对同一委托函数的调用。
但是-这对用户来说是不可见的。因此,它仍然提供了一种与应用程序通信的方式,尽管这是一种有限的方式。

这不准确。你仍然可以通过无声推送获得令牌。请看下面talshahar的回答。这是正确的答案。我已经通过实验验证了这一点,并且正在我自己的应用程序中使用此方法。订阅现在,无论用户接受还是拒绝,都会使用设备令牌调用vent,但它仍会等待调用,直到用户做出选择。此答案是正确的。我正在删除我的答案以避免误导,对此表示抱歉