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

2023-11-19

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

记一下接入过程,算是没白辛苦吧。 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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity接入激励视频广告,Admob+UnityAds+FacebookAudienceNetwork+Pangle。 的相关文章

  • Unity-角色互动加分显示的实现

    文章目录 角色互动加分显示的实现 在角色的脚本里设置分数 布置页面以及编译对应的脚本 使用事件委托将两者连接 角色互动加分显示的实现 思路 在角色的脚本里对应该加分的地方用变量统计分数 同时再创建一个ui对象 然后用委派事件获取角色的得分
  • Unity进阶-消息框架的理论知识与实际操作学习笔记

    文章目录 Unity进阶 消息框架的理论知识与实际操作学习笔记 Unity进阶 消息框架的理论知识与实际操作学习笔记 笔记来源课程 https study 163 com course courseMain htm courseId 121
  • Unity 获取鼠标所在位置的UI及3D物体

  • unity--触屏游戏中如何判断点击的位置的左右&触屏游戏中如何判断点击的位置的左右&通过反转对象,让左侧运动的动画应用于右侧运动&通过代码改变图层覆盖顺序(Sorting Layer)

    文章目录 触屏游戏中如何判断点击的位置的左右 使用获取到的触碰坐标来进行左右移动 通过反转对象 让左侧运动的动画应用于右侧运动 通过代码改变图层覆盖顺序 Sorting Layer 触屏游戏中如何判断点击的位置的左右 我们先要有一个可以反馈
  • Unity进阶–通过PhotonServer实现人物移动和攻击–PhotonServer(五)

    文章目录 Unity进阶 通过PhotonServer实现人物移动和攻击 PhotonServer 五 DLc 消息类和通信类 服务器 客户端 Unity进阶 通过PhotonServer实现人物移动和攻击 PhotonServer 五 D
  • Unity——控制物体移动的方法

    控制物体移动的三种方法 一 常规方法 四个方向 if Input GetKey KeyCode W transform Translate Vector3 forward moveSpeed Time deltaTime if Input
  • unity2022.1.8之后版本的新的输入行为控制对象变化

    文章目录 unity2022 1 8之后版本的新的输入行为控制对象变化 怎么导入 如何使用 unity2022 1 8之后版本的新的输入行为控制对象变化 我们先了解大概的逻辑 我们要设置触发行为的方式并且让他和对象的行为绑定 再将行为和对象
  • 3. Unity之三维模型

    1 网格 Mesh 三维物体模型在unity中一般称为mesh 即网格数据 模型一般使用专用的建模软件设计 将mesh文件导入到unity中进行使用 一般mesh中保存的是三维模型的面和顶点数据 在unity中通过下图方法进行调整 其中 S
  • 8. unity脚本参数输入、键盘控制、组件脚本调用

    1 脚本参数 在脚本文件中可以定义一些公开的属性 这时对应的属性也会在编辑器中显示出来 可以在编辑器中直接改动属性的值 如下代码 将 rotateSpeed 属性使用 public 修饰后 using System Collections
  • unity进阶--xml的使用学习笔记

    文章目录 xml实例 解析方法一 解析方法二 xml path 创建xml文档 xml实例 解析方法一 解析方法二 xml path 创建xml文档
  • Unity程序基础框架__场景切换模块

    场景切换 泰课指路牌 https www taikr com course 1062 task 31006 show 在研发一款游戏的时候 会涉及到很多个场景的跳转 且在场景跳转的时候很多东西是通过读取配置表去动态生成的相应的玩家场景 下一
  • Unity--人物走近调节景物的不透明度

    思路 给景物添加碰撞体后 写入对应脚本 再由角色触碰后调用脚本里改变透明度的函数 设置好对应的碰撞体 导入渐变的组件 设置一下 统一一个集中存放设置的脚本 using System Collections using System Coll
  • 添加包和删除包&俯视角渲染&改变中心锚点的位置

    文章目录 如何添加包和删除包 如何俯视角渲染 如何改变中心锚点的位置 如何添加包和删除包 如何俯视角渲染 将z轴遮挡变为y轴遮挡 y轴为1表示以y轴为对比尺度 每个物体中心点y轴大的将会被中心点y轴小的物体遮掩 如何改变中心锚点的位置 把图
  • Unity——Transform类

    transform position 基础知识 Transform作为Unity中游戏对象最为重要的组件 位置 作为Transfrom组件的一个属性 具有同等重要的地位 Transform组件下有两个 位置 属性 position 指的是游
  • Unity之UI

    Unity之UGUI 一 Canvas 1 创建Canvas 2 Render Mode 1 Screen Space Overlay 2 Screen Space Camera 3 World Space 3 Pixel Perfect
  • Unity进阶--声音管理器学习笔记

    文章目录 声音管理器 using System Collections using System Collections Generic using UnityEngine public class AudioManager MyrSing
  • Unity进阶--fsm状态机的使用笔记

    文章目录 Unity进阶 fsm状态机的使用笔记 第一种用基础的 if 播放实现动画控制 switch case实现状态机 使用状态机 Unity进阶 fsm状态机的使用笔记 第一种用基础的 if 播放实现动画控制 朴实无华 简单易懂 但是
  • Unity3D RPG实现 3 —— 对话、任务系统

    目录 成果展示 对话系统 对话的存储数据结构 对话的UI面板设置 创建对话 任务的 NPC 实现对话控制器显示主对话窗口的内容 创建对话的选项内容 任务系统 创建任务 UI 面板 任务的存储数据结构 任务管理器与接受任务 任务控制相关脚本
  • Unity进阶-ui框架学习笔记

    文章目录 Unity进阶 ui框架学习笔记 Unity进阶 ui框架学习笔记 笔记来源课程 https study 163 com course courseMain htm courseId 1212756805 trace c p k2
  • Unity进阶--物品,背包,角色管理器

    文章目录 物品管理器 背包管理器 角色管理器 物品管理器 物品数据 Item json json部分 Resources Data Item id 1 name 新手剑 des 这是一把宝剑 price 200 icon attack 10

