UDID总是从IOS中的钥匙串返回零数据?

时间:2016-08-08 09:54:18

标签: ios iphone keychain keychainitemwrapper

我有一个应用程序,我将[[[UIDevice currentDevice] identifierForVendor] UUIDString]保存在钥匙串上,如下所示:

NSString *bundleId = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];

NSString *strApplicationUUID;



if(![keychainItem objectForKey:(__bridge id)(kSecValueData)]){
        NSString *idfa = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
          NSLog(@"bundleId %@",idfa);
        [keychainItem setObject:idfa forKey:(__bridge id)(kSecValueData)];
        NSLog(@"saving item %@", [keychainItem objectForKey:(__bridge id)(kSecValueData)]);
         strApplicationUUID=[keychainItem objectForKey:(__bridge id)(kSecValueData)];
   }else{
        NSLog(@"saved item is %@", [keychainItem objectForKey:(__bridge id)(kSecValueData)]);

    strApplicationUUID=[keychainItem objectForKey:(__bridge id)(kSecValueData)];
    }

// NSString *strApplicationUUIDstr = [[NSString alloc] initWithData:[keychainItem objectForKey:(__bridge id)(kSecValueData)]
                                                 //encoding:NSUTF8StringEncoding];

NSLog(@"%@",strApplicationUUIDstr);
NSLog(@"%@",strApplicationUUID);

return strApplicationUUID;

但它总是给我零数据。第一次没有保存,有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

由于Apple阻止使用UDID,您的应用可能会被拒绝: -

可以帮助你:

-(NSString *)getUniqueDeviceIdentifierAsString
{

 NSString *appName=[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];

 NSString *strApplicationUUID = [SSKeychain passwordForService:appName account:@"incoding"];
 if (strApplicationUUID == nil)
 {
    strApplicationUUID  = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    [SSKeychain setPassword:strApplicationUUID forService:appName account:@"incoding"];
 }

 return strApplicationUUID;
}