繁体   English   中英

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

[英]Cordova-IOS How to get iPhone UUID or alternative identifier

我正在基于Cordova的应用程序上工作,出于安全原因,需要确定设备,然后再将任何请求发送到服务器端

但是您可能知道,Apple现在禁止使用任何方式来识别该设备。

我已经尝试了许多插件,但它似乎只能在android上工作,在IOS上,它只能识别应用程序而不是设备,我也尝试了本机目标C代码,例如

[[[UIDevice currentDevice] identifierForVendor] UUIDString]

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

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

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

删除应用程序并重新安装它不会改变。

请参阅: 在设备上卸载ios应用程序后,如何在ios中保留identifierForVendor?

更多..

我没有在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

如果您不想自己做,请使用我发现的插件: http : //plugins.cordova.io/#/package/com.crypho.plugins.securestoragehttp://plugins.cordova.io/# /package/com.shazron.cordova.plugin.keychainutil

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

为什么不使用具有device.uuid方法且可在Android和IOS上运行的标准cordova-plugin-device

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

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

var string = device.uuid;

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)];


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM