前段时间用了两周时间接广告,后来又改用其他方式接入了。

记一下接入过程,算是没白辛苦吧。 2021/2/22

--------------------------------- NRatel割 ---------------------------------

一、Admob+UnityAds+FacebookAudienceNetwork接入笔记

按照 https://developers.google.com/admob/unity/quick-start

1、创建Demo(Unity2019.4.24f1)。

2、下载插件(GoogleMobileAds-v5.4.0.unitypackage),并将插件导入Demo。
    导入后弹出了Package Manager Resolver。点击Add Selected Registries。点击 Apply。

3、加入移动广告 SDK(安卓)。
 Assets > External Dependency Manager > Android Resolver > Resolve。
要求切到 Android 平台。
切到后要求 Enable Android Auto-resolution。 Enable。

4、设置您的 AdMob 应用 ID。
Assets > Google Mobile Ads > Settings。(会生成一个配置文件于:Assets/Google Mobile Ads/Resources/GoogleMobileAdsSettings)

--------------------------------- NRatel割 ---------------------------------

安卓打包(不能播放)。
ClassNotFoundException com.google.android.gmd.ads.initialization.On...

Assets > External Dependency Manager > Android Resolver > ForceResolve
(ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH)。

下载最新JDK,并设置环境变量JAVA_HOME、CLASSPATH、PATH
https://www.oracle.com/java/technologies/javase-jdk15-downloads.html

注意:项目路径不能带特殊符号,否则会出错。因为要执行一些批处理命令。

--------------------------------- NRatel割 ---------------------------------
5、加入Admob中介测试套件
Admob中介:https://developers.google.cn/admob/unity/mediate
Admob中介测试套件:https://developers.google.cn/admob/unity/mediation-test-suite

6、集成 Facebook Audience Network SDK 及其适配器
https://developers.google.cn/admob/unity/mediation/facebook
技术直接拉到第三步。
下载 Google Mobile Ads mediation plugin for Facebook 解压并导入
(https://bintray.com/google/mobile-ads-adapters-unity/GoogleMobileAdsFacebookMediation#files)
会自动执行Resolve。 
最好再执行一下ForceResolve。
不需要额外其他操作。

7、集成 Unity Ads SDK 及其适配器
https://developers.google.cn/admob/unity/mediation/unity
技术直接拉到第三步。
下载 Google Mobile Ads mediation plugin for Unity Ads 解压并导入
(https://bintray.com/google/mobile-ads-adapters-unity/GoogleMobileAdsUnityAdsMediation#files)
会自动执行Resolve。 最好再执行一下ForceResolve。

--------------------------------- NRatel割 ---------------------------------

安卓打包报错:uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:com.google.ads.mediation.unity-3.6.0.0:]
解决:Player Settings > Other Settings > Minimum API Level, 16改为19。

怎么找到GAID(Android)(需要安装了Google服务框架的手机)
https://support.spryfox.com/hc/en-us/articles/360005168034-How-do-I-find-my-GAID-Google-Advertising-ID-Google-Play-devices-only-

怎么找到IDFA?(IOS)
在AppStore中搜索"IDFA",随便安装一个工具软件,打开即有显示。

--------------------------------- NRatel割 ---------------------------------

二、Pangle接入笔记

1、接入Pangle SDK Unity 海外版。
下载地址:https://www.pangle.cn/union/media/union/download?platform=unity。(需要登录)
解压并导入其中的 PangleSDK.unitypackage 和 PangleAdapterScripts.unitypackage。

PangleSDK.unitypackage,内含Android (主要是 ioen_ad_sdk.aar)和 IOS 依赖的库。
--------------------------------- NRatel割 ---------------------------------
PangleAdapterScripts.unitypackage,内含其适配到admob 所需的文件。
其中,
Plugins/Android/proguard-user.txt:用于避免SDK代码被混淆
res/xml/file_paths.xml:为com.bytedance.sdk.openadsdk.TTFileProvider提供资源
res/xml/network_config.xml:设置网络安全配置。具体参考 https://developer.android.com/training/articles/security-config?hl=zh-cn
Plugins/Android/AndroidManifest.xml:只是标明了SDK需要的配置。实际使用时要将其删除,然后把其中重要的部分合并到游戏的AndroidManifest.xml中去。
Editor/ModifyUnityAndroidAppManifestSample.cs:告诉你在C#中怎么修改游戏的AndroidManifest.xml。
其他:适配用的C#代码。

2、Admob聚合Pangle。
(安卓部分的文档,https://developers.google.com/admob/android/rewarded-ads-custom-events)

Admob聚合各家广告(如Pangle)的过程其实就是:
1、初始化:AdMob初始化 => 适配器初始化 => Pangle初始化 => 回调AdMob初始化成功/失败。
(com.google.android.gms.ads.mediation.InitializationCompleteCallback 的 onInitializationSucceeded/onInitializationFailed)
2、广告加载:AdMob广告加载 => 适配器广告加载 => Pangle广告加载 => 回调AdMob广告加载成功/失败。
(com.google.android.gms.ads.mediation.InitializationCompleteCallback 的 onInitializationSucceeded/onInitializationFailed)
3、广告展示:AdMob广告展示 => 适配器广告展示 =>Pangle广告加载 => 回调AdMob广告开始/展示/完成/获得奖励。
(com.google.android.gms.ads.mediation.InitializationCompleteCallback 的 onVideoStart/onAdFailedToShow/onVideoComplete/onUserEarnedReward)
--------------------------------- NRatel割 ---------------------------------
适配器要做的就是
实现Admob Adapter基类的接口方法,调用自家广告的接口,初始化、加载、展示成功/失败/完成某些过程时回调AdMob的回调方法。
注意:admob在调用适配器的广告加载接口时,会传过来一个MediationRewardedAdConfiguration,可以从它里面取到后台配置的可选参数,常用来从Admob后台传递placementID给适配器。


各家广告平台如果未和Admob合作,都需要自己实现这个适配器。
而Pangle 提供了一个示例。
下载地址:https://www.pangle.cn/union/media/union/download?platform=admob(需要登录)
注意:这个示例需要按照 Admob 激励广告自定义事件的文档,做一些修改,才可使用。
--------------------------------- NRatel割 ---------------------------------
安卓注意:
1、由于当前项目只需要激励视频,所以只保留AdmobRewardVideoAdapter.java,其他的 java文件全部删除。
2、写好适配代码后,将其放入Unity工程 Assets/PangleSDK/Android/Adapter/ 下。
3、实际测试时,发现适配器的初始化不会被调用。于是,要将pangle的初始化放在加载时,做个标记,保证只初始化一次。
--------------------------------- NRatel割 ---------------------------------
 IOS:
1、由于当前项目只需要激励视频,所以只保留BUDAdmob_RewardCustomEventAdapter.h 和 BUDAdmob_RewardCustomEventAdapter.m,其他的 .h文件和.m文件全部删除(可改名)。
2、加载时调用pangle的初始化,并做个标记,保证只初始化一次。
3、 IOS只能调IOS的加载和播放。否则会因找不到适配器而报错。(安卓没问题,但尽量也只调自己的)。
4、 placementID 必须是String类型,在后台配置时要注意。(IOS中解析json,返回NSString时竟然没报错)。

--------------------------------- NRatel割 ---------------------------------

三、IOS打包遇到的问题

ios 打包的流程:
1)、将Unity工程 导出成 Xcode工程,Unity C# 中调用 BuildPipeline.BuildPlayer(BuildPlayerOptions buildPlayerOptions) 
2)、使用 xcodebuild 将 Xcode工程打包成 ipa。

