1.接入须知

1.使用此文档内接口,需要先接入MID iOSSDK(详情查看MID iOSSDK文档,当前支持ACE官网最新版本)。
2.接入MID iOSSDK后,需要配置ApplovinSDK需要的依赖库。

注:本文为Applovin iOS终端SDK接入教程,只涉及SDK的使用方法。

1.0 开发要求


  • iOS 9.0 及以上版本

  • XCode 14.1 及以上版本

  • 1.1 申请你的AppID

    AppLovinSdkKey:媒体 ID,是您在Applovin开发者平台创建媒体时获得的ID,这个ID是我们在广告网络中识别您应用的唯一ID。

    AD_UNIT_ID:广告位 ID,是您在Applovin开发者平台为您的应用所创建的某种类型(Banner、开屏、插屏、原生)的广告位置的ID。

    GADApplicationIdentifier:您的AdMob应用ID的 字符串值,具体参数由运营提供。

    1.2 下载SDK包和示例Demo

    下载对应demo

    1.3 framework导入

    pod需要引入的三方库
    Podfile配置,需注意与MID SDK 有一致内容需要筛选

    1. source 'https://gitee.com/jerryshuo/WPMIDPods.git'
    2. source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
    3. platform :ios, '11.0'
    4. use_frameworks!
    5. project 'UnityIOS/Unity-iPhone.xcodeproj'
    6. target 'UnityFramework' do
    7. pod 'WPMIDSDKAppLovin','1.0.5.1'
    8. end

    1.4 添加SDK秘钥

    需要在info.plist中添加AppLovinSdkKey

    1. <key>AppLovinSdkKey</key>
    2. <string>后台申请的key</string>

    1.5 SKAdNetwork

    需要在info.plist中添加对应渠道的SKAdNetworkID,具体参数需要去AppLovin获取.
    1.点击地址https://developers.applovin.com/en/ios/overview/skadnetwork/?skadnetworks=913%2C969%2C752 需和运营确认接入哪几家广告平台然后在页面上勾选(下图是目前SDK支持的全部广告渠道)。

    2.根据勾选会自动生成所需内容,然后根据苹果规则(https://developer.apple.com/documentation/storekit/skadnetwork/configuring_a_source_app) 添加到info.plist;

    格式类似以下示例(仅需替换 < array >和“< /array>之间的内容):
    注意:根据广告方文档反馈SKAdNetworkIdentifier的值可能会变动,不会一直保持不变,所以每次接入都要在文档重新获取。

    1. <key>SKAdNetworkItems</key>
    2. <array>
    3. <dict>
    4. <key>SKAdNetworkIdentifier</key>
    5. <string>238da6jt44.skadnetwork</string>
    6. </dict>
    7. <dict>
    8. <key>SKAdNetworkIdentifier</key>
    9. <string>x2jnk7ly8j.skadnetwork</string>
    10. </dict>
    11. <dict>
    12. <key>SKAdNetworkIdentifier</key>
    13. <string>22mmun2rn5.skadnetwork</string>
    14. </dict>
    15. </array>

    2.SDK初始化

    接入MID BaseSDK初始化即可

    2.1 生命周期方法

    1. /**
    2. * 启动接口
    3. */
    4. - (BOOL)MIDApplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
    5. [[MIDAppLovinAds sharedInstance] MIDApplication:application didFinishLaunchingWithOptions:launchOptions];

    3 激励视频接入

    3.1加载视频文件

    接口说明

    1. /**
    2. * 缓存广告
    3. * @param adid 广告id
    4. */
    5. - (void)LoadRewardedAd:( NSString * _Nonnull )adid;

    接入方法

    1. [[MIDAppLovinAds sharedInstance] LoadRewardedAd:@"广告ID"];

    3.2 播放视频带参

    接口说明

    1. /**
    2. * 播放广告
    3. * @param placement 事件参数
    4. */
    5. -(void)ShowRewardedAd:(NSString *)placement;

    接入方法

    1. [[MIDAppLovinAds sharedInstance] ShowRewardedAd:@"传入参数"];

    3.3 加载并播放视频带参

    接口说明

    1. /**
    2. * 缓存并播放广告
    3. * @param adid 广告id
    4. * @param placement 事件参数
    5. */
    6. -(void)LoadShowRewardedAd:( NSString * _Nonnull )adid placement:(NSString *)placement;

    接入方法

    1. [[MIDAppLovinAds sharedInstance] LoadShowRewardedAd:@"广告ID" placement:@"传入参数"];

    3.4 激励视频回调

    您可以实现全部或部分代理,以跟踪点击成功或者激励视频广告请求失败等广告生命周期事件。

    接口说明

    1. // 当广告加载完成时,将调用此方法
    2. - (void)didLoadAd:(NSString *)adid;
    3. // 广告加载错误 当无法检索广告时,将调用此方法。
    4. // 常见错误代码:204 - 无广告 5xx - 内部服务器错误负数 - 内部错误
    5. - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adid withErrorCode:(NSInteger)errorCode;
    6. // 当广告即将要显示时,会调用此方法。
    7. // 在主UI线程上调用此方法。
    8. - (void)didDisplayAd:(NSString *)adid;
    9. // 广告被点击时调用此方法。
    10. // 在主UI线程上调用此方法。
    11. - (void)didClickAd:(NSString *)adid;
    12. // 当广告隐藏时,会调用此方法。
    13. // 在主UI线程上调用此方法。
    14. - (void)didHideAd:(NSString *)adid;
    15. // 当广告显示失败时,将调用此方法。
    16. // 指示显示失败的错误。常见错误代码在MAErrorCode.h中定义。
    17. - (void)didFailToDisplayAd:(NSString *)adid withErrorCode:(NSInteger)errorCode;
    18. /**
    19. * 视频开始启动
    20. */
    21. - (void) didStartRewardedVideoForAd:(NSString *)adid;
    22. /**
    23. * 此方法将在视频完成时调用
    24. */
    25. - (void) didCompleteRewardedVideoForAd:(NSString *)adid;
    26. /**
    27. * 当应该授予用户奖励时,将调用此方法
    28. *
    29. * @param adid Ad for which reward ad was rewarded for.
    30. */
    31. - (void) didRewardUserForAd:(NSString *)adid ;

    接入方法

    1. // 当广告加载完成时,将调用此方法
    2. - (void)didLoadAd:(NSString *)adid{
    3. NSLog(@" GDTRewardAdVC didLoadAd adid:%@",adid);
    4. isLoaded = YES;
    5. }
    6. // 广告加载错误 当无法检索广告时,将调用此方法。
    7. // 常见错误代码:204 - 无广告 5xx - 内部服务器错误负数 - 内部错误
    8. - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adid withErrorCode:(NSInteger)errorCode{
    9. NSLog(@" GDTRewardAdVC didFailToLoadAdForAdUnitIdentifier 未加载完成 adid:%@ errorCode:%zd",adid,errorCode);
    10. }
    11. // 当广告即将要显示时,会调用此方法。
    12. // 在主UI线程上调用此方法。
    13. - (void)didDisplayAd:(NSString *)adid{
    14. NSLog(@" GDTRewardAdVC didDisplayAd adid:%@",adid);
    15. }
    16. // 广告被点击时调用此方法。
    17. // 在主UI线程上调用此方法。
    18. - (void)didClickAd:(NSString *)adid{
    19. NSLog(@" GDTRewardAdVC didClickAd adid:%@",adid);
    20. }
    21. // 当广告隐藏时,会调用此方法。
    22. // 在主UI线程上调用此方法。
    23. - (void)didHideAd:(NSString *)adid{
    24. NSLog(@" GDTRewardAdVC didHideAd adid:%@",adid);
    25. }
    26. // 当广告显示失败时,将调用此方法。
    27. // 指示显示失败的错误。常见错误代码在MAErrorCode.h中定义。
    28. - (void)didFailToDisplayAd:(NSString *)adid withErrorCode:(NSInteger)errorCode{
    29. NSLog(@" GDTRewardAdVC didFailToDisplayAd adid:%@ withErrorCode:%zd",adid,errorCode);
    30. }
    31. /**
    32. * 视频开始启动
    33. */
    34. - (void) didStartRewardedVideoForAd:(NSString *)adid{
    35. NSLog(@" GDTRewardAdVC didStartRewardedVideoForAd adid:%@",adid);
    36. }
    37. /**
    38. * 此方法将在视频完成时调用
    39. */
    40. - (void) didCompleteRewardedVideoForAd:(NSString *)adid{
    41. NSLog(@" GDTRewardAdVC didCompleteRewardedVideoForAd adid:%@",adid);
    42. }
    43. /**
    44. * 当应该授予用户奖励时,将调用此方法
    45. *
    46. * @param ad Ad for which reward ad was rewarded for.
    47. */
    48. - (void) didRewardUserForAd:(NSString *)adid {
    49. NSLog(@" GDTRewardAdVC didRewardUserForAd adid:%@",adid);
    50. }

    4插页广告

    4.1加载插页广告

    接口说明

    1. /// 加载插页广告
    2. /// - Parameter adid: 广告ID
    3. - (void)interstitialCreateInterstitialAd:(NSString *_Nonnull)adid;

    接入方法

    1. [MIDAppLovinAds.sharedInstance interstitialCreateInterstitialAd:@"广告ID"];

    4.2播放插页广告

    接口说明

    1. /// 播放广告
    2. - (void)interstitialShowAd;

    接入方法

    1. [MIDAppLovinAds.sharedInstance interstitialShowAd];

    4.3插页广告是否加载完成

    接口说明

    1. /// 广告是否加载完成
    2. - (BOOL)interstitialIsReady;

    接入方法

    1. if([MIDAppLovinAds.sharedInstance interstitialIsReady]){
    2. [MIDAppLovinAds.sharedInstance interstitialShowAd];
    3. }

    4.4插页广告回调

    您可以实现全部或部分代理,以跟踪点击成功或者激励视频广告请求失败等广告生命周期事件。

    接口说明

    1. /// 广告被点击
    2. /// - Parameter ad: 广告位ID
    3. - (void)interstitialAdDidClickAd:(NSString *)ad;
    4. /// 广告已打开展示
    5. /// - Parameter ad: 广告位ID
    6. - (void)interstitialAdDidDisplayAd:(NSString *)ad;
    7. /// 广告展示失败
    8. /// - Parameters:
    9. /// - ad: 广告位ID
    10. /// - error: 错误描述
    11. - (void)interstitialAdDidFailToDisplayAd:(NSString *)ad withError:(MIDAppLovinError *)error;
    12. /// 广告加载失败
    13. /// - Parameters:
    14. /// - adUnitIdentifier: 广告位ID
    15. /// - error: 错误描述(204:没有广告;5xx:内部服务器错误;负数:内部错误)
    16. - (void)interstitialAdDidFailToLoadAdForAdUnitIdentifier:(nonnull NSString *)adUnitIdentifier withError:(MIDAppLovinError *_Nullable)error;
    17. /// 广告关闭
    18. /// - Parameter ad: 广告位ID
    19. - (void)interstitialAdDidHideAd:(NSString *_Nullable)ad;
    20. /// 广告加载完成
    21. /// - Parameter ad: 广告位ID
    22. - (void)interstitialAdDidLoadAd:(NSString *_Nullable)ad;
    23. /// 收入事件
    24. /// - Parameters:
    25. /// - ad: 广告位ID
    26. /// - amount: 收入数量
    27. - (void)interstitialAdDidPayRevenueForAd:(NSString *_Nullable)ad withRewardAmount:(NSInteger )amount;

    接入方法

    1. /// 广告被点击
    2. /// - Parameter ad: 广告位ID
    3. - (void)interstitialAdDidClickAd:(NSString *)ad {
    4. NSLog(@" GDTRewardAdVC interstitialAdDidClickAd adUnitId:%@",ad);
    5. }
    6. /// 广告已打开展示
    7. /// - Parameter ad: 广告位ID
    8. - (void)interstitialAdDidDisplayAd:(NSString *)ad {
    9. NSLog(@" GDTRewardAdVC interstitialAdDidDisplayAd adUnitId:%@",ad);
    10. }
    11. /// 广告展示失败
    12. /// - Parameters:
    13. /// - ad: 广告位ID
    14. /// - error: 错误描述
    15. - (void)interstitialAdDidFailToDisplayAd:(NSString *)ad withError:(MIDAppLovinError *)error {
    16. NSLog(@" GDTRewardAdVC interstitialAdDidFailToDisplayAd adUnitId:%@,error:%@",ad,error.message);
    17. }
    18. /// 广告加载失败
    19. /// - Parameters:
    20. /// - adUnitIdentifier: 广告位ID
    21. /// - error: 错误描述(204:没有广告;5xx:内部服务器错误;负数:内部错误)
    22. - (void)interstitialAdDidFailToLoadAdForAdUnitIdentifier:(nonnull NSString *)adUnitIdentifier withError:(MIDAppLovinError * _Nullable)error {
    23. NSLog(@" GDTRewardAdVC interstitialAdDidFailToDisplayAd adUnitId:%@,error:%@",adUnitIdentifier,error.message);
    24. }
    25. /// 广告关闭
    26. /// - Parameter ad: 广告位ID
    27. - (void)interstitialAdDidHideAd:(NSString * _Nullable)ad {
    28. NSLog(@" GDTRewardAdVC interstitialAdDidHideAd adUnitId:%@",ad);
    29. }
    30. /// 广告加载完成
    31. /// - Parameter ad: 广告位ID
    32. - (void)interstitialAdDidLoadAd:(NSString * _Nullable)ad {
    33. NSLog(@" GDTRewardAdVC interstitialAdDidLoadAd adUnitId:%@",ad);
    34. UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"demo" message:@"插页广告加载完成" preferredStyle:UIAlertControllerStyleAlert];
    35. UIAlertAction *show = [UIAlertAction actionWithTitle:@"播放" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    36. [self showInterButtonClick];
    37. }];
    38. UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    39. }];
    40. [alert addAction:show];
    41. [alert addAction:cancel];
    42. [self presentViewController:alert animated:YES completion:nil];
    43. }
    44. /// 收入事件
    45. /// - Parameters:
    46. /// - ad: 广告位ID
    47. /// - amount: 收入数量
    48. - (void)interstitialAdDidPayRevenueForAd:(NSString * _Nullable)ad withRewardAmount:(NSInteger)amount {
    49. NSLog(@" GDTRewardAdVC interstitialAdDidPayRevenueForAd adUnitId:%@",ad);
    50. }

    5横幅(banner)广告

    5.1 加载并展示(固定位置)

    接口说明

    1. /// 加载并展示banner
    2. /// - Parameters:
    3. /// - adid: 广告ID
    4. /// - adController: 播放的控制器
    5. /// - isTop: 展示位置(true:最上方,false:最底部)
    6. /// - backgroundColor: banner背景颜色
    7. - (void)bannerCreateBannerAd:(NSString *_Nonnull)adid adController:(UIViewController *_Nonnull)adController Position:(BOOL)isTop backgroundColor:(UIColor *_Nonnull)backgroundColor;

    接入方法

    1. [MIDAppLovinAds.sharedInstance bannerCreateBannerAd:广告位ID adController:当前控制器 Position:位置(顶部/底部) backgroundColor:背景颜色];

    5.2 加载并展示(自定义位置)

    接口说明

    1. /// 加载并展示banner
    2. /// - Parameters:
    3. /// - adid: 广告ID
    4. /// - adController: 播放的控制器
    5. /// - x: 横幅广告X点位置
    6. /// - y: 横幅广告Y点位置
    7. /// - w: 横幅广告宽度
    8. /// - h: 横幅广告高度
    9. /// - backgroundColor: banner背景颜色
    10. - (void)bannerCreateBannerAd:(NSString *_Nonnull)adid adController:(UIViewController *_Nonnull)adController PositionX:(float)x PositionY:(float)y PositionW:(float)w PositionH:(float)h backgroundColor:(UIColor *_Nonnull)backgroundColor;

    接入方法

    1. [MIDAppLovinAds.sharedInstance bannerCreateBannerAd:广告位ID adController:当前控制器 PositionX:x PositionY:y PositionW:宽 PositionH:高 backgroundColor:背景颜色];

    5.3 移除当前banner

    接口说明
    需要保证当前控制器仅展示一个banner,同时存在多个时仅会关闭最后打开的banner

    1. /// 移除banner
    2. - (void)bannerDissmissADView;

    接入方法

    1. [MIDAppLovinAds.sharedInstance bannerDissmissADView];

    5.4 停止自动刷新

    接口说明

    1. /// 停止自动刷新
    2. - (void)bannerStopAutoRefresh;

    接入方法

    1. [MIDAppLovinAds.sharedInstance bannerStopAutoRefresh];

    5.5 开始自动刷新

    接口说明

    1. /// 开始自动刷新
    2. - (void)bannerStartAutoRefresh;

    接入方法

    1. [MIDAppLovinAds.sharedInstance bannerStartAutoRefresh];

    5.6 手动刷新(启用后会关闭自动刷新)

    接口说明

    1. /// 手动刷新(启用后会关闭自动刷新)
    2. - (void)bannerLoadAd;

    接入方法

    1. [MIDAppLovinAds.sharedInstance bannerLoadAd];

    5.7横幅(banner)广告回调

    您可以实现全部或部分代理,以跟踪点击成功或者激励视频广告请求失败等广告生命周期事件。

    接口说明

    1. /// 广告被点击
    2. /// - Parameter ad: 广告位ID
    3. - (void)bannerDidClickAd:(NSString *_Nullable)ad;
    4. /// 广告已打开展示(已废弃)
    5. /// - Parameter ad: 广告位ID
    6. - (void)bannerDidDisplayAd:(NSString *_Nullable)ad;
    7. /// 广告展示失败
    8. /// - Parameters:
    9. /// - ad: 广告位ID
    10. /// - error: 错误描述
    11. - (void)bannerDidFailToDisplayAd:(NSString *_Nullable)ad withError:(MIDAppLovinError *_Nullable)error;
    12. /// 广告加载失败
    13. /// - Parameters:
    14. /// - adUnitIdentifier: 广告位ID
    15. /// - error: 错误描述(204:没有广告;5xx:内部服务器错误;负数:内部错误)
    16. - (void)bannerDidFailToLoadAdForAdUnitIdentifier:(NSString *_Nullable)adUnitIdentifier withError:(MIDAppLovinError *_Nullable)error;
    17. /// 广告关闭(已废弃)
    18. /// - Parameter ad: 广告位ID
    19. - (void)bannerDidHideAd:(NSString *_Nullable)ad;
    20. /// 广告加载完成
    21. /// - Parameter ad: 广告位ID
    22. - (void)bannerDidLoadAd:(NSString *_Nullable)ad;
    23. /// 广告返回展示原始大小
    24. /// - Parameter ad: 广告位ID
    25. - (void)bannerDidCollapseAd:(NSString *_Nullable)ad;
    26. /// 广告扩展到全屏显示
    27. /// - Parameter ad: 广告位ID
    28. - (void)bannerDidExpandAd:(NSString *_Nullable)ad;
    29. /// 收入事件
    30. /// - Parameters:
    31. /// - ad: 广告位ID
    32. /// - amount: 收入数量
    33. - (void)bannerDidPayRevenueForAd:(NSString *_Nullable)ad withRewardAmount:(NSInteger )amount;

    接入方法

    1. /// 广告被点击
    2. /// - Parameter ad: 广告位ID
    3. - (void)bannerDidClickAd:(NSString * _Nullable)ad {
    4. NSLog(@" GDTRewardAdVC bannerDidClickAd adUnitId:%@",ad);
    5. }
    6. /// 广告返回展示原始大小
    7. /// - Parameter ad: 广告位ID
    8. - (void)bannerDidCollapseAd:(NSString * _Nullable)ad {
    9. NSLog(@" GDTRewardAdVC bannerDidCollapseAd adUnitId:%@",ad);
    10. }
    11. /// 广告已打开展示(已废弃)
    12. /// - Parameter ad: 广告位ID
    13. - (void)bannerDidDisplayAd:(NSString * _Nullable)ad {
    14. NSLog(@" GDTRewardAdVC bannerDidDisplayAd adUnitId:%@",ad);
    15. }
    16. /// 广告扩展到全屏显示
    17. /// - Parameter ad: 广告位ID
    18. - (void)bannerDidExpandAd:(NSString * _Nullable)ad {
    19. NSLog(@" GDTRewardAdVC bannerDidExpandAd adUnitId:%@",ad);
    20. }
    21. /// 广告展示失败
    22. /// - Parameters:
    23. /// - ad: 广告位ID
    24. /// - error: 错误描述
    25. - (void)bannerDidFailToDisplayAd:(NSString * _Nullable)ad withError:(MIDAppLovinError * _Nullable)error {
    26. NSLog(@" GDTRewardAdVC bannerDidFailToDisplayAd adUnitId:%@,error:%@",ad,error.message);
    27. }
    28. /// 广告加载失败
    29. /// - Parameters:
    30. /// - adUnitIdentifier: 广告位ID
    31. /// - error: 错误描述(204:没有广告;5xx:内部服务器错误;负数:内部错误)
    32. - (void)bannerDidFailToLoadAdForAdUnitIdentifier:(NSString * _Nullable)adUnitIdentifier withError:(MIDAppLovinError * _Nullable)error {
    33. NSLog(@" GDTRewardAdVC bannerDidFailToLoadAdForAdUnitIdentifier adUnitId:%@,error:%@",adUnitIdentifier,error.message);
    34. }
    35. /// 广告关闭(已废弃)
    36. /// - Parameter ad: 广告位ID
    37. - (void)bannerDidHideAd:(NSString * _Nullable)ad {
    38. NSLog(@" GDTRewardAdVC bannerDidHideAd adUnitId:%@",ad);
    39. }
    40. /// 广告加载完成
    41. /// - Parameter ad: 广告位ID
    42. - (void)bannerDidLoadAd:(NSString * _Nullable)ad {
    43. NSLog(@" GDTRewardAdVC bannerDidLoadAd adUnitId:%@",ad);
    44. }
    45. /// 收入事件
    46. /// - Parameters:
    47. /// - ad: 广告位ID
    48. /// - amount: 收入数量
    49. - (void)bannerDidPayRevenueForAd:(NSString * _Nullable)ad withRewardAmount:(NSInteger)amount{
    50. NSLog(@" GDTRewardAdVC bannerDidPayRevenueForAd adUnitId:%@",ad);
    51. }

    6 错误码