zoukankan      html  css  js  c++  java
  • 【转帖】ios上取得设备唯一标志的解决方案

    原文地址:http://lqzit.iteye.com/blog/2070306

    注意:keychina设置完之后,项目目录里的“项目名.entitlements”文件不是手动创建出的,而是在按照如下操作在点击项目根目录---》点击capabilities--->keychain sharing设置完毕之后就自动在proj.ios目录出现了一个项目名的文件夹里面就是 "项目名.entitlements"文件。

    ==================

       iOS 7中苹果再一次无情的封杀mac地址,现在已经不能获取ios7设备的物理地址。那么在开发中如何才能标识设备的唯一性呢?apple公司提供的方法是通过keychain来存一些标志信息,然后通过存的标志信息来让应用程序来识别该设备的唯一性。

     apple公司写了一个简单的操作keychain的工具类:https://developer.apple.com/library/ios/samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_m.html可以下载,把KeychainItemWrapper.h,.m文件引用xcode中,keychainItemWrapper.m文件可能出错,这里是由于arc编译造成的,我们可以根据提示进行解决,也可以用如下图的方式解决:

    接着设置keychain共享:如图所示

        

    此我们可以在项目中看到xxxxx.entitlements结尾的文件。<?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

    <plist version="1.0">

    <string>$(AppIdentifierPrefix)h.HelloWorld</string>

    </plist>

    其中的${AppldentifierPrefix}是开发者账户的的前缀,是apple的公司提供的,https://developer.apple.com/membercenter/index.action,可以用自已的账户进行查看。

    存取:key chain:

    Java代码  收藏代码
    1. -(void) setKeyChainValue  
    2. {  
    3.     KeychainItemWrapper *keyChainItem=[[KeychainItemWrapper alloc]initWithIdentifier:@"TestUUID" accessGroup:@"XXXXXX.h.HelloWorld"];  
    4.     NSString *strUUID = [keyChainItem objectForKey:(id)kSecValueData];  
    5.     if (strUUID==nil||[strUUID isEqualToString:@""])  
    6.     {  
    7.         [keyChainItem setObject:[self gen_uuid] forKey:(id)kSecValueData];  
    8.     }  
    9.     [keyChainItem release];  
    10.   
    11. }  
    12.   
    13. -(NSString *) gen_uuid  
    14. {  
    15.     CFUUIDRef uuid_ref=CFUUIDCreate(nil);  
    16.     CFStringRef uuid_string_ref=CFUUIDCreateString(nil, uuid_ref);  
    17.     CFRelease(uuid_ref);  
    18.     NSString *uuid=[NSString stringWithString:uuid_string_ref];  
    19.     CFRelease(uuid_string_ref);  
    20.     return uuid;  
    21. }  

       应用程序第一次在某台设备上运行时,我们的应用程序保存一个uuid,来标识该设备。等设备把程序删除时,该uuid依然存在于设备中。

  • 相关阅读:
    运行从别处复制过来的linux可执行程序
    查看linux服务器版本
    编码问题
    Programmer Dvorak键盘布局
    Ubuntu下安装JDK图文解析
    数据结构和算法设计专题之---24点游戏(穷举法和递归法)
    数据结构和算法设计专题之---单链表的逆序
    Android中实现静态的默认安装和卸载应用
    J2EE学习篇之--JQuery技术详解
    MyEclipse6.0中使用aptana插件,添加jquery提示功能
  • 原文地址:https://www.cnblogs.com/JD85/p/4318860.html
Copyright © 2011-2022 走看看