• 您的App需要制订《隐私政策》,同时在用户首次启动App时展示《隐私政策》并取得用户同意。App制订的《隐私政策》,请参考《隐私合规指南》请务必确保用户同意App《隐私政策》之后,再初始化Taku SDK。
• 涉及欧盟地区或者相关用户隐私协议控制,可通过setGDPRLevel控制数据上报权限;
• 通过setLogEnabled方法,可以开启调试日志,方便定位SDK集成中遇到的问题;
• SDK需要的appid、appkey等参数可通过开发者后台创建app之后获取
您可以通过以下代码初始化SDK,另外由于加载广告时异步进行的,所以想要获取广告的状态,请实现各广告类型的监听方法。
导入ATSDK import 'package:anythink_sdk/at_index.dart';
_initTaku() async {
await ATInitManager.initAnyThinkSDK(
appidStr: 'you appid',
appidkeyStr: 'you appkey')
}
完整的示例代码:
import 'package:anythink_sdk/at_index.dart';
import '../configuration_sdk.dart';
final InitManger = InitTool();
class InitTool{
// 打开SDK的Debug log,强烈建议在测试阶段打开,方便排查问题。
setLogEnabled() async {
await ATInitManger
.setLogEnabled(
logEnabled: true,
);
}
// 设置渠道,可用于统计数据和进行流量分组
setChannelStr() async {
await ATInitManger
.setChannelStr(
channelStr: "test_setChannel",
);
}
// 设置子渠道,可用于统计数据和进行流量分组
setSubchannelStr() async {
await ATInitManger
.setSubChannelStr(
subchannelStr: "test_setSubchannelStr",
);
}
// 设置自定义的Map信息,可匹配后台配置的对应流量分组(App纬度)(可选配置)
setCustomDataDic() async {
await ATInitManger.setCustomDataMap(
customDataMap: {
'setCustomDataDic': 'myCustomDataDic',
},
);
}
// 设置排除交叉推广App列表
setExludeBundleIDArray() async {
await ATInitManger.setExludeBundleIDArray(
exludeBundleIDList: ['test_setExludeBundleIDArray'],
);
}
// 设置自定义的Map信息,可匹配后台配置的对应的流量分组(Placement纬度)(可选配置)
setPlacementCustomData() async {
await ATInitManger.setPlacementCustomData(
placementIDStr: 'b5b72b21184aa8',
placementCustomDataMap: {'setPlacementCustomData': 'test_setPlacementCustomData'},
);
}
// 判断是否位于欧盟地区
getUserLocation() async {
await ATInitManger.getUserLocation().then((value) {
print('flutter: Get user location -- ${value.toString()}');
});
}
// 获取GDPR的授权级别
getGDPRLevel() async {
await ATInitManger.getGDPRLevel().then((value) {
print('flutter:Get GDPR --${value.toString()}');
});
}
setDataConsentSet() async {
await ATInitManger.setDataConsentSet(
gdprLevel:
ATInitManger.dataConsentSetPersonalized());
});
}
deniedUploadDeviceInfo() async {
await ATInitManger
.deniedUploadDeviceInfo(
deniedUploadDeviceInfoList: [ATInitManger.aOAID()]);
});
}
// 初始化Taku的SDK
initTaku() async {
await ATInitManger.initAnyThinkSDK(
appidStr: Configuration.appidStr,
appidkeyStr: Configuration.appidkeyStr);
}
// 展示GDPR的界面 (v6.2.87废弃,请使用showGDPRConsentDialog()代替)
showGDPRAuth()async{
await ATInitManger.showGDPRAuth();
}
// v6.2.87+, 展示GDPR的界面(UMP)
showGDPRConsentDialog()async{
await ATInitManger.showGDPRConsentDialog();
}
// 获取GDPR的监听事件回调
initListen() {
ATListenerManager.initEventHandler.listen((value) {
if (value.userLocation != null) {
switch (value.userLocation) {
case InitUserLocation.initUserLocationInEU:
print("flutter Monitor initial user location in the EU--");
ATInitManger.getGDPRLevel().then((value) {
if (value == ATInitManger.dataConsentSetUnknown()) {
showGDPRAuth();
}
});
break;
case InitUserLocation.initUserLocationOutOfEU:
print("flutter: flutter The location of the listening initial user is not in the EU");
break;
case InitUserLocation.initUserLocationUnknown:
print("flutter: flutter The location of the initial listening user is unknown");
break;
}
}
if (value.consentDismiss != null) {
print("flutter: flutter consent dismiss callback");
}
});
}
}
打开SDK的Debug log,强烈建议在测试阶段打开,方便排查问题。
_setLogEnabled() async {
await ATInitManager
.setLogEnabled(
logEnabled: true,
);
}
_setChannelStr() async {
await ATInitManager
.setChannelStr(
channelStr: "123",
);
}
_setSubchannelStr() async {
await ATInitManager
.setSubchannelStr(
subchannelStr: "456",
);
}
可匹配后台配置的对应流量分组(App纬度)(可选配置)
_setCustomDataDic() async {
await ATInitManager.setCustomDataMap(
customDataMap: {
'1': 'a',
},
);
}
可匹配后台配置的对应的流量分组(Placement纬度)(可选配置)
_setPlacementCustomData() async {
await ATInitManager.setPlacementCustomData(
placementIDStr: '4',
placementCustomDataMap: {'b': '4'},
);
}
设置排除交叉推广App列表,移除不需要进行广告推广的项目,传入项目的Appid(苹果后台的id)数组。
_setExludeBundleIDArray() async {
await ATInitManager.setExludeBundleIDList(
exludeBundleIDList: ['3'],
);
}
GDPR是欧盟发布于2018年5月25日的《通用数据保护条例》简称,如果你的项目需要在欧盟地区发布,请完成接入。
请参考 Android Google UMP 适配使用指南 、 iOS Google UMP 适配使用指南 完成UMP的集成和配置,并使用以下api进行UMP GDPR弹窗和SDK初始化
// v6.2.87+, 展示GDPR的界面(UMP)
showGDPRConsentDialog()async{
await ATInitManger.showGDPRConsentDialog();
}
// 获取GDPR的监听事件回调
initListen() {
ATListenerManager.initEventHandler.listen((value) {
//注意:需要在此回调中进行SDK初始化并且初始化后再进行广告加载
if (value.consentDismiss != null) {
print("flutter: flutter consent dismiss callback");
}
});
}
注意:需要在SDK初始化后再发起广告请求
_getGDPRLevel() async {
await ATInitManager.getGDPRLevel().then((value) {
print('获取GDPR');
});
}
ATInitManager.dataConsentSetPersonalized(): 这个级别代表用户同意SDK收集并使用他的个人数据来为他提供相关性更高、更适合他的广告。
ATInitManager.dataConsentSetNonpersonalized(): 如果数据保护级别设置为这个值,SDK不会收集用户个人数据,因为提供的广告可能不会符合用户的情况。另外,在这种情况下,某些不涉及用户隐私的数据可能仍会被收集。
setDataConsentSet() async {
await ATInitManager.setDataConsentSet(
gdprLevel:
ATInitManager.dataConsentSetPersonalized());
}
判断是否位于欧盟地区,针对欧盟地区初始化时做的处理
_getUserLocation() async {
await ATInitManager.getUserLocation();
}
如果处于欧盟地区且等级是UNKNOW时,就执行授权弹窗
showGDPRAuth()async{
await ATInitManager.showGDPRAuth();
}
initListen() {
ATListenerManager.initEventHandler.listen((value) {
switch (value.userLocation) {
case InitUserLocation.initUserLocationInEU:
print("flutter监听初始化用户位置在欧盟--");
ATInitManager.getGDPRLevel().then((value) {
if (value == ATInitManager.dataConsentSetUnknown()) {
showGDPRAuth();
}
});
break;
case InitUserLocation.initUserLocationOutOfEU:
print("flutter监听初始化用户位置不在欧盟");
break;
case InitUserLocation.initUserLocationUnknown:
print("flutter监听初始化用户位置未知");
break;
}
});
}
注意:当开发者限制了上报的设备数据时可能会影响Taku功能的正常使用,如流量分组、交叉推广、Taku Adx等功能,请开发者谨慎设置。
deniedUploadDeviceInfo() async {
await ATInitManager
.deniedUploadDeviceInfo(
deniedUploadDeviceInfoList: [
ATInitManager.aVersionNameKey(),
ATInitManager.aVersionCodeKey(),
ATInitManager.aPackageNameKey(),
ATInitManager.aAppVersionNameKey(),
ATInitManager.aAppVersionCodeKey(),
ATInitManager.aBrandKey(),
ATInitManager.aModelKey(),
ATInitManager.aScreenKey(),
ATInitManager.aNetworkTypeKey(),
ATInitManager.aMNCKey(),
ATInitManager.aMCCKey(),
ATInitManager.aLanguageKey(),
ATInitManager.aTimeZoneKey(),
ATInitManager.aUserAgentKey(),
ATInitManager.aOrientKey(),
ATInitManager.aIDFAKey(),
ATInitManager.aIDFVKey(),
ATInitManager.aANDROID(),
ATInitManager.aGAID(),
ATInitManager.aINSTALLER(),
ATInitManager.aMAC(),
ATInitManager.aIMEI(),
ATInitManager.aOAID(),
]);
});
}
参数说明:
Key | Note |
---|---|
ATInitManager.aVersionNameKey() | 系统版本名 |
ATInitManager.aVersionCodeKey() | 系统版本号 |
ATInitManager.aPackageNameKey() | 应用包名 |
ATInitManager.aAppVersionNameKey() | 应用版本名 |
ATInitManager.aAppVersionCodeKey() | 应用版本号 |
ATInitManager.aBrandKey() | 设备品牌 |
ATInitManager.aModelKey() | 设备型号 |
ATInitManager.aScreenKey() | 屏幕分辨率 |
ATInitManager.aNetworkTypeKey() | 网络类型 |
ATInitManager.aMNCKey() | 移动网络代码 |
ATInitManager.aMCCKey() | 移动国家代码 |
ATInitManager.aLanguageKey() | 系统语言 |
ATInitManager.aTimeZoneKey() | 时区 |
ATInitManager.aUserAgentKey() | User Agent |
ATInitManager.aOrientKey() | 屏幕方向 |
ATInitManager.aIDFAKey() | idfa |
ATInitManager.aIDFVKey() | idfv |
ATInitManager.aANDROID() | Android ID |
ATInitManager.aGAID() | Google Ad ID |
ATInitManager.aINSTALLER() | 应用安装来源 |
ATInitManager.aMAC() | MAC地址 |
ATInitManager.aIMEI() | 国际移动设备识别码 |
ATInitManager.aOAID() | OAID |