前言:本文包含Unity接入ios sdk以及原生ios sdk的接入步骤,注意xcode版本的更新

一、后台配置

后台配置参照 TradPlus SDK – Unity-Android接入心得 一文中 后台配置,这里就不做重复赘述了

前置条件:

  • Xcode更新9.2或者最新版本
  • Unity需要2018.3.4或以上版本

二、TradPlus-Unity-ios SDK 的接入

准备工作:

在Mac上下载最新版本 sdk 并解压,获得 **TradPlusFrameworks TradPlusSDK **两个文件夹 。

1. 导入资源

  1. 将解压得到的**TradPlusSDK 文件夹导入到 Unity中Assets/Plugins目录下,注意:ios版的TradPlusSDK 和Android版的TradPlusSDK **不能同时存在于Unity资源文件夹中
  2. 使用Unity发布Xcode项目,将解压得到的**TradPlusFrameworks 文件夹复制进项目文件夹内,并使用Xcode打开项目。选中 UnityFramework,添加TradPlusFrameworks **,添加的时候勾选Creat groups
  3. 删除不必要的 第三方广告平台的库文件,以下都是第三方平台的库文件

2.项目配置

1. 添加常用系统依赖库

在项目 Build phases/Link Binary with libraries下添加以下依赖库

  - libz.tbd- libbz2.tbd- libxml2.tbd- libresolv.9.tbd- libsqlite3.tbd

2. 修改项目设置

1.在 Targets/Build Setting/Linking/Other Linker Flags 中加入ObjC

2. 如果项目需要接入MoPub和KSAdSDK,在 Targets/General中将MoPub.framework和KSAdSDK.framework 设置为Embed & Sign

3.代码实现

经过前两步的操作,接下来就可以快乐的写代码了,Unity-ios的接入不需要额外的编写代码,跟Unity-Android使用同一套代码即可,以杜立特行动的sdk接入为例:


