独立iOS设备识别?怎么办

独立iOS设备识别?怎么办,第1张

1同时编辑同一张照片,并实时同步保存。 Mac电脑暂未加入这一功能,Mac版的iCloud照片图库应用将最于2015年上线。 2信息功能 iPhone用户现在可以使用iPad和Mac收发短信与彩信,但需要你的其他设备也是最新版,例如Mac需要升级到OS X Yosemite。 3支付功能 新增AirDrop对Passbook凭证的支持;部分分国家开始支持Apple Pay功能,不过,被苹果掌门人库克称为“将改变我们支付方式”的ApplePay服务,并未同期向中国内地用户开放。据《第一财经日报》报道,苹果公司正与中国银联等多方谈判。此功能何时在内地可用尚不得而知。 4网络功能 用户可选2G、3G或LTE蜂窝数据网络(但在行货iPhone上未见此功能) 5其他新功能 HealthKit健康应用程序可在后台访问数据。 增加了新选项,无需从 Siri 设置,可直接在“设置”的“键盘”中单独启用“听写”功能增进了 iPhone 6 及 iPhone 6 Plus 与 MFi 助听器配合使用时的稳定性和音质 6问题修复 解决了搜索结果有时无法显示的问题,修复了造成已读信息无法被标记为已读的错误修复群发信息的一些问题,修复了 VoiceOver无法配合第三方键盘使用的问题。修复了 VoiceOver音频拨号时,拨打下一号码前音频无法停止的问题,修复了导致无法使用OS X缓存服务器来更新iOS的问题。 4总结:值得升级 对中国内地多数用户来说,Apple Pay功能还遥遥无期;iOS 81升级的意义是照片与信息功能的改进;以及众多问题修复,另外,iOS 81进一步增强了iPhone与iPad及Mac电脑的协同能力,对拥有多款苹果苹果设备的用户无疑是福音。

