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

简介: 在ios7.0出来以前,我们都是通过wifi的mac来当作IOS设备的唯一标识符。如何在ios下获取设备的MAC,你可以参数这篇文章:获取ios的MAC地址   在没有使用IDFA之前,我们在ios7及以上的版本中使用的是CFUUID string createCUID(){string ...

在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也需要一段时间,来来回回挺折腾的

目录
相关文章
|
10月前
|
iOS开发 开发者 MacOS
iOS 应用上架指南:资料填写及提交审核
本文提供了iOS新站上架资料填写及提交审核的详细指南,包括创建应用、资料填写-综合、资料填写-IOS App和提交审核等步骤。通过本指南,您将了解到如何填写正确的资料,并顺利通过苹果公司的审核。
 iOS 应用上架指南:资料填写及提交审核
|
10月前
|
iOS开发 开发者
iOS 上架报错:无法添加以供审核
iOS 上架报错:无法添加以供审核
|
10月前
|
开发者 iOS开发
苹果上架常见问题 -appstore 开发者名称修改
苹果上架常见问题 -appstore 开发者名称修改
|
10月前
|
iOS开发 开发者 MacOS
iOS 应用上架指南:资料填写及提交审核
iOS 应用上架指南:资料填写及提交审核
158 0
|
存储 数据安全/隐私保护 iOS开发
iOS开发应用上传AppStore的步骤
iOS开发应用上传AppStore的步骤
|
Linux API 数据安全/隐私保护
最全iOS 应用上架流程(提交到AppStore)
最全iOS 应用上架流程(提交到AppStore)
|
Linux API 数据安全/隐私保护
最全iOS 应用上架流程(提交到AppStore)
1、苹果开发者账号(公司已有可以不用申请,需要开通开发者功能,每年 99 美元) 2、开发好的APP
|
存储 数据安全/隐私保护 iOS开发
iOS开发应用上传AppStore的步骤
前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的。下面就来详细介绍下具体流程。
|
Android开发 数据安全/隐私保护 开发者
iOS上架之appuploader生成发布证书和描述性文件​
之前用AppCan平台开发了一个应用,平台可以同时生成安卓版和苹果版,想着也把这应用上架到App Store试试,于是找同学借了个苹果开发者账号,但没那么简单,还要用到Mac电脑的钥匙串申请发布证书和上传ipa,可没有Mac,同学的大老远的也不方便拿过来用,然后捣鼓了个虚拟机,卡的我怀疑人生,后面找到了一个工具,在Windows环境下终于上传成功,把我的iOS app上架流程分享给各位。
|
编解码 数据安全/隐私保护 Android开发
iOS上架及ipa包上传到AppStore
开发uniapp的app的时候,需要ios证书进行打包,打包后还需要将打包后的ipa上架,这样普通的使用者才能安装,ios应用无法像安卓那样将ipa文件发布在自己的服务器,然后安装,ios需要将ipa上传到app store上架,用户才能安装。 因此,我们上架的前提是需要一个打包的证书和证书profile文件,假如你还不清楚如何申请ios证书,可以参考这篇文章
390 0
iOS上架及ipa包上传到AppStore
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等