sdk使用cocoapods管理

--------------------------------- NRatel割 ---------------------------------

遇到的问题:

1、ruby 重装。(mac 10.15.7 和 ruby 2.6.3p62下 cocoapods 安装失败) :

关闭 mac sip
sudo rvm remove 3.0.0
rvm ruby 3.0.0
sudo gem install -n /usr/local/bin cocoapods

2、cocoapods 要安装在 /usr/local/bin下,否则unity不能识别。

四、激励视频初始化、加载和播放策略。

记得在上一家公司的时候,是用Fyber聚合,当时都没啥经验,每个广告位都申请一个广告位ID,整天为填充率低发愁。
原因是:广告请求加载后不展示,广告商会降低填充率。

其实还能想到几种策略。

策略一:所有广告场景共用一个adUnitId,游戏登录时初始化,初始化成功后立刻加载一个,然后每次播放关闭后重新加载。

优点:一定程度上解决了填充率低的问题。

缺点:1、解决的不彻底,登录时自动加载的广告还是有可能不被用户播放。2、不好处理加载失败的情况,因为官方不推荐失败即重试(可能连续失败),要想好重试策略(但似乎怎样都别扭)。

策略二:广告场景用可用一个或多个adUnitId,游戏登录时初始化,用户点击播放时主动加载并等待,加载完成后播放。

优点:能解决策略一的所有问题。

缺点:有等待时间,对体验有一定影响,要么强制让用户等待,要么用户可能中途放弃。

策略三:所有广告场景共用两个adUnitId(双线)。设置 cd,20s较合适。(Admob聚合政策:60s内请求超过3次可能会影响广告填充)。

优点:损失一些填充率提升体验(项目实际采用)。

缺点:维护逻辑较复杂。

--------------------------------- NRatel割 ---------------------------------

在我自己看来,策略二可能是最简单最清晰最理想的策略。目前也已经发现了有游戏采用。见《一念逍遥》的观影阁。

但是你不一定能说服你的老板采用策略二。因为他可能更在乎直观的感受而不管内在逻辑。哈哈。

其实仔细想一下,如果用户打算看激励广告,会在乎那一点等待时间吗?如果不打算看,你提前加载了也没用。

