Push Notification的设备令牌可以用作唯一标识符吗?

时间:2013-08-21 10:16:46

标签: ios

问题:不推荐使用UDID - 我们不能再使用它了。 网上有一些解决方案:生成GUID并将其存储在“安全位置”,iCloud,IdentifierForVendor,从iOS6开始,OpenUID,SecuredID等等......

请求: 我需要有一个唯一的设备标识符来存储用户数据。

问题: 我可以使用推送通知的deviceToken作为唯一标识符吗?

这个想法的优点和缺点是什么?

  • ( - )用户可以禁用推送通知
  • (+)唯一号码
  • (+)支持所有iOS

3 个答案:

答案 0 :(得分:2)

这是一个可怕的想法,如果用户更改设备或其他一些未知原因,令牌可能会更改。

  • 用户可以拥有多个设备
  • 如果用户重新安装应用,则可以获得其他令牌
  • 用户保持相同的标记不是100%。

最重要的是:You are identifying devices not users!

一种解决方案是生成UUID并将其保存在用于检索它的用户密钥链中。但是,如果用户清除设备,也可以删除它。

您最好的选择是允许用户使用可以创建的帐户登录。然后,您可以将其与钥匙串中的UUID结合使用。

答案 1 :(得分:0)

您应该使用identifierForVendor。推送通知的deviceToken是唯一的,但CAN可以更改。

答案 2 :(得分:0)

         The token can change if the user reset the device, for unique device identifying you can use the following code

            float currentVersion = 6.0;
            NSString *udid = nil;
            if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion)
            {
        //below code is taken from the Apple Sample code, to check you can download the files
        https://developer.apple.com/library/ios/releasenotes/StoreKit/IAP_ReceiptValidation
      // OR
        http://developer.apple.com/library/ios/releasenotes/StoreKit/IAP_ReceiptValidation/VerificationController.zip (line number 319)

        udid = [UIDevice currentDevice].identifierForVendor.UUIDString;

            }
            else
            {
        //may cause apple rejection          
        udid = [UIDevice currentDevice].uniqueIdentifier;

        //i think we can use the below link for ios5 or below but not sure it may accept or reject
        https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5
            }

//just saw a link which may help you better and have a look at image
http://www.doubleencore.com/2013/04/unique-identifiers/

enter image description here

即使在重新安装应用,删除应用或系统重启或系统启动或恢复出厂设置后,有人会建议保留唯一ID的最佳方法