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:
-(void) setKeyChainValue { KeychainItemWrapper *keyChainItem=[[KeychainItemWrapper alloc]initWithIdentifier:@"TestUUID" accessGroup:@"XXXXXX.h.HelloWorld"]; NSString *strUUID = [keyChainItem objectForKey:(id)kSecValueData]; if (strUUID==nil||[strUUID isEqualToString:@""]) { [keyChainItem setObject:[self gen_uuid] forKey:(id)kSecValueData]; } [keyChainItem release]; } -(NSString *) gen_uuid { CFUUIDRef uuid_ref=CFUUIDCreate(nil); CFStringRef uuid_string_ref=CFUUIDCreateString(nil, uuid_ref); CFRelease(uuid_ref); NSString *uuid=[NSString stringWithString:uuid_string_ref]; CFRelease(uuid_string_ref); return uuid; }
应用程序第一次在某台设备上运行时,我们的应用程序保存一个uuid,来标识该设备。等设备把程序删除时,该uuid依然存在于设备中。
相关推荐
1. iOS:在iOS系统中,通常使用UDID(Unique Device Identifier)作为设备的唯一标识。然而,由于隐私保护政策的改变,自iOS 6开始,Apple不再提供UDID。现在,开发者可以使用广告标识符(IDFA,Identifier for ...
综上所述,iOS平台凭借其卓越的用户体验、先进的开发工具、高度一致性的软硬件、完善的安全性以及灵活的部署方式,已经成为企业构建移动解决方案的理想选择。对于希望利用移动技术推动业务发展的企业来说,深入理解...
iOS 设备唯一标示符(UDID)解决方案 ZKUDIDManager ,ZKUDIDManager是一个开源的基于Keychain和IDFV的iOS设备唯一标示符(UDID...
8种iOS获取设备唯一标识的方法,希望对大家有用。 UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 UDID),移动网络可以利用 UDID ...
在iOS开发中,获取设备的唯一标识符是一个常见的需求,特别是在需要区分不同用户设备或存储设备特定数据时。本文将详细讲解如何在iOS系统中获取设备的唯一标识,并讨论相关的重要知识点。 首先,我们需要理解“UUID...
iOS开发--Xcode8不支持iOS10.2系统设备的解决方案. (1) Xcode添加路径 Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.2 (14C5062c)
总之,这个资源包提供了一种在iOS上获取设备名称和创建稳定设备标识符的方法,特别适合需要跨设备同步信息或进行用户行为追踪的应用场景。在实际使用中,开发者应始终尊重用户隐私,遵循Apple的App Store指南,确保...
在iOS开发中,获取设备的唯一标识是一个常见的需求,它有助于开发者区分不同的用户设备,进行个性化设置、数据同步或者分析用户行为。然而,由于隐私保护的考虑,Apple对获取设备唯一标识符的方法进行了严格的限制。...
- 如果在开发阶段,你可以使用Unity Remote 5这个官方插件,它可以让Unity编辑器实时接收iOS设备上的日志信息。 3. **iTunes File Sharing**: - 将应用安装到设备上,然后通过iTunes连接设备,选择应用并启用...
标题“iOS 键盘遮挡输入框万能解决方案(多个输入框)”针对的就是这个问题,提供了一种解决多个输入框被键盘遮挡的通用方法。描述中提到的“OC 键盘遮挡输入框万能解决方案(多个输入框)”表明这是一个基于...
Swift编程实战:iOS应用开发实例及完整解决方案是针对苹果平台应用程序开发的一本深入实践的教程。这本书主要聚焦于使用Apple的Swift语言来构建iOS应用程序,为开发者提供了丰富的实例和全面的解决方案,帮助他们...
综上所述,面对苹果对设备标识符的限制,iOS开发者可以利用OpenUUID或钥匙串等方法生成和存储设备的唯一标识。在实际应用中,应注重隐私保护,合理设计和使用这些标识符,以满足业务需求的同时,遵守苹果的开发规定...
iOS获取唯一标识,在不刷机的前提下,无论多次获取,还是卸载后重装程序,获取的 uuid 都不会发生改变
对iOS9新特性介绍及解决方案!iOS 9 新特性 1.网络适配-Https HTTP请求失败 解决了编译问题后,程序跑起来了,却发现很多网络请求失败。这是因为iOS9默认不支持HTTP请求,需要改用更安全的HTTPS(默认用TLS 1.2)...
Swift编程实战:iOS应用开发实例及完整解决方案 Swift是苹果公司推出的一种强大的、类型安全的编程语言,主要用于iOS、iPadOS、macOS、watchOS和tvOS的应用开发。本资料《Swift编程实战:iOS应用开发实例及完整解决...
iOS之presentViewController模态全屏适配解决方案 .isPresentViewController模态全屏适配是iOS开发中的一项重要技术问题。从iOS 13.0开始,默认的模态显示视图从全屏变成了Sheet卡片样式的非全屏模式。这使得许多...
在iOS设备上,当用户在Web应用或者网页中进行滚动操作时,有时会发现列表顶部下拉或底部上拉会暴露浏览器的灰色背景,这在视觉体验上可能会显得不连贯,影响整体应用的美观度。针对这个问题,本文将提供一种解决方案...
尽管如此,如果你的应用确实需要某种形式的唯一标识符,可以使用`identifierForVendor`或者自定义的解决方案,如保存首次启动时生成的UUID到本地,然后每次启动时检查这个值。这样可以在一定程度上模拟设备的唯一性...
### iOS最新审核被拒及解决方案 #### 一、概述 在进行iOS应用开发的过程中,开发者经常会遇到应用提交至App Store后被苹果审核团队拒绝的情况。这种情况不仅会延误应用的上线时间,还可能对项目的整体进度产生负面...