AppStore中使用IDFA后提交应用的注意事项

在ios7.0出来以前,我们都是通过wifi的mac来当作IOS设备的唯一标识符。如何在ios下获取设备的MAC,你可以参数这篇文章:获取ios的MAC地址

 

在没有使用IDFA之前,我们在ios7及以上的版本中使用的是CFUUID

string createCUID(){    string strRet = "";    CFUUIDRef uuid_ref = CFUUIDCreate(NULL);

    CFStringRef uuid_string_ref= CFUUIDCreateString(NULL, uuid_ref);    CFRelease(uuid_ref);

    NSString *uuid = [NSString stringWithFormat:@"%@",(NSString*)uuid_string_ref];    CFRelease(uuid_string_ref);

    strRet = [uuid UTF8String];

    return strRet;}

然后将其存储在Keychain上,这样即使应用删除了,下次安装时值依然存在(跟MAC相似)。

--关于keychain的使用可以参考这里:

>>ios开发--密码存储之keychain的使用

>>IOS7:如何获取不变的UDID

 

更多关于IOS唯一标示符的信息,可以参考这里:IOS唯一标识符引导

 

 

写到这里,应用中依然没有用到IDFA,直到后来需要接入CPA推广。CPA广告商在ios7上使用的就是IDFA,所以我们必须要用它,用它就无法绕开的一个问题就是:提交版本时如何选择才不会被苹果打回?

关于IDFA的相关资料,网上已经很多了,这里主要说明二点:

1、如何获取IDFA并保存至keychain;

2、提交应用时如何选择;

string strRet;

NSString *identifier = [[NSBundle mainBundle] bundleIdentifier];NSString *keyName = [[NSString stringWithFormat:@"%@.adfa.name",identifier]init];NSString *keyValue = [[NSString stringWithFormat:@"%@.adfa.value",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,程序中一定要引用Adsupport.Framework,因为我们项目并没有使用到友盟或者其它第三方的SDK,所以提交的情况跟其它引用相关SDK的可能不太一样。但网上关于这个提的问题倒很多,已经上线给出建议和解决方案的却并不多。因为我们项目已经提交并审核通过了,这里只是记录一下

首先一定要勾选申请项目内使用了IDFA,然后我们项目勾选的是“Serve advertisements within the app”

 

关于这个选项,stackoverflow有人提出了方案(原文链接:http://stackoverflow.com/questions/22979151/improper-advertising-identifier-idfa-usage

没有涉及到广告宣传,仅仅只是跟踪用户转换率之类的,勾选第一项。如何有显示广告就勾选第二、三项,如何都有用到就全部勾选吧。我暂时是这么理解的,如有不对的地方,欢迎斧正 :)

 

希望使用了IDFA的伙伴们,在提交应用的时候不用太苦恼,毕竟提交一次,waiting for review也需要一段时间,来来回回挺折腾的

AppStore中使用IDFA后提交应用的注意事项

时间: 2024-10-30 12:43:27

AppStore中使用IDFA后提交应用的注意事项的相关文章

appstore中关于idfa的选项都是什么意思

最近,好多同学向我们反映,使用了umtrack产品,在appstore提交应用时,审核会被拒.关于这个问题,我想,需要详细地给大家说一说,以便提升大家提交应用的效率. 首先,说下umtrack会采集的信息. umtrack会采集用户的idfa.idfv.mac以及ip等信息.cctv5在线直播,那么问题来了,如果你的应用中,没有集成广告,而你又不太清楚这一点的话,你可能会在提交应用时,选择自己的应用未采集idfa.这样,当苹果对你的应用进行审核时很有可能会给你一个拒绝.好,接下来,咱们先看一下苹

在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法

在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法 ==========方法1: --------1. 选相应的checkbox后  点删除按钮------------- <!-- *******************删除******************* -->     <input type="image" alt="delete"      src=&

servlet中Java连接数据库后的基本操作

servlet中Java连接数据库后的基本操作 在eclipse中新建一个工程:login 在Server中新建一个服务器,基本的操作不用说了,在前两天的笔记中可以找到; 需要知道数据库的用户名和密码:用户名:user.密码:yufei 需要改变的地方: 地方一:web.xml <?xml version="1.0"     encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/

iOS 获取appStore的链接地址,从app中跳转 appStore中应用

从app中跳转到appStore中,分为 1.取得app在appStore中的链接地址 mac打开iTunes,在右上角中的搜索框中输入你的应用名称. 在弹出的菜单中,选择复制链接,得到该应用的链接地址: https://itunes.apple.com/cn/app/jie-zou-da-shi/id493901993?mt=8 然后将 http:// 替换为 itms:// 或者 itms-apps:// 替换后的链接地址. itms-apps://itunes.apple.com/cn/a

信贷业务流程——贷前、贷中、贷后(收藏吧!)

信贷业务流程--贷前.贷中.贷后(收藏吧!) 2016-05-10 孙自通 信贷风险管理 点击上面的蓝色字体"信贷风险管理"一键关注本平台   作者 | 孙自通 出品 | 信贷风险管理(ID:minjianjinronglawyer) 本文由本平台原创,转载需注明作者及出处   阅读提示:本期文章为一套完整的信贷业务流程,在流程中根据业务进程加入了本平台精华文章的链接,可直接点开阅读,本期文章适合收藏起来慢慢读,在做业务过程中遇到什么问题也可打开查阅一下,还在等什么,赶紧收藏起来吧!当

jQuery form插件的使用--用 formData 参数校验表单,验证后提交(简单验证).

Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 一.引入依赖js <script src="jquery-1.3.1.js" type="text/javascript"></script> <script src="jquery.form.js" type="text/javascript"&g

IOS开发细节篇 -- 在Xcode中,文件名后小方框中的A(M或C)表示什么意思啊?

在Xcode中,文件名后小方框中的A(M或C)表示什么意思啊? 表示在版本控制中,自上一次提交以来,文件做了修改.貌似只有在带有版本控制的项目代码中才会显示,也就是说你的项目使用了SVN.GIT等工具后,会在Xcode中识别出来. 'A'  新增 'D'  删除 'M'  修改 'R'  替代 'C'  冲突 'I'  忽略 '?'  未受控 '!'  丢失,一般是将受控文件直接删除导致

app从appstore上下载下来后崩溃。但是我手机曾用xcode装过,从appstore上下载就没有问题

最近遇到了一个非常奇葩的问题,大概是这样的: app从appstore上下载下来后崩溃.但是我手机曾用xcode装过,从appstore上下载就没有问题.其他用xcode装过的手机都没有问题. 折腾了两天终于找到了问题所在,罪魁祸首是百度地图! 因为使用百度地图需要在other linker flags中添加-all_load,我手机曾用添加过的装了一次,后来因为一些冲突原因我把这个配置去掉了,发现去掉也没有问题了. 然后上面的问题就出现了,我怀疑可能与苹果手机的机制有关,虽然你删除了app,但

解决Ext4.2.3中propertyGrid修改后点击排序报错

Ext4.2.3中PropertyGrid修改后点击排序报错,具体错误信息如下: 一开始还怀疑是自己哪里配置错了,各种尝试结果还是一样.查遍百度和谷歌,无果,只有一篇帖子说是4.2.4修正了.还是自己动手吧,自己动手丰衣足食. 点开报错地方(如下图所示),原来是me.field.column没有定义. 然后继续找,找啊找啊找到Ext.grid.property.Grid的getCellEditor方法.此方法有参数column,可在方法体内,column就没有被用到过,于是就感觉问题出在这里.