随机推荐

  • vue若依前端项目搭建

    1 项目搭建 首先进入到你需要创建的项目目录下面 然后输入命令vue create 创建项目 接下来选择手动搭建 然后把下面图片中的内容选上 再然后继续配置一些参数信息 接下来运行npm run serve项目就启动起来了 2 配置登录界面
  • 【学习】若依源码(前后端分离版)之 “ 上传图片功能实现”

    大型纪录片 学习若依源码 前后端分离版 之 上传图片功能实现 前言 前端部分 后端部分 结语 前言 图片上传也基本是一个项目的必备功能了 所以今天和大家分享一下我最近在使用若依前后端分离版本时 如何实现图片上传功能的经验和心得 前端部分 在
  • 服务器硬件知识普及篇(需要配置服务器的朋友可以参考)

    开篇一 服务器主板 服务器主板概述 对于服务器而言 稳定性才是首要 服务器必须承担长年累月高负荷的工作要求 而且不能像台式机一样随意的重起 为了提高起可靠性普遍的做法都是部件的冗余技术 而这一切的支持都落在主板的肩上 下面我就来看看有关服务
  • JAVA word转pdf各个版本都支持,aspose-words

    以下提供两种方法实现 建议使用aspose 一 第一种 使用aspose words Word转PDF 第一步 首先需要下载aspose words 15 8 0包 官方的地址很慢 并且包下载不下来 有需要可以去GITHUB上寻找 这里我提
  • async/await处理多个异步请求

    async await 处理异步操作 axios defaults baseURL http localhost 9999 async function queryData let result await axios get adata
  • 使用MyEclipse创建JSP页面的一般步骤

    一 MyEclipse下建立点 当然事先JDK以及Tomcat以及装好 在包资源管理器中 新建Web Project 站点名称 MyJSP2 选择当前站点的工作目录 默认是我们打开MyEclipse时设置的工作目录 在这里也可以修改 最好是
  • 关于写死bootargs实例

    文章目录 1 说明 2 举例 3 原理 1 说明 1 附加的内核命令行 cmdline BOARD KERNEL CMDLINE 在build core Makefile中 有以下一段内容 strip起到去除空格的作用 BOARD KERN
  • 2020-03-12 git分支

    1 git c 配置 git c
  • mysql怎么生成ER_navicat怎么生成er

    Navicat软件真是一个好东西 今天需要分析一个数据库 然后想看看各个表之间的关系 所以需要查看表与表之间的关系图 专业术语叫做ER关系图 默认情况下 Navicat显示的界面是这样的 软件将表当做一个对象 然后显示了所有的表 仅仅通过这
  • 进程同步之信号量机制(pv操作)及三个经典同步问题

    1 信号量机制 信号量机制即利用pv操作来对信号量进行处理 什么是信号量 信号量 semaphore 的数据结构为一个值和一个指针 指针指向等待该信号量的下一个进程 信号量的值与相应资源的使用情况有关 当它的值大于0时 表示当前可用资源的数
  • 将控制台内容重定向至文件

    使用os system command 等模块执行系统命令时 返回值为命令执行结果 命令执行成功返回Ture 否则返回False 若要得命令本身返回的内容 需要将命令输出至控制台的内容写到文件中 即将标准输出由控制台重定向至文件 将控制台内
  • element时间选择器的默认值

    概览 vue使用element组件 需要给时间选择器设置默认值 场景一 默认时间选择器 场景二 时间范围选择器 开始时间和结束时间 一 默认时间选择器 实现思路 element组件的v model绑定的数据变化 则时间选择器的默认值变化 可
  • element-ui对话框dialog详解

    效果展示 先给大家展示一下大致的样式 代码
  • 删除卡在C盘和D盘之间的恢复盘

    依次点击 此电脑 gt 管理 gt 磁盘管理 可以看到上图中C盘和D盘之间有一个恢复分区 导致即使删除D盘 C盘也无法进行拓展 并且中间的分区是没法右键删除的 搜索 cmd 右键以管理员方式运行 输入命令删除恢复盘 Microsoft Wi
  • element-tree树结构-默认选中第一个节点高亮-根据id选中节点高亮

    前言 tree树结构是在开发中经常使用的组件 比如区域树 楼层树 组织架构树 等等包含节点关系 实际开发可能需要我们一进到页面选中树形结构第一个节点 并且调用数据 来达到用户体验 在用户选择之后 通过本地存储的方式把楼层id存起来 刷新之后
  • 使用Docker registry镜像创建私有仓库

    2015 01 25 wcdj 摘要 安装Docker后 可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境 本文记录简单的搭建过程 1 使用registry启动私有仓库的容器 docker run d p 5000 50
  • 设计模式学习之装饰器模式

    装饰器 Decorator 模式跟适配器 Adapter 模式一样 属于构建型设计模式 在学习适配器模式的时候说过 适配器模式的重点在复用能力 装饰器模式的重点在扩展能力 换言之 装饰器模式是先复用后扩展 这也导致了很多人跟适配器模式混淆
  • SpringBoot实现原理

    一 什么是SpringBoot SpringBoot是一个快速开发框架 快速的将一些常用的第三方依赖整合 原理 通过Maven子父工程的方式 简化XML配置 全部采用注解形式 内置Http服务器 Jetty和Tomcat 最终以java应用
  • 09.09 星期一 恒指/德指/做单记录及晚盘前瞻

    今日小结 行情回顾 恒指周一早盘高开高走后快速震荡回踩一轮 企稳二次反弹至26740一线 上证开盘后二次回踩修复冲高26800一线关口 承压后快速收回涨势 维持一段时间区间震荡后承压震荡回落 第一轮跌破均线支撑26670一线 反弹部分走二次
  • Unity接入激励视频广告,Admob+UnityAds+FacebookAudienceNetwork+Pangle。

    前段时间用了两周时间接广告 后来又改用其他方式接入了 记一下接入过程 算是没白辛苦吧 2021 2 22 NRatel割 一 Admob UnityAds FacebookAudienceNetwork接入笔记 按照 https devel