1.苹果广告审核规则
如果你的应用采集了IDFA,但是在上架的时候申明未使用将肯定被拒绝
如果你的应用采集了IDFA,但是却没有使用广告服务时候肯定会被拒绝,这个时候如果集成广告将不会受影响
2.苹果广告避免方法
IDFA能够较精准的识别用户,尤其对于广告主追踪广告转化率提供了很大帮助。友盟统计分析SDK采集IDFA是为了确保在苹果变更唯一标识符时(例如从UDID变更为OpenUDID),对用户数据进行稳定过渡,而不至于发生数据突增的情况。
如果您的应用由于IDFA问题被AppStore拒绝,可以采取如下建议:
1.以广告主身份尝试申诉,广告主采集IDFA标识是被允许的;
2.集成任意一家广告服务,上线后选择继续使用或关闭该服务;
3.更换苹果帐号重新提交应用(已有开发者顺利通过审核)。
4.不采集IDFA意味着放弃了准确追踪用户的机会,在保证数据的稳定性与一致性方面存在风险。如果您仍希望不采集IDFA,可以通过这里下载无IDFA版本的SDK
3.苹果历史版本唯一序列号
CFUUID
iOS2.0 开始就存在,它是CoreFoundatio包的一部分,因此API属于C语言风格
获得的这个CFUUID值系统并没有存储。每次调用CFUUIDCreate,系统都会返回一个新的唯一标示符
NSUUID
iOS 6中才出现,这跟CFUUID几乎完全一样,只不过它是Objective-C接口
跟CFUUID一样,这个值系统也不会存储,每次调用的时候都会获得一个新的唯一标示符
每次运行的时候都不一样,但是生成的是唯一的
IDFA(IDFA-identifierForIdentifier)
iOS 6中才出现的新的方法,advertisingIdentifier是新框架AdSupport.framework的一部分广告标示符是由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,这个广告标示符会重新生成。另外如果用户明确的还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符) ,那么广告标示符也会重新生成。关于广告标示符的还原,有一点需要注意:如果程序在后台运行,此时用户“还原广告标示符”,然后再回到程序中,此时获取广告标示符并不会立即获得还原后的标示符。必须要终止程序,然后再重新启动程序,才能获得还原后的广告标示符。之所以会这样,我猜测是由于ASIdentifierManager是一个单例
Vindor((IDFV-identifierForVendor)
iOS 6中才出现的新的方法,不过获取这个IDFV的新方法被添加在已有的UIDevice类中。
跟advertisingIdentifier一样,该方法返回的是一个NSUUID对象。
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
he value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.
如果满足这样的条件,那么获取到的这个属性值就不会变:相同的vindor-相同的设备,idfv相同。如果是这样的情况,那么这个值是不会相同的:相同的设备-不同的vindor,或者是不同的设备-无论是否相同的vindor。
vendor非常简单:一个Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。例如,com.doubleencore.app1 和 com.doubleencore.app2 得到的identifierForVendor是相同的,因为它们的CFBundleIdentifier 前两部分是相同的。不过这样获得的identifierForVendor则完全不同:com.massivelyoverrated 或 net.doubleencore。 在这里,还需要注意的一点就是:如果用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。
Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。来自同一个运营商的应用运行在同一个设备上,此属性的值是相同的;不同的运营商应用运行在同一个设备上值不同。
UDID
ios5已经废弃,系统的唯一序列号,app账号添加就是用的这个
OpenUDID
在每个设备的openUDID是通过第一个带有openUDID sdk包的app生成,当然如果重新刷机这个还是会丢失
在iOS 5发布时,uniqueIdentifier被弃用了,这引起了广大开发者需要寻找一个可以替代UDID,并且不受苹果控制的方案。由此OpenUDID成为了当时使用最广泛的开源UDID替代方案。OpenUDID在工程中实现起来非常简单,并且还支持一系列的广告提供商。
NSString *openUDID = [OpenUDID value];
OpenUDID利用了一个非常巧妙的方法在不同程序间存储标示符 — 在粘贴板中用了一个特殊的名称来存储标示符。通过这种方法,别的程序(同样使用了OpenUDID)知道去什么地方获取已经生成的标示符(而不用再生成一个新的)。
之前已经提到过,在将来,苹果将开始强制使用advertisingIdentifier 或identifierForVendor。如果这一天到来的话,即使OpenUDID看起来是非常不错的选择,但是你可能不得不过渡到苹果推出的方法
MAC地址
MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。这样就可以非常好的标识设备唯一性,类似与苹果设备的UDID号,从iOS7及更高版本往后,如果你向ios设备请求获取mac地址,系统将返回一个固定值“02:00:00:00:00:00”
分享到:
相关推荐
3. 创建一个`UNNotificationRequest`对象,将内容与一个唯一标识符关联起来。 4. 使用`UNUserNotificationCenter`的`add(_:withCompletionHandler:)`方法添加请求到通知中心。 例如: ```swift let center = ...
`UNUserNotificationCenter`或旧的`UIApplication`代理方法如`didRegisterForRemoteNotificationsWithDeviceToken`会被用来获取设备的唯一标识符,并将其发送到服务器以进行后续的推送消息发送。 3. **处理推送事件...
这份"IOS应用源码——如何获取iOS型号,版本,内存,磁盘,MAC地址等信息的Sample代码"压缩包提供了一套示例代码,帮助开发者学习如何在Objective-C或Swift中获取这些关键数据。下面将详细介绍如何通过iOS SDK获取...
我们需要为自定义Cell指定一个唯一标识符,然后在`cellForRowAt:`中返回复用的Cell。 5. **自定义属性**: 为了让Cell与数据模型绑定,通常会在自定义Cell类中添加属性,如`@IBOutlet weak var titleLabel: UILabel!...
这份"IOS应用源码——如何获取iOS型号,版本,内存,磁盘,MAC地址等信息的Sample代码.zip"提供了关于如何获取这些信息的示例代码,这对于开发者来说是极其宝贵的资源。以下将详细解释这些知识点: 1. **iOS型号**...
"sdmunoz-Kuaga-0d8a426"可能是项目的作者名字或者项目在版本控制系统(如Git)中的唯一标识符,"0d8a426"可能是一个特定的提交哈希值,代表源代码的一个特定历史版本。 【描述解析】 描述部分简洁地重复了标题,...
这些标识符可以是如"Asia/Shanghai"这样的字符串,用于唯一标识一个时区。 接着,我们可以遍历这个时区标识符列表,为每个时区创建对应的`TimeZone`对象,然后使用`dateWithTimeIntervalSinceNow:`方法获取当前时间...
其中,`APP_ID`是目标应用在App Store上的唯一标识符,可以在App Store页面的URL中找到。 - 或者使用HTTPS格式: ``` https://apps.apple.com/app/idAPP_ID ``` 2. **使用`UIApplication`的`openURL`方法**: ...
iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符。好景不长,因为该唯一标识符与手机一一对应,苹果...
当用户点击这个按钮时,程序会构建一个特定格式的URL,形如`itms-apps://itunes.apple.com/app/id<APP_ID>`,其中`<APP_ID>`是你在App Store上的应用的唯一标识符。你可以从App Store Connect(苹果开发者中心)获取...
6. **更新和删除事件**:已存在的事件可以通过其UUID(全局唯一标识符)进行查找,然后修改其属性并保存。若需删除事件,可以调用`remove(_:commit:)`方法。 7. **用户界面**:虽然EventKitUI提供了预定义的视图...
这里,`<device_udid>`是你的iOS设备的唯一标识符,`<path_to_your_ipa>`则是你要部署的.ipa文件的路径。 如果你想要自动检测并运行已安装的应用,可以添加`--justlaunch`参数: ```bash ios-deploy --id ...
最后,通过`[sender.layer addAnimation:animation forKey:@"DSPopUpAnimation"]`将动画添加到按钮的图层上,指定动画的唯一标识符`@"DSPopUpAnimation"`。 在实际应用中,你可能需要根据需求调整动画的参数,如...
4. **版本控制**:Git是一种分布式版本控制系统,gae3b7f5是Git提交的唯一标识符,通过它可以追踪源代码的历史变更,这对于多人协作开发和代码版本管理至关重要。 5. **游戏逻辑与架构**:源代码将展示游戏的逻辑...
在实际开发中,每个版本的源代码都会有一个唯一的标识符,便于追踪代码的历史变化和团队协作。 源代码分析通常包括以下几个关键部分: 1. **项目结构**:分析项目的目录结构,可以了解代码组织方式,如资源文件、...
这里的`keychainIdentifier`是你的应用的唯一标识符,`keychainAccessibility`定义了数据何时可访问。 3. **检查并创建device ID**:在Keychain中查找是否存在自定义的device ID。如果没有,就创建一个,并保存到...
4. 搜索需要的旧版应用,注意,必须在应用的详情页面找到并记录下其在App Store的唯一标识符(通常是9位数字的APP ID)。 5. 打开浏览器,访问网站如"ModMyi"或"Cydia Impactor",它们提供旧版应用的IPA文件(iOS...
在这个例子中,`YourSegueIdentifier`是你在Storyboard中为Segue设置的唯一标识符,`YourDestinationViewController`是目标ViewController的类型。通过`segue.destination`,你可以获取到目标ViewController的实例,...
创建新分组需要提供一个唯一的标识符和名称,然后同样使用`CNContactStore`的`save(_:to:completionHandler:)`方法保存。 5. **列出所有联系人和分组**:通过`CNContactStore`的`unifiedContacts(matching:...
2. **UNNotificationRequest**:这是一个表示单个通知请求的对象,包括一个唯一标识符、内容对象(UNMutableNotificationContent)和触发器(如时间触发器或基于地理位置的触发器)。创建此对象后,可以将其添加到...