关于IDFA的相关资料,网上已经很多了,这里主要说明二点:
1、如何获取IDFA并保存至keychain;
2、提交应用时如何选择;
string strRet;
NSString identifier = [[NSBundle mainBundle] bundleIdentifier];
NSString keyName = [[NSString stringWithFormat:@"%@adfaname",identifier]init];
NSString keyValue = [[NSString stringWithFormat:@"%@adfavalue",identifier]init];
NSMutableDictionary KeyNameValue = (NSMutableDictionary )[CHKeychain load:keyName];
NSString ValueADFA= [KeyNameValue objectForKey:keyValue];
if(ValueADFA)
{
strRet = [[ValueADFA uppercaseString] UTF8String];
}
else
{
NSString adId =[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
//NSLog(@"adId: %@",adId);
strRet = [[adId uppercaseString] UTF8String];

NSMutableDictionary usernamepasswordKVPairs = [NSMutableDictionary dictionary];
[usernamepasswordKVPairs setObject:adId forKey:keyValue];
[CHKeychain save:keyName data:usernamepasswordKVPairs];
}
return strRet;
这里尽量要保证IDFA的唯一性,如果广告联盟使用手工 *** 作,每下载应用一次后手动去重置一下广告跟踪,然后再下载。这样对于它来讲是二次下载,对于我们来讲,这样的用户其实属于“作弊”了。所以没有将IDFA存到UserDefault中,每次都从keychain上取

使用IDFA,程序中一定要引用AdsupportFramework,因为我们项目并没有使用到友盟或者其它第三方的SDK,所以提交的情况跟其它引用相关SDK的可能不太一样。但网上关于这个提的问题倒很多,已经上线给出建议和解决方案的却并不多。因为我们项目已经提交并审核通过了,这里只是记录一下
首先一定要勾选申请项目内使用了IDFA,然后我们项目勾选的是“Serve advertisements within the app”

NSString idfa = [ASIdentifierManager sharedManager]advertisingIdentifierUUIDString;

NSLog(@"uuid == %@",idfa);

1     idfa == 40879ADB-E3E8-4FD4-BE28-86DF97532DC7 //删除APP后值不会变

2   idfa == F46F1D35-BE54-41C7-B174-B332D4F0A871 //重置后变化了

3   idfa == 00000000-0000-0000-0000-000000000000 //关闭广告 开启后值不变

NSString idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

NSLog(@"idfv == %@",idfv);

1 idfv == 7244DCA8-BFB0-4A45-AD56-BA9B886F7976

2 idfv == 11D47793-BC0F-4446-B891-6E42E0697BA9  //删除APP后会变化

需要。根据查询广告标识符系统官方可知,重置广告标识符需要重置,IDFA 全称为 Identity for Advertisers ,即广告标识符,用来标记用户,最广泛的用途是用于投放广告、个性化推荐等。

一般来说,新增用户是指首次联网使用应用的用户,以设备号(DeviceID)作为判断标准。
举例(一般情况下):
用户A在该设备D上第1次打开app时,会被记作为1个新增用户;
该用户A在设备D上卸载应用后重新安装该应用,不会被记1个新增用户;
该用户A在设备D上通过其他账号登录,不会被记作1个新增用户;
该用户A在其他新设备E上第1次打开APP时,会被计作为1个新增用户。

新增用户指标的统计方法,可以简单地理解为,每次获取到1个新的DeviceID,新增用户数+1;在不同平台上,其统计SDK获得DeviceID的处理方法有所不同:

一、Android平台
统计SDK可直接读取到Android设备的IMEI号,用该IMEI号,即可生成DeviceID。
DeviceID可以通过以下公式获取:DeviceID=x1+MD5(android_imei_mac)

二、IOS平台
1、UDID
UDID(设备唯一标识符,Unique Device Identifier),UDID,之前一直是设备唯一标识的神器,各大应用和统计SDK均通过获取UDID标识设备。不过,2013年5月1日后,读取UDID的应用,将被拒绝上架,相当于把这条路封死了。

2、MAC地址
IOS70以前的设备,可读取MAC地址,通过该MAC地址,即可生成DeviceID。
DeviceID可以通过以下公式获取:DeviceID=x2+MD5(ios_mac)
IOS70及以后的设备,MAC地址返回的是一个固定值,因此对于iOS70及以后的设备,将无法通过MAC地址来标识设备的唯一性。

3、openUDID
openUDID,是通过第一个带有OpenUDID SDK包的App生成的,在下列2种情况下,openUDID会重新生成:
(1)、用户卸载了全部带有OpenUDID SDK包的App后,并重新启动设备后,openUDID将会重新生成;
(2)、用户更新了ios系统,或者选择了恢复出厂设置是,openUDID将会重新生成;
考虑到90%以上的用户在IOS系统更新后,均会重新生成openUDID,采用openUDID方法标识用户唯一性也慢慢被弃用。

4、IDFA&IDFV
(1)、IDFA(广告标识符,Advertising Identifier),是苹果公司提供的用于追踪用户的广告ID,同一手机的不同APP对应着相同的IDFA,IDFA可通过以下步骤重置:设置-隐私-广告-还原广告标识符。
如DeviceID可以通过以下公式获取:DeviceID=x2+MD5(IDFA)。

因为IDFA会存在取不到的情况,因此需要选用其他的ID作为DeviceID;在取不到IDFA的情况下,我们选用IDFV;

(2)、IDFV(Vindor标示符,IdentifierForVendor),一般用于追踪用户在应用内的行为,每个设备在所属同一个Vender的应用里值是相同的;如果用户删掉了该vender的所有APP,IDFV将会被重置。
DeviceID可以通过以下公式获取:DeviceID=x2+MD5(IDFV)。

5、UUID
UUID(通用唯一标识码,Universally Unique Identifier),通用唯一识别码,每次生成均不一样;第1次生成后UUID后,需要保存到钥匙串(keyChain)中;应用被删除再重装时,仍然可以从钥匙串得取到UUID;在一台设备上,同一个开发者账号的所有APP,可获取到相同的UDID;刷机或者重新安装系统后,UUID将重新生成。
DeviceID可以通过以下公式获取:DeviceID=x2+MD5(UUID)。

综上可知,IOS的DeviceID的获取方法可以概括为:
IOS70以前的设备,DeviceID=x2+MD5(ios_mac)
IOS70及以后的设备,DeviceID=x2+MD5(IDFA/IDFV/UUID),即先去IDFA的值,取不到IDFA时去取IDFV的值,再取不到时IDFA时,则生成UUID;

补充说明:这里x1和x2,是为了区分不同类型DeviceID,自定义的前缀。
如:
x1abcd123……
x2abcd123……

通过查看前缀,即可知道这些设备号是Android的还是iOS的。

一、 现有方案

1、UDID(Unique Device Identifier)

获取方法:[[UIDevice currentDevice] uniqueIdentfier]

不足:iOS5之后,该方法返回的结果在所有应用中都相同,并且卸载应用、刷机、还原设备均不会发生改变,该方法被标记为废弃!最终,在2013年5月1号之后,AppStore禁止任何使用该方法的应用上架。iOS7中对外公开的API中已经移除了该方法!

2、保存在NSUserDefault中的UUID

获取方法:>1、在同一个设备上的所有App都会取到相同的值。

2、如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,或者用户明确的还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符) ,那么广告标示符会重新生成。

1、每次调用得到UUID,系统都会返回一个新的唯一标示符。

2、如果想使用这个作为设备的唯一标识,可以存储到钥匙串。

证书里边添加设备的时候用到。

获取不到,私有方法可能可以获取到。

被禁用,每个手机获取到的mac地址都是一样的。

参考: >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13384031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存