前言
- 常用的取值方式有:UDID、MAC Address、OpenUDID、IDFA、IDFV、IMEI
- 一般使用KeyChain 实现例如KeychainItemWrapper+MD5Generator
I 、MFSIdentifier
- iOS App获取唯一标识符方案原理
是否刷机/还原 | 是否卸载重装APP | 获取方式及优先级 |
---|---|---|
否 | 否 | MFSCache、NSUserDefaults |
否 | 是 | KeyChain、Safari Cookie、iCloud、IDFA、IDFV、NSUUID |
是 | 是 | iCloud、IDFA、IDFV、NSUUID |
多个app通过cookie能保持deviceid共享,获取到唯一deviceid。
- 比较重要的就是加密解密部分,如果加密不靠谱或者已经泄露,deviceid可能会被随意改动。
将deviceId加密(最好2种加密方式)后保存到本地的2个地方,需要的时候取出来对比,相同证明没有篡改(全部被篡改就证明你的App太不安全了)直接使用,不同则使用KeyChain或者其他的方法获取并保存本地。
- CocoaPods
pod 'MFSIdentifier', '1.0.2'
安装
pod install
- Carthage
编辑Cartfile
github "maxfong/MFSIdentifier" >= 1.0.2
安装
carthage update
- 使用Framework,工
程Other Linker Flags
需添加-ObjC
注意
- Safari Cookie支持需iOS9.0及以上。
- 可设置[MFSCacheUtility registerAESKey:],其他应用获取了Cookie也无法正确解密
- 刷机后能获取相同标识符需开启iCloud
1) 是否在App Store下载:一般是应用内添加refid标识对应渠道
你自己定义的,比如App Store为10000,PP助手为10001等等,iOS应用 大部分都是App Store下载,小渠道或者越狱取到的量很少的
2)是否越狱:这个能查得到
3)是否第一次下载:现在KeyChain可用,所以查询存储在KeyChain的数据,存在则表示不是第一次安装,集合iCloud刷机也能判断
4)是否删除后下载:添加校验逻辑,给应用累加一个标识符,再根据是否第一次下载判断是否重新安装
5)如果是当前手机:可以根据Telephony、屏幕分辨率、以及设备名称等,再根据存储的标识符做校验
6)当前的账号都是第一次下载:以上问题都解决,这个也就知道了
7)KeyChain不可用时,可用Safari Cookie、iCloud替代
ps:很多这类应用会有一个企业助手,可调用的私有API的
II、KeychainItemWrapper+MD5Generator
- openUDID &
KeychainItemWrapper+MD5Generator
- 对单独的.m 添加参数:
-fno-objc-arc
See Also
应用试客(iTry.com)
钱咖简介
钱咖是一家纯移动互联网公司,是一款通过手机试玩应用免费赚钱的应用,目前支持苹果与安卓版(通过手机浏览器访问qianka.com下载),目前月流水超千万、iOS用户超2000万、微信服务号关注超600万。
做任务不能关闭app:
绑定你的账号和设备
- safari : 抢任务-》获取关键词,app(具体的任务页面)-》领取任务、奖励
//具体的任务页面: 检测助手是否打开
1) 前往app store
2)开始试完,打开《宝宝亲》app,宝宝亲会直接打开对应的”任务app“
-- 这个过程有通信流程
3) 领取奖励-〉 判断时间,继续试完-》 完成任务
4) 取消任务
- 证书安装
安装证书: 确保设备唯一性: push,获取设备ID,设备注册质询:加密的描述文件服务
签署证书:
- 绑定手机号码否则,无法保存收益
other
/** 升级后获取设备标识符
safariCookie -> cacheManager -> iCloud -> IDFA -> IDFV -> pushToken
iCloud支持需开启Key-value storage
*/
+ (NSString *)deviceId;
/Users/devzkn/bin/knpost DeviceId iOS App获取唯一标识符方案 -t objc #原来""的参数,需要自己加上""