广告统计接入文档
前言:此文档仅面向使用【广告统计】的开发者,若不使用此功能则无需按照以下文档做调整。此文档仅适用于原生集成文档,第三方插件的“广告统计接入文档”集成参考对应的第三方插件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中
#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 库,不然编译时会报错。
- (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(标识符)所使用到的场景(必须注明哪些数据类型会追踪用户)