Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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 Apple推送通知中的设备令牌是否发生过变化_Ios_Iphone_Push Notification - Fatal编程技术网

Ios Apple推送通知中的设备令牌是否发生过变化

Ios Apple推送通知中的设备令牌是否发生过变化,ios,iphone,push-notification,Ios,Iphone,Push Notification,我正在开发一个iOS应用程序,在其中我实现了推送通知。 一切正常。 但我只想问一下,我的苹果设备的设备令牌是否会改变 我们还需要internet连接来生成设备令牌 谢谢根据苹果的文档,答案是肯定的: 此阶段令牌信任的形式确保只有APN生成 它将在以后兑现的代币,它可以保证 设备交给它的令牌与以前的令牌相同 为该特定设备设置,并且仅为该设备设置 如果用户将备份数据恢复到新设备或重新安装 在操作系统中,设备令牌发生更改 我的Apple设备的设备令牌将永远更改 --对。如果将备份数据恢复到新设备或重新

我正在开发一个iOS应用程序,在其中我实现了推送通知。 一切正常。 但我只想问一下,我的苹果设备的设备令牌是否会改变

我们还需要internet连接来生成设备令牌


谢谢

根据苹果的文档,答案是肯定的:

此阶段令牌信任的形式确保只有APN生成 它将在以后兑现的代币,它可以保证 设备交给它的令牌与以前的令牌相同 为该特定设备设置,并且仅为该设备设置

如果用户将备份数据恢复到新设备或重新安装 在操作系统中,设备令牌发生更改


我的Apple设备的设备令牌将永远更改

--对。如果将备份数据恢复到新设备或重新安装操作系统,则设备令牌将更改。因此,我的建议是使用令牌更新服务器

生成设备令牌是否需要internet连接

--据我所知,是的。注册用户时,调用方法注册推送通知。成功注册后,此函数将调用委托方法-

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
表示您已成功注册推送通知,或在推送通知调用失败时注册-

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
指示注册通知失败

您可以通过关闭网络并运行应用程序进行检查。

来自apple文档-

设备令牌是向特定设备上的应用发送推送通知的密钥。设备令牌可以更改,因此您的应用程序需要在每次启动时重新注册,并将收到的令牌传递回服务器。如果无法更新设备令牌,远程通知可能无法到达用户的设备

当用户将备份数据恢复到新设备或计算机或重新安装操作系统时,设备令牌始终会更改。将数据迁移到新设备或计算机时,用户必须先启动应用程序一次,然后才能将远程通知发送到该设备。

从不缓存设备令牌;无论何时需要,始终从系统获取令牌。如果您的应用程序以前注册了远程通知,则再次调用registerForRemoteNotifications方法不会产生任何额外开销,并且iOS会立即将现有设备令牌返回给您的应用程序代理。此外,iOS会在设备令牌更改时调用您的委托方法,而不仅仅是响应您的应用程序注册或重新注册


更多信息

可能重复的已更改注释:报价单中的最后一句已删除。对于APNS已更改:它不再表示设备令牌将在还原或重新安装操作系统时重置。但是它仍然表示它可能在软件更新时更改,因此您仍然必须处理此问题。