本文基于Demo中 DemoCustomBaseAdapter 示例代码,详细介绍如何创建自定义基础适配器。这个适配器的功能主要是来初始化第三方广告平台SDK,并返回其版本号信息。
💡 Tips
- 类名可以自定义,基础适配器与初始化适配器的类名不需要添加至后台
- 建议将基础适配器和初始化适配器放在同一个模块中便于管理
- 初始化适配器负责SDK初始化,基础适配器负责指定初始化适配器类名
您需要继承 ATBaseMediationAdapter 和 ATBaseInitAdapter 并重写相关方法:
| 方法 | 参数说明 | 作用 |
|---|---|---|
| - (void)initWithInitArgument:(ATAdInitArgument *)adInitArgument | adInitArgument: 包含服务器下发的初始化参数 | 用于初始化第三方广告平台SDK,设置相关参数 |
| - (nullable NSString *)sdkVersion | ----- | 返回广告平台SDK的版本号 |
| - (nullable NSString *)adapterVersion | ----- | 返回适配器版本号 |
| 方法 | 参数说明 | 作用 |
|---|---|---|
| - (Class)initializeClassName | ----- | 返回初始化适配器的类名,用于指定初始化适配器 |
├── Base/ # 基础适配器模块
│ ├── DemoCustomAdapterCommonHeader.h # 用于声明一些公共的头文件
│ ├── DemoCustomBaseAdapter.h # 基础适配器头文件
│ ├── DemoCustomBaseAdapter.m # 基础适配器实现,定义指定初始发适配器的类名
│ ├── DemoCustomInitAdapter.h # 初始化适配器头文件
│ └── DemoCustomInitAdapter.m # 初始化适配器实现
- 引入头文件
#import <AnyThinkSDK.h>- 继承
ATBaseInitAdapter示例如下:
objc 复制代码#import <Foundation/Foundation.h> #import "DemoCustomAdapterCommonHeader.h" @interface DemoCustomInitAdapter : ATBaseInitAdapter @end
实现以下方法:
objc 复制代码/// Init Ad SDK /// - Parameter adInitArgument: server info - (void)initWithInitArgument:(ATAdInitArgument *)adInitArgument{ //从adInitArgument对象中拿取后台配置的信息,例如adInitArgument.serverContentDic[@"appId"] //拿取到相关信息后,调用广告平台SDK的初始化方法进行初始化,您可以根据需要,在这里对广告平台的SDK进行设置,例如海外平台的隐私设置(如:CCPA,COPPA,GDPR)等。 //如果广告平台SDK初始化有返回值,使用[self notificationNetworkInitSuccess];通知我们初始化成功; //如果第三方初始化失败,使用[self notificationNetworkInitFail:error];通知我们初始化失败。 //如果广告平台SDK初始化没有成功或者失败,可直接通知我们初始化成功,使用:[self notificationNetworkInitSuccess]; } /// 返回广告平台SDK 的版本号 - (nullable NSString *)sdkVersion { //例如 return [YourAdSDK getVersion]; } /// 返回适配器版本号 - (nullable NSString *)adapterVersion { return [YourAdapter getVersion]; }
- 引入头文件
#import <AnyThinkSDK.h>- 继承
ATBaseMediationAdapter示例如下:
objc 复制代码@interface DemoCustomBaseAdapter : ATBaseMediationAdapter @end
实现以下方法:
objc 复制代码#pragma mark - adapter init class name define - (Class)initializeClassName { //返回文档 步骤一 中创建的初始化适配器类 return [DemoCustomInitAdapter class]; }
4.1 GDPR
获取您通过TaKu SDK
-[ATAPI setDataConsentSet:consentString:]方法设置的数据同意级别objc 复制代码//typedef NS_ENUM(NSInteger, ATDataConsentSet) { // /* // 这是默认值,当您未设置时采用此值;这种情况下,如果用户在GDPR区域内,SDK初始化将失败, // 后续广告请求也会因为失败。不能用setDataConsentSet方法设置该类型 // */ // ATDataConsentSetUnknown = 0, // /* // 这个级别代表用户同意SDK收集并使用他的个人数据来为他提供相关性更高、更适合他的广告。 // */ // ATDataConsentSetPersonalized = 1, // /* // 如果数据保护级别设置为这个值,SDK不会收集用户个人数据,因为提供的广告可能不会符合用户的情况。 // 另外,在这种情况下,某些不涉及用户隐私的数据可能仍会被收集。 // */ // ATDataConsentSetNonpersonalized = 2 //}; // 引入头文件`#import <AnyThinkSDK.h>` //获取数据同意级别 [ATAPI sharedInstance].dataConsentSet4.2 COPPA
获取您通过Taku SDK设置的用户年龄
开发者调用[ATSDKGlobalSetting sharedManager].customData = @{kATCustomDataAgeKey:@"13",......};
进行年龄设置后,您可以通过
[[ATSDKGlobalSetting sharedManager].customData valueForKey:kATCustomDataAgeKey]
获取到开发者设置的用户年龄。4.3 个性化广告
获取开发者通过Taku SDK设置的个性化广告状态
开发者调用
[[ATAPI sharedInstance] setPersonalizedAdState:ATPersonalizedAdStateType]
进行个性化广告状态设置后,您可以通过
[ATAPI sharedInstance].getPersonalizedAdState
获取到开发者设置的个性化广告状态。