【问题标题】:Does the device token change ever on up gradation of OS?设备令牌是否会随着操作系统的升级而改变?
【发布时间】:2013-12-10 05:13:38
【问题描述】:

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

我浏览了 Apple 文档,但没有找到任何关于操作系统升级的具体答案。根据我的知识和其他人对同一问题的回答,我有以下信息。

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

我提出问题的意图是,我想使用设备令牌作为唯一 ID,例如 UDID。 iOS 6以后,获取UDID的方法被拒绝了,UDID也没有办法了。

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

总而言之,任何 ID 或编号都可以是唯一且永远不会改变的,并且我们可以将其用于我们无法被苹果拒绝的应用程序吗?

【问题讨论】:

    标签: ios iphone push-notification device token


    【解决方案1】:

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

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

    【讨论】:

    • 我建议改用[[[UIDevice currentDevice] identifierForVendor] UUIDString]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2012-09-22
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多