设备令牌是否会随着操作系统的渐变而改变?

时间:2013-12-10 05:13:39

标签: ios iphone push-notification device token

我对设备令牌更新有疑问。如果我们升级操作系统,例如从iOS 6升级到iOS 7,应用程序的设备令牌会更新还是与旧版本保持一致?

我浏览了Apple文档,但是我没有找到任何针对OS渐变的具体答案。根据我的知识和形式,其他人回答相同的问题,我有以下信息。

  

“通过请求设备令牌并将其传递给提供者   您的应用程序启动时,您可以帮助确保提供程序   拥有设备的当前令牌。如果用户将备份还原到   除了为其创建备份的设备之外的设备(用于   例如,用户必须将数据迁移到新设备   至少启动一次应用程序以接收通知   再次。如果用户将备份数据还原到新设备或重新安装   操作系统,设备令牌发生变化。而且,永远不要缓存   设备令牌并将其提供给您的提供商;总是得到令牌   在您需要时从系统中获取。如果你的申请有   以前注册过,调用registerForRemoteNotificationTypes:   导致iOS立即将设备令牌传递给委托   不会产生额外的开销。“

我的问题背后的意图是,我想将设备令牌用作唯一ID,例如UDID。在iOS 6之后,获取UDID方法被拒绝,并且UDID没有替代方法。

我知道identifierForVendor,但它是特定于应用程序的&如果我们删除应用程序,它将会改变。我希望从iPhone中获得一个唯一ID,永远不会改变,但我找不到苹果允许存储的任何方法,如IMEI nubmer等。

总结可以任何ID或数字是唯一的,它永远不会改变,我们可以将它用于我们不能被苹果拒绝的应用程序吗?

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题,因为我知道升级操作系统时设备令牌不会改变。但我没有参考链接。 对于第二个问题,您可以使用以下方法在iOS 6或更高版本中获取UUID:

+ (NSString *)GetUUID
{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [(NSString *)string autorelease];
}