五、完整示例

已放入github,并抹掉了参数(请使用自己的参数)(用的策略一)。

https://github.com/NRatel/AdsDemo/

Unity接入激励视频广告,Admob+UnityAds+FacebookAudienceNetwork+Pangle。相关推荐

  1. Android 接入穿山甲激励视频广告步骤与错误总结

    1.先去穿山甲官网,注册登录账号 2.侧边栏->广告变现->流量->应用->新建应用 3.侧边栏->广告变现->流量->代码位->新建代码位 4. 侧边 ...

  2. 微信小程序接入广告(banner广告 激励视频广告 插屏广告)

    1.banner广告 <ad unit-id="{{ adUnitId }}"></ad> 2.视频广告 <ad unit-id="{{ a ...

  3. 穿山甲和广点通激励视频广告打开失败的异常处理

    由于项目里接入了广告,包括但不限于穿山甲sdk和广点通sdk,视频广告是收益比较高的广告,项目里面出现的地方比较多.流程一般都是UI上有个按钮,点击按钮,请求到激励视频广告,然后直接打开该广告,也就是 ...

  4. 穿山甲sdk激励视频广告关闭按钮引发的bug排查及解决

    项目中接入了穿山甲广告,其中包括图文广告和视频广告,后期发现一个偶现的问题,就是看完激励视频广告后,点击视频页面的关闭按钮,此时回到了app源生页面,UI卡住了,本来看完视频有个加分操作,现在没了.排 ...

  5. 小游戏内测激励视频广告,然而小程序最大的潜力是电商

    4月25日,微信发布公告,宣布"为支持小游戏开发者更好将游戏场景与广告融合,现面向部分小游戏开发者启动激励式视频广告组件测试."这是去年3月小游戏与耐克尝试合作"基座广告 ...

  6. uniapp 小程序 加载显示激励视频广告

    uniapp激励广告文档:uni-app官网https://uniapp.dcloud.io/api/a-d/rewarded-video微信官网激励广告文档:激励视频广告 | 微信开放文档微信开发者 ...

  7. Unity接入腾讯广告/腾讯联盟/优量汇SDK操作步骤——源码+图文效果详情

    Unity接入腾讯广告/腾讯联盟/优量汇SDK操作步骤--源码+图文效果详情 前言 一.下载SDK 二.官网注册相关项目信息 1.新建媒体 2.新建广告位 三.更改代码 1.更改初始化SDK的代码 2 ...

  8. cocos creator 微信小游戏 封装banner、原生格子、插屏、激励视频广告

    创建WxPlatform.ts文件 封装bannger广告 class WxPlatform {//banner广告banner: BannerAd;showBanner() {if (cc.sys. ...

  9. IOS项目接入Vungle视频广告,单例类,可直接调用

    IOS项目接入Vungle视频广告,单例类,为了图方便的 复制到项目里,可以直接调用显示 生产环境: XCode 10.1,  Vungle: 6.3.2 调用方法: // 初始化: 参数是否打开日志 ...

最新文章

  1. MFC全局函数开局——AfxGetApp解剖
  2. 技术人必备的碎片化时间学习工具
  3. koa-generator 快速生成 koa2 服务的脚手架工具
  4. JAVA minaio模型_分布式系统之Java IO模型
  5. SQL Server 2014 许可证(六)虚拟化中的授权
  6. spring mvc +cookie+拦截器功能 实现系统自动登陆
  7. LintCode-73.前序遍历和中序遍历树构造二叉树
  8. Access2016学习12
  9. 主流微波雷达感应语音播报雷达感应照明灯LD602模块
  10. 重装显卡驱动,解决NVIDIA-SMI has failed问题
  11. Scratch www 系统搭建
  12. 嵌入式开发Linux入门
  13. 上海是怎么错失这些年的互联网机遇的?——写的很好,转
  14. HTML5小游戏源码收藏
  15. 利用matlab实现非线性拟合(三维、高维、参数方程)
  16. geany配置python_python使用Geany编辑器配置方法
  17. 熊过留印---爱心篇
  18. Office2016离线包下载
  19. NB 的开源项目遍地开花——GitHub 热点速览 Vol.41
  20. Vector-常用CAN工具 - CANoe入门到精通_02

热门文章

  1. C++对象模型的那些事儿之五:NRV优化和初始化列表
  2. 二叉树(类模板、函数模板、函数对象、函数指针)
  3. 总结:TCP/IP 详解(卷1: 协议)--第九章 广播和本地组播(IGMP 和 MLD)
  4. 字节跳动张一鸣身价594亿美元超马化腾
  5. iOS加载网页【全解】
  6. powershell连接数据库_PowerShell 连接SQL
  7. 一文了解复旦大学DISC实验室4篇COLING 2022论文内容
  8. Android DropBoxManagerService解析
  9. 新浪微博API申请与使用
  10. Android---模拟器