广告统计接入文档

前言:此文档仅面向使用【广告统计】的开发者,若不使用此功能则无需按照以下文档做调整。此文档仅适用于原生集成文档,第三方插件的“广告统计接入文档”集成参考对应的第三方插件App集成文档集成即可。

准备工作

  • 开发者需按照控制台-【应用集成】-【Android/iOS集成】中的App SDK文档完成集成。
  • 开发者需进入控制台-【应用集成】-【Android/iOS集成】-【Android/iOS应用配置】中开启“广告平台对接”开关并保存。
  • 删除App SDK文档原本的初始化代码,按照下面流程修改。

Android

1、开发者自行获取设备唯一标识码(IMEI)或OAID

开发者需自行申请READ_PHONE_STATE权限获取IMEI(Android10以下且无法获取到OAID的设备),若设备为Android10或以上或支持获取OAID的低版本系统设备可通过移动安全联盟(MSA)SDK来获取到OAID(OpenInstall Android SDK 2.8.3版本开始支持自动获取OAID)。

2、初始化时传入设备唯一标识码(IMEI)、OAID,确保初始化在权限请求之后调用

开发者在初始化时主动向SDK传入对应的设备信息,传入对应的设备信息字符串或传入空字符串SDK将不会自动去获取对应的设备信息。优先传入OAID,若无法获取到OAID则传入IMEI,若两者都未获取到时可以均传入空字符串,此时广告统计的归因会使用IP+UA的模糊归因方案(精度较低)。

初始化代码示例:

Configuration configuration = new Configuration.Builder()
.adEnabled(true)// 若使用广告统计功能,必须配置为true
.imei("3555****4545")// 传入imei字符串
.oaid("dfdfd***dfd334fd")// 传入oaid字符串,SDK2.8.3以上支持自动获取(删除此项配置则生效)。
.gaid("e78a09dc-*******-1fc4de1f22f4")// 传入gaid字符串(走谷歌应用商店下载时对传参精度有提升),可选。
.macDisabled()// 禁止SDK 获取mac地址的开关,可选。
.build();
OpenInstall.init(context, configuration);

iOS

1、获取设备广告标识符(IDFA)所需的相关配置

注意:Apple 正式宣布 “从iOS 14.5、iPadOS 14.5和tvOS 14.5开始,您需要通过AppTrackingTransparency框架获得用户的许可,以跟踪他们或访问其设备的广告标识符”。

  • 引入头文件

在初始化方法所在文件,一般都在AppDelegate中

Object-C
Swift
#import <AdSupport/AdSupport.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>//适配iOS14
import AdSupport
import AppTrackingTransparency//适配iOS14

  • Info.plist文件中添加IDFA的权限申请描述(适配iOS14,必须添加,否则在iOS14系统中会崩溃)
<key>NSUserTrackingUsageDescription</key>
<string>为了您可以精准获取到优质推荐内容,需要您允许使用该权限</string>

2、初始化时传入广告标识符(IDFA)

注意:广告权限申请需要在app becomes active的时候执行,避免弹窗无法正常弹出的情况发生。少数第三方平台需要手动导入 AdSupport.framework 库,不然编译时会报错。

Object-C
Swift
- (void)applicationDidBecomeActive:(UIApplication *)application{
    if (@available(iOS 14, *)) {
        //权限申请
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            [self opInit];//不管用户是否授权,都要初始化
            }];
    }else{
        [self opInit];
   }
}
- (void)opInit{
    //方式一:
    NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    [OpenInstallSDK initWithDelegate:self advertisingId:idfaStr];
    //方式二:
    NSMutableDictionary *config = [[NSMutableDictionary alloc]init];
    NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    [config setValue:idfaStr forKey:OP_Idfa_Id];
    /*//使用了ASA广告归因,添加该段代码即可,并可通过getInstallParmsCompleted方法获取ASA渠道号
    if (@available(iOS 14.3, *)) {
        NSError *error;
        NSString *token = [AAAttribution attributionTokenWithError:&error];
        [config setValue:token forKey:OP_ASA_Token];
    }
    */
    //初始化sdk
    [OpenInstallSDK initWithDelegate:self adsAttribution:config];

}
func applicationDidBecomeActive(_ application: UIApplication) {
    //权限申请
    if #available(iOS 14.0, *) {
        ATTrackingManager.requestTrackingAuthorization { (status) in
            opInit();//不管用户是否授权,都要初始化
        }
    }else{
        opInit();
    }

    func opInit(){
        //方式一:
        let idfaStr = ASIdentifierManager.shared().advertisingIdentifier.uuidString
        OpenInstallSDK.initWith(self, advertisingId: idfaStr);
        //方式二:
        var OpConfig:[String:Any] = [String:Any]();
        let idfaStr = ASIdentifierManager.shared().advertisingIdentifier.uuidString
        OpConfig.updateValue(token, forKey: OP_Idfa_Id);
        /*//使用了ASA广告归因,添加该段代码即可,并可通过getInstallParmsCompleted方法获取ASA渠道号
        var OpConfig:[String:Any] = [String:Any]();
        if #available(iOS 14.3, *) {
            do {
                let token = try AAAttribution.attributionToken();
                OpConfig.updateValue(token, forKey: OP_ASA_Token);
            } catch {}
        }
        */
        OpenInstallSDK.defaultManager()?.reportAdsAttribution(OpConfig);
    }
    //其它代码...
    return true
}

3、上架AppStore注意事项

  • 在App中获取了IDFA标识符,如果应用本身不包含广告的,提交上架App Store时需要做如下配置,请勾选2、3、4这三项:(避免审核被拒)

  • 在苹果上架后台,“App隐私”一项中的产品页,根据实际情况,正确勾选,即用户ID(标识符)所使用到的场景(必须注明哪些数据类型会追踪用户)