【IOS】 遍历info 的所有内容 && 保存设备唯一UUID

/**获取设备的imie*/
std::string DeviceInfo::getIMIE() {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    NSString*bunider = nil;
    NSBundle* mainBundle = [NSBundle mainBundle];
    NSDictionary* infoDictionary =  [mainBundle infoDictionary];
    id key;
    NSArray* keys = [infoDictionary allKeys];
    NSLog(@"Display all keys and values in info.plist\n");
    for(key in keys)
    {
        NSString * keyCFBundleVersion = (NSString*)key;
        if([keyCFBundleVersion isEqualToString:@"CFBundleIdentifier"])
        {
            NSLog(@"Bundle identifier = %@",keyCFBundleVersion);
            
            id  version =   [infoDictionary objectForKey:key];
            bunider = (NSString*)version;
            NSLog(@"bunider : %@",bunider);
        }
       // NSLog(@"key=%@ , value=%@\n",key,[infoDictionary objectForKey:key]);
    }

     NSString *uuid = Nil;
//    需要用到开源类SSKeychain
//    SSKeyChains对苹果安全框架API进行了简单封装,
//    支持对存储在钥匙串中密码、账户进行访问,包括读取、删除和设置。
//    SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes。
    
//    项目地址:https://github.com/samsoffes/sskeychain
    
//    在工程中加入SSKeyChain
    
//    在工程中加入Security.framework框架。
//    把SSKeychain.h和SSKeychain.m加到项目文件夹。
    
    NSString *retrieveuuid = [SSKeychain passwordForService:bunider account:@"user"];
    if ([retrieveuuid length] >0) {
        uuid =  retrieveuuid;
        NSLog(@"uuid = %@",uuid);
        return [uuid UTF8String];
    }
  
   
	CFStringRef ref = CFUUIDCreateString(kCFAllocatorDefault,
                                         CFUUIDCreate(kCFAllocatorDefault));
    uuid = (NSString *)ref;
    const char* destDir = [uuid UTF8String];
    CFRelease(ref);
    CCLOG("uuid = %s",destDir);
   string   sime = destDir;
    sime = sime.substr(0,6);
    log("sime = %s",sime.c_str());
    uuid =  [NSString stringWithFormat:@"%s", sime.c_str()];

    [SSKeychain setPassword:uuid forService:bunider account:@"user"];
    
    return sime;
#elif (CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
	JniMethodInfo minfo;//定义Jni函数信息结构体
    //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数
    bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/nx/DeviceInfo","getIMIE", "()Ljava/lang/String;");
	if(isHave){
		jstring jstr;
		jstr = (jstring)minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
		string IMIE = JniHelper::jstring2string(jstr);
		CCLOG("--------------------------------------->IMIE: %s",IMIE.c_str());
		return IMIE;
	}
	return "androidleon";
#endif
	
	
	///////////////////////////////////////debug
	auto strings=FileUtils::getInstance()->getValueMapFromFile("debug_text.xml");
    std::string debug_user_name  = strings["user_name"].asString();
	if(debug_user_name.size()>0){
		CCLOG("==use debug username==");
	   return debug_user_name;
	}
	/////////////////////////////////////////////////

	return "12124124123123124wbytext";
}

 

你可能感兴趣的:(【IOS】 遍历info 的所有内容 && 保存设备唯一UUID)