【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

时间: 2024-10-13 18:27:37

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

ios开发——实用技术篇OC篇&获取设备唯一标识

获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS7中也失效了. IOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成. 二.UUID(Univers

用keychain这个特点来保存设备唯一标识。

由于IOS系统存储的数据都是在sandBox里面,一旦删除App,sandBox也不复存在.好在有一个例外,那就是keychain(钥匙串). 通常情况下,IOS系统用NSUserDefaults存储数据信息,但是对于一些私密信息,比如密码.证书等等,就需要使用更为安全的keychain了. keychain里保存的信息不会因App被删除而丢失.所以,可以利用这个keychain这个特点来保存设备唯一标识. 那么,如何在应用里使用使用keyChain呢,我们需要导入Security.framew

iOS开发之聊天模块--内容保存逻辑实现

需求详解: 在实际开发中,有可能是在后期优化的时候,会有这么需要优化的需求:聊天输入框保存之前输入的文本,提高用户的良好体验. 在聊天模块中,用户可能会在输入框输入若干字符,但是没有点击发送就点击退出聊天,或者要点击用户头像确认用户的信息,或者比如需要向好友发送另一个好 友的ID不得不暂时退出当前好友聊天界面跳转找到别的界面找ID,然而当前聊天输入框也已经输入好了若干字符,用户当然不希望退出之后就删除之前输入好的 文字.所以这里就需要暂时保存用户输入好的但是没有发送出去的字符串. 但是,还需要满

iOS开发日记20-7.0之后获取设备唯一标识

今天博主有一个获取设备唯一标识的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 在iOS7.0之前,获取设备唯一标识的方法主要是获取UDID或MAC地址,但是在iOS7.0之后,为了保护用户隐私,苹果把他们都禁止了,使得设备的数据追踪变得越来越难. iOS7.0之后,获取设备唯一标识的方法主要有两种: 1.广告标识符 IDFA 苹果为了完善自己的生态圈,在2010年前后推出了iAd广告网络.那么这个IDFA和这个iAd的关系就不言自喻了.如果不了解广告也没关系,简单来讲,现在的互联网

iOS 获取设备唯一标示符的方法

在开发中会遇到应用需要记录设备标示,即使应用卸载后再安装也可重新识别的情况,在这写一种实现方式--读取设备的UUID(Universally Unique Identifier)并通过KeyChain记录. 首先iOS中获取设备唯一标示符的方法一直随版本的更新而变化.iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符.好景不长,因为该唯一标识符与手机一一对应,苹果觉得

IOS 用keychain(钥匙串)保存用户名和密码

IOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成. 二.UUID(Universally Unique Identifier)  UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码. 三.MAC Address 四.OPEN UDID 五.广告标

[转] iOS7如何获取设备唯一标识

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); WWDC 2013已经闭幕,I

IOS获取设备唯一标识的八种方法

免责声明:本文章来源于其他博客整理 参考:http://www.2cto.com/kf/201308/237648.html 参考:http://www.2cto.com/kf/201311/255684.html 在iOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成(越狱的设备通过某些工具可以改变设备的U

Delphi RichEdit的内容保存为图片

uses RichEdit; {将RichEdit1的内容保存为图片,此函数也适合于RxRichEdit,即RichEdit: TRxRichEdit}procedure RichEditToCanvas(RichEdit: TRichEdit; Canvas: TCanvas; PixelsPerInch: Integer);varImageCanvas: TCanvas;fmt: TFormatRange;beginImageCanvas := Canvas;with fmt dobegin