Cordova-IOS如何获取iPhone UUID或替代标识符

时间:2015-06-04 08:23:44

标签: ios iphone cordova phonegap-plugins cordova-plugins

我正在开发基于Cordova的应用程序,出于安全原因,我需要在向服务器端发送任何请求之前识别设备

但是你可能知道Apple现在禁止任何识别设备的方法。

我已经尝试了很多插件,但它似乎只在android上运行,在IOS上它只是识别应用程序而不是设备我也尝试过本机目标C代码

[[[UIDevice currentDevice] identifierForVendor] UUIDString]

但在删除应用程序并重新安装时也发生了变化

有关如何使用UDID或IMEI或任何其他替代方法识别iPhone的任何建议

3 个答案:

答案 0 :(得分:0)

为什么不使用具有cordova-plugin-device方法且适用于Android和IOS的标准device.uuid

请参阅:https://github.com/apache/cordova-plugin-device#deviceuuid

  

获取设备的通用唯一标识符(UUID)。

     

var string = device.uuid;

答案 1 :(得分:0)

在KeyChain中保留identifierForVendor或自定义UUID。

删除应用程序并重新安装时不会更改。

请参阅: How to preserve identifierForVendor in ios after uninstalling ios app on device?

更多..

我不与Cordova合作,但我知道混合应用程序是如何工作的。

  1. 为经理创建iOS本机方法(获取,设置,删除)KeyChain。
  2. 创建iOS本机方法以创建UUID。
  3. 让Cordova使用原生方法:http://cordova.apache.org/docs/en/2.5.0/guide_plugin-development_ios_index.md.html
  4. 如果您不想自己动手,请使用我找到的插件: http://plugins.cordova.io/#/package/com.crypho.plugins.securestorage 要么 http://plugins.cordova.io/#/package/com.shazron.cordova.plugin.keychainutil

    但是你应该检查它们是否正常工作。

答案 2 :(得分:0)

Reming Hsu对于保存任何UDID的想法是正确的,即使它是用于钥匙串中的应用程序然后重复使用它是非常有效的,这里是完整的代码

 NSString *myUUID = [[[UIDevice currentDevice] identifierForVendor]    UUIDString];
    KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"myApp" accessGroup:nil];
if ([[keychainItem objectForKey:(__bridge id)kSecAttrAccount] length]) {

    NSString *imeiFromK = [keychainItem objectForKey:(__bridge id)(kSecAttrAccount)];

}
else {

    [keychainItem setObject:myUUID forKey:(__bridge id)(kSecAttrAccount)];


}