zoukankan      html  css  js  c++  java
  • 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也需要一段时间,来来回回挺折腾的

  • 相关阅读:
    Spring中的@Valid 和 @Validated注解你用对了吗
    linux 安装php_fileinfo扩展
    长链接,案例
    小程序,if 语句嵌入控制class 内容
    脚本执行,log 换行符号 PHP_EOL
    查看ip,某端口是否开启
    Out-of-core classification of text documents of sklearn
    Working With Text Data of sklearn
    docstring of python
    Manifold learning of sklearn
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/3858164.html
Copyright © 2011-2022 走看看