using UnityEngine;
using System;
using System.Collections;public class ADManager : MonoBehaviour, IGameInterface
{public ManagerStatus Status { get; private set; }private Action ADVerifyCallback;private string adUnitId;private int reloadCount;public void SetADCallback(Action callback){ADVerifyCallback = callback;}public void StartUp(){Status = ManagerStatus.Started;/*  *  TradPlus后台设置 对应广告类型的广告位(非三方广告网络的placementId)*  仅在初始化广告位时调用一次*/reloadCount = 0;adUnitId = "9FBF62A82E85FA5F7C30DC6xxxxxxxxx";Init();}private void Init(){TradPlus.InitializeSdk(adUnitId);TradPlus.LoadRewardedVideoPluginsForAdUnits(adUnitId);LoadAD();SetListener();}public bool IsReady(){return TradPlus.HasRewardedVideo(adUnitId);}public void ShowRewardAd(){TradPlus.ShowRewardedVideoConfirmUWSAd(adUnitId);//自动reload设置为true,有广告直接展示广告,没有可用广告会自动加载广告TradPlus.ShowRewardedVideo(adUnitId);}public void LoadAD(){/* 4.4.0 以上版本支持Autoload**       参数2:自动reload设置true,TradPlus SDK会在两个地方帮你自动加载广告,无需调用load*               (1)obj.show()返回false时,此时该广告位下没有可用广告;*               (2)广告关闭,OnRewardedVideoDismissedEvent回调监听中**          不传默认false,需要在上述2个地方调用obj.load()方法以保证有广告的填充。*/TradPlus.RequestRewardedVideo(adUnitId, true);}private void SetListener(){//针对广告位下每个广告源的回调监听//广告加载成功TradPlusManager.OnRewardedVideoLoadedEvent += OnRewardedVideoLoadedEvent;//广告加载失败TradPlusManager.OnRewardedVideoFailedEvent += OnRewardedVideoFailedEvent;//广告开始展示TradPlusManager.OnRewardedVideoShownEvent += OnRewardedVideoShownEvent;//广告被点击TradPlusManager.OnRewardedVideoClickedEvent += OnRewardedVideoClickedEvent;//广告被关闭//重新加载广告;自动reload设置为true,无需加载广告TradPlusManager.OnRewardedVideoDismissedEvent += OnRewardedVideoDismissedEvent;//奖励,当视频播放完毕,会进行奖励回调TradPlusManager.OnRewardedVideoReceivedRewardEvent += OnRewardedVideoReceivedRewardEvent;//针对多个广告位加载的结果做一个状态的返回//当isLoadedSucces为false,重新加载广告TradPlusManager.OnRewardedVideoAllLoadedEvent += OnRewardedVideoAllLoadedEvent;}private void OnRewardedVideoLoadedEvent(string str){//Debug.Log("广告加载成功" + str);}private void OnRewardedVideoFailedEvent(string str1,string str2){//Debug.Log("广告加载失败" + str1 + str2);}private void OnRewardedVideoShownEvent(string str1, string str2){//Debug.Log("广告开始展示" + str1 + str2);}private void OnRewardedVideoClickedEvent(string str){//Debug.Log("广告点击" + str);}private void OnRewardedVideoDismissedEvent(string str){//Debug.Log("重新加载广告" + str);}private void OnRewardedVideoReceivedRewardEvent(string str1, string str2, int num){//Debug.Log("广告播放完毕");ADVerifyCallback.Invoke();}private void OnRewardedVideoAllLoadedEvent(bool result,string str){//设置了自动加载广告视频,当所有广告位加载失败时,允许3次重新加载,间隔25秒if (false == result){if (reloadCount < 3){StartCoroutine(ReloadAD());++reloadCount;}else{//Debug.Log("广告加载失败!");}}else{reloadCount = 0;}}private IEnumerator ReloadAD(){yield return new WaitForSeconds(25.0f);//Debug.Log("重新加载广告源");LoadAD();}
}

三、TradPlus-原生ios SDK 的接入

准备工作:

在Mac上下载最新版本 sdk 并解压,获得 **TradPlusFrameworks **文件夹 。

1. 导入资源

  1. 将解压得到的**TradPlusFrameworks 文件夹复制进项目文件夹内,并使用Xcode打开项目,添加TradPlusFrameworks **,添加的时候勾选Creat groups
  2. 删除不必要的 第三方广告平台的库文件,以下都是第三方平台的库文件

2. 项目配置

参照 TradPlus-Unity-ios SDK 的接入 中的项目配置

3.代码实现

原谅本人比较菜,不会Objective-C,就简单的贴一下代码吧

1. 头文件 tradplus_sdk_manager.h

#import <UIKit/UIKit.h>@interface TradplusSdkManager : UIViewController
+(TradplusSdkManager *) GetInterface;
-(void) LoadRewardAD;
-(void) ShowRewardAD;
-(int) GetAdCount;
-(NSString *) GetSlotId;
@end

2. tradplus_sdk_manager.mm

#import "tradplus_sdk_manager.h"
#import <TradPlusAds/MsRewardedVideoAd.h>
#import <TradPlusAds/MsSDKUtils.h>
#import "IosAdsHelper.h"@interface TradplusSdkManager ()<MsRewardedVideoAdDelegate>//相关回调时可以访问到的具体渠道信息。
@property (nonatomic, strong) NSMutableDictionary *dicChannelInfo;@property (strong, nonatomic) MsRewardedVideoAd *rewardedVideoAd;-(void) Init;- (void)rewardedVideoAdAllLoaded:(MsRewardedVideoAd *)rewardedVideoAd readyCount:(int)readyCount;
- (void)rewardedVideoAdLoaded:(MsRewardedVideoAd *)rewardedVideoAd;
- (void)rewardedVideoAd:(MsRewardedVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error;
- (void)rewardedVideoAdShown:(MsRewardedVideoAd *)rewardedVideoAd;
- (void)rewardedVideoAdClicked:(MsRewardedVideoAd *)rewardedVideoAd;
- (void)rewardedVideoAdDismissed:(MsRewardedVideoAd *)rewardedVideoAd;
- (void)rewardedVideoAdShouldReward:(MsRewardedVideoAd *)rewardedVideoAd reward:(MSRewardedVideoReward *)reward;
@end@implementation TradplusSdkManager:UIViewController
static TradplusSdkManager* _instance = nil;
+(TradplusSdkManager *)GetInterface
{if (nil == _instance) {_instance = [TradplusSdkManager new];[_instance Init];}return _instance;
}-(void) Init
{[MsSDKUtils msSDKInit:^(NSError *error){if (!error){NSLog(@"tradplus SDK 初始化成功!");}}];self.rewardedVideoAd = [[MsRewardedVideoAd alloc] init];//如果使用穿山甲广告,并且是非模版渲染(穿山甲海外只支持非渲染),需要在调用setAdUnitID方法之前手动设置如下:self.rewardedVideoAd.isPangleTemplateRender = NO;//如需自动reload,可调用setAdUnitID:isAutoLoad:方法[self.rewardedVideoAd setAdUnitID:@"344B8096EE4B760D86F9F8558722C396" isAutoLoad:true];self.rewardedVideoAd.delegate = self;
}
-(int)GetAdCount
{return self.rewardedVideoAd.readyAdCount;
}+(void) LoadFinish{IosAdsHelper* _iosAdHelper = IosAdsHelper::GetInsterface();_iosAdHelper->OnAdloaded();
}-(void) LoadRewardAD
{NSLog(@"广告开始加载 %s", __FUNCTION__);int count = [self GetAdCount];if(0<count){[TradplusSdkManager LoadFinish];}else{[self.rewardedVideoAd loadAd];}}-(void) ShowRewardAD
{if (self.rewardedVideoAd && [self.rewardedVideoAd isAdReadyWithDirection]){NSLog(@"显示广告!");UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];UIViewController *rootViewController = window.rootViewController;[self.rewardedVideoAd showAdWithDirectionFromRootViewController:rootViewController];}else{NSLog(@"没有广告!执行加载!");[self.rewardedVideoAd loadAd];}
}-(NSString *) GetSlotId
{return [self.rewardedVideoAd.dicChannelInfo objectForKey:@"placementid"];
}//load 完成
- (void)rewardedVideoAdAllLoaded:(MsRewardedVideoAd *)rewardedVideoAd readyCount:(int)readyCount
{if (readyCount > 0){//加载成功,有可供展示的插屏广告。NSLog(@"广告源加成功 %d %s", readyCount, __FUNCTION__);[TradplusSdkManager LoadFinish];}else {//加载失败,TradPlus后台对应广告位设置的所有三方广告源,全部加载失败,程序启动后第一次加载失败时建议隔30秒重新加载一次。如果设置了自动reload,此处不用处理。NSLog(@"所有广告源加载失败 %s", __FUNCTION__);[self LoadRewardAD];}
}
//单个广告源加载成功
-(void)rewardedVideoAdLoaded:(MsRewardedVideoAd *)rewardedVideoAd
{NSLog(@"单个广告源加载成功! %s", __FUNCTION__);[TradplusSdkManager LoadFinish];
}
//单个广告源加载失败
-(void)rewardedVideoAd:(MsRewardedVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error
{NSLog(@"%s->%@", __FUNCTION__, error);
}
//开始播放视频后回调
-(void)rewardedVideoAdShown:(MsRewardedVideoAd *)rewardedVideoAd
{NSLog(@"广告开始播放 %s", __FUNCTION__);
}
//视频播放结束后,关闭落地页
-(void)rewardedVideoAdDismissed:(MsRewardedVideoAd *)rewardedVideoAd
{//dismiss后重新请求广告,如果是自动加载可不调用。[self LoadRewardAD];NSLog(@"广告关闭 %s", __FUNCTION__);IosAdsHelper* _iosAdHelper = IosAdsHelper::GetInsterface();_iosAdHelper->AdsShowCallBackEvent(-1);
}
//点击广告后回调。
-(void)rewardedVideoAdClicked:(MsRewardedVideoAd *)rewardedVideoAd
{NSLog(@"点击了广告 %s", __FUNCTION__);
}
//播放完成获得奖励后回调 reward为TradPlus后台设置的奖励 通过reward.currencyType reward.amount访问
-(void)rewardedVideoAdShouldReward:(MsRewardedVideoAd *)rewardedVideoAd reward:(MSRewardedVideoReward *)reward
{NSLog(@"广告播放完成 获得奖励 %s", __FUNCTION__);self.dicChannelInfo = rewardedVideoAd.dicChannelInfo;IosAdsHelper* _iosAdHelper = IosAdsHelper::GetInsterface();_iosAdHelper->AdsShowCallBackEvent(0);      //广告播放完成,获得奖励
}
@end

3. 如果想获取广告加载的信息,可以通过

[self.rewardedVideoAd.dicChannelInfo objectForKey:@“信息字段”];

其中信息字段可以替换为以下单词

  • iso 国家两位简码
  • appkey mintegral除了appid之外还提供了appkey
  • appid 三方广告源 标识应用唯一标识的appid/appkey/sdkkey等
  • placementid 对应三方placement id,zone id等
  • unitid mintegral 单个广告位placement id下面还分unit id
  • load_time 加载时长,单位毫秒
  • is_play_complete 是否播放完成

四、常见错误及解决办法

如果出现Xcode构建错误,再次检查 导入资源项目配置这两步是否出错,一般都能解决问题

TradPlus SDK - IOS接入心得相关推荐

  1. Android和iOS接入Appsflyer SDK

    Android接入 1.添加repositories // ... repositories {// ...mavenCentral() } // ... 2.添加dependencies depen ...

  2. cocos creator接入微信登陆sdk ios篇

    cocos creator接入微信登陆sdk ios篇 背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇 步骤 去微信开放平台下载ios平台所需要的sdk 在" ...

  3. Unity接入微信SDK——iOS(接入微信SDK)

    Unity接入微信SDK--iOS(一 接入微信SDK) 下载微信SDK 下载地址:微信开放平台 导出Unity Xcode项目 导出Unity Xcode项目,并打开 微信SDK导入Xcode项目 ...

  4. IOS接入百度地图SDK,百度定位SDK记录

    地图显示 Xcode新建一个项目,我取名叫BaiduMapIOSAgain,包名为com.unity.BaiduMapIOSAgain. 在百度SDK的控制台创建应用,过程略,跟着官方说明即可 首先先 ...

  5. unity google admob ios 接入 聚合激励广告适配器

    下面说下躺坑 主要是接入google admob 聚合激励广告适配器 ,开启facebook ,unity,admob 广告 使用sdk框架接入 sdk下载地址:https://developers. ...

  6. CodeSign error: code signing is required for product type Application in SDK iOS XXX的解决办法

    转自:http://www.tuicool.com/articles/jYRNbm 在真机测试的时候往往会突然出现这样一个错误,code signing is required for product ...

  7. CodeSign error: code signing is required for product type Application in SDK iOS

    在真机测试的时候往往会突然出现这样一个错误,code signing is required for product type 'Application' in SDK 'iOS 7.0'  ,就是说 ...

  8. 如何解决 错误code signing is required for product type 'xxxxx' in SDK 'iOS 8.2'

    如何解决 错误code signing is required for product type 'xxxxx' in SDK 'iOS 8.2' 大家在做真机调试的时候,或许会遇到这样的问题,那如何 ...

  9. 短视频直播美颜sdk可以接入其它视频社交平台吗?

    近期,小编调研了市场上美颜sdk的使用情况,根据使用频率来看,短视频.直播类型的视频社交平台的使用频率是最高的,甚至超过了其它平台的总和.例如短视频平台,大家应该非常了解,毕竟它就是以各种卡点.趣味拍 ...

最新文章

  1. FTP匿名访问修复方法
  2. php 常用设计模式demo
  3. 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架
  4. 最近自学 Asp.net MVC 小总结
  5. 比特币市值占比达到年内高点
  6. Atitit 图像处理 halcon类库的使用  范例边缘检测 attilax总结
  7. [Swift]LeetCode528. 按权重随机选择 | Random Pick with Weight
  8. 苹果为什么不能开无线网络连接服务器,苹果手机不能上网怎么办 iPhone网络故障解决【详解】...
  9. php创建多级栏目_PHP 实现无限极栏目分类
  10. opencv 风挡轮廓补全
  11. Python _多文件入表中的记录
  12. BJFU 1399 警察抓小偷
  13. mysql根据表的一个字段决定去关联(join)那张表格
  14. 《大型网站技术架构:核心原理与案例分析》之读后小结
  15. dotnet core 2.1 使用阶梯编译
  16. libgdx教程_使用libgdx进行Android游戏开发–一天中的原型,第1a部分
  17. freertos与linux区别,μClinux、μC/OS-II、eCos、FreeRTOS和djyos操作系统的特点及不足-嵌入式系统-与非网...
  18. 运营方案要包括哪些内容_施工招标项目技术方案编制的内容包括哪些?
  19. mmdetection/mmdetection3d多机多卡训练
  20. stm32毕业设计 智能小车 自动泊车系统

热门文章

  1. BUUCTF VN2020 公开赛 Misc(复现)
  2. chrome浏览器扩展安装
  3. 在什么情况下,家里装修用集成墙面比较合适?
  4. 【angular】vscode设置tslint保存自动修改
  5. c++简单排序算法(冒泡、选择以及调用algorithm中的sort函数)
  6. 第六章-1: HFSS中的激励方式
  7. 设置默认以管理员权限运行Visual Studio
  8. ES 5.x bulk update重复的文档ID性能低下分析
  9. c语言 堆栈溢出,求助,关于堆栈溢出,急
  10. STM32 堆栈溢出检测