转发请注明文章来源 https://blog.csdn.net/ifmvo/article/details/115111125

开屏广告以App启动作为曝光时机,提供5s的可感知广告展示。用户可以点击广告跳转到目标页面;或者点击右上角的“跳过”按钮,跳转到app内容首页
——来自优量汇的文档

开屏广告是最普遍的一种广告形式。由于它打开App即展示的场景,使得开屏广告成为很多App广告收入的主要来源。

实际上开屏广告是很影响用户体验的,因为没有人喜欢打开一个软件之前必须要看一段广告。

这也是宇宙最大广告提供商Google AdMob直到最近几个月才开始做开屏广告的原因。

虽然开屏广告很影响用户的体验,但是随着国内大量的App都使用这种场景来投放广告,用户也就慢慢的习惯了这种开屏方式。毕竟,对于大部分用户来讲,免费才是最重要的。

下面就聊一下增加开屏广告收入的几种方法

一、增加热启动开屏

首先我们看一下视频示例:

示例中展示了一个完整的流程:


热启动的场景很常见,比如:我们在逛淘宝时朋友发来一条微信,点击微信的消息框切换到微信的聊天页面,这时淘宝就自动的退到了后台运行,几分钟后我们结束了微信聊天继续回来逛淘宝,淘宝就会给我们再热启动开屏页面。

热启动开屏广告其实就是增加了我们开屏广告的展示次数,也会大大增加我们的开屏广告收入。

但我们也需要注意开屏广告的展示频率,所以就像视频示例中,我们把App退到后台后需要等待一会才能看到热启动开屏广告,我这里是为了视频不要太长,所以只设置了2s,这个值可以根据自己喜好设置30s、1分钟、5分钟、30分钟都可以,需要自己在用户体验和广告收入之间找到一个平衡点。

那视频中的热启动开屏广告在技术层面是怎么实现的呢?我们来一段代码:

class MyApplication : Application() {//保存处于活跃状态的 Activity 个数private val mActivityCount = AtomicInteger(0)//应用退到后台的时间戳private var mAppStopTimeMillis = 0Loverride fun onCreate() {super.onCreate()registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {override fun onActivityStarted(activity: Activity?) {activity ?: return//热启动 && 应用退到后台时间超过10sif (mActivityCount.get() == 0 && System.currentTimeMillis() - mAppStopTimeMillis > 10 * 1000 && activity !is SplashActivity) {//打开热启动开屏页面SplashHotActivity.action(activity)}//+1mActivityCount.getAndAdd(1)}override fun onActivityStopped(activity: Activity?) {activity ?: return//-1mActivityCount.getAndDecrement()//退到后台,记录时间if (mActivityCount.get() == 0) {mAppStopTimeMillis = System.currentTimeMillis()}}//...省略其他无用代码})}
}

很简单,我们在Application中设置一个所有Activity的生命周期监听器,每一个Activity都会在这里回调。我们需要做的就是:记录处于活跃状态(onStart)的Activity的个数mActivityCount,当mActivityCount为0时,说明App已经退到后台了,这个时候如果有任何一个Activity回到活跃状态,那就是App热启动了。这时我们就可以启动一个新的开屏页面,来展示我们的热启动开屏广告。

class SplashHotActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_splash)AdHelperSplash.show(listener = object : SplashListener {override fun onAdFailedAll(failedMsg: String?) {//可以适当延迟1000ms后关闭当前页面,避免出现闪屏的效果finish()}override fun onAdDismissed(providerType: String) {//展示完广告后,关闭当前页面即可,会自动返回到之前浏览的页面finish()}//...省略其他无用代码})}
}

二、手机屏幕适配

优量汇的文档中可以看到,开屏广告有两种展示模式,分为半屏模式和全屏模式:

优量汇平台让我们开发者根据自己的情况自行选择。

那这两种模式我们如何选择?哪一种方式更好呢?其实,我们完全可以根据情况两种模式组合使用。

最近几年市面上发布的手机屏幕比例基本都在18:9左右,而在全面屏手机时代来临之前,手机屏幕的比例基本都保持在16:9。

所以在16:9的手机被完全淘汰之前,为了兼容两种主流的屏幕比例的手机,开屏广告的图片素材大多还遵循16:9的标准。

那么我们完全可以根据手机屏幕的宽高比来选择半屏模式还是全屏模式。 具体实现步骤如下:

  1. 获取屏幕的高度和宽度,计算出当前设备屏幕的高度和宽度的比例。
  2. 比例 > 16:9 使用半屏模式,比例 <= 16:9 使用全屏模式

这样,无论是全面屏手机还是小屏手机,我们都可以让用户看到最美的开屏广告。

由于目前最常见的两个广告提供商就是穿山甲和优量汇,所以这里也说一下我的经验:

穿山甲的开屏广告无论从质量和智能角度来讲,都不如优量汇的开屏广告。

使用过的读者就会发现,虽然穿山甲的开屏广告也提供了图片素材大小的参数,但是这个参数你无论怎么传,他都会给你返回一个16:9的广告素材,如果你的广告容器不是16:9,那你的广告看起来多半就会变形,导致体验很差,广告点击率下降。

相反,优量汇的开屏广告,不需要你传任何的尺寸参数,它会根据你提供的广告容器自动计算比例,并根据比例对图片进行裁剪或补充。这样展示出来的开屏广告就不会出现变形的问题。

基于这个经验,屏幕适配的方法更适用于穿山甲的开屏广告。而优量汇已经自动的帮我们做了优化。

查看完整示例,请点击阅读全文,或访问链接:TogetherAd
https://github.com/ifmvo/TogetherAd

关注我的公众号,持续更新优质文章。
微信扫一扫下方二维码即可关注:

Android 如何优化开屏广告?相关推荐

  1. android接入admob开屏广告

    最近admob推出开屏广告.刚好公司也在做海外广告这块的业务.于是开始接入开屏广告,展示图如下: 个人感觉开屏广告比较像插屏广告.实现如下: 1.添加依赖; implementation 'com.g ...

  2. 开屏广告=让用户等?小红书如何兼顾用户体验和广告投放效果

    开屏广告作为小红书品牌广告的重要组成部分,已成为诸多品牌客户触达目标用户.实现品牌营销诉求的强力助推器.小红书开屏广告的投放策略,既要满足客户对保量和效果的诉求,还要兼顾对用户体验的影响.由此我们配套 ...

  3. android 开屏广告动画,Android 开屏广告

    上一篇说了 ios 的开屏广告,这次把 Android 的也发下.逻辑,界面和 ios一致. 需求:广告不是一成不变,要随时更换图片,上下架时间,以及要启动就展示,需要先存到本地,以及点击跳转等问题. ...

  4. android怎么实现广告页,Android开屏广告的实现原理与适配方案

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 开屏广告目前很多应用都在使用,"约饭"为了推广自家的线上活动也提出了增加开屏广告的需求,所以就研究了 ...

  5. Android实现开屏广告(广点通SDK)

    一.注册腾讯广告账号 注册腾讯广告联盟账号:http://e.qq.com/dev/index.html 二.新建广告位 新建广告位并下载SDK,记住自己的广告位ID和应用ID. 三.接入SDK 1. ...

  6. Android 接入穿山甲SDK之开屏广告

    大家可以先参考我的上一篇博客介绍了如何集成SDK以及一些工具类传送门 首先创建一个脚本写入如下内容 package com.unity3d.player.chuanshanjia;import and ...

  7. Android监听前后台切换展示开屏广告

    此需求主要注意以下几点: 1.前后台切换监听 解决方案:在BaseApplication中通过 registerActivityLifecycleCallbacks(new LifecycleHand ...

  8. Android腾讯广告联盟接入-----开屏广告

    emmmmm 开头说两句吧 因为这是我第一次写博客 相当于自己记录下自己解决的问题吧而且刚入社会去开阔自己的视野 正文!!!! 先上效果图 一:准备工作 当然现在先得去注册一个腾讯广告联盟的账号,注册 ...

  9. Android接入穿山甲SDK并实现开屏广告

    一.穿山甲SDK的接入 0.进入官方下载地址,下载穿山甲AndroidSDK,下载的压缩包里包含.aar的sdk文件和工程demo. 1.将 SDK 压缩包内的 open_ad_sdk.aar 复制到 ...

  10. android多类型启动广告,如何在我的应用启动界面实现「开屏广告」?

    什么是开屏广告 开屏广告是一种在应用启动时且在应用主界面显示之前需要被展示的广告.一般是5s展示时间,广告展示时间结束后自动进入应用,用户可以点击跳过按钮直接进入主界面. 开屏广告示例 开屏广告的优势 ...

最新文章

  1. mysql create table()_MySQL Create Table创建表
  2. 开工了!三位大咖给你指路:未来 3~5 年内,哪个方向的机器学习人才最紧缺?
  3. Linux内存(手动释放cache)
  4. 在eclipse中安装与配置maven环境
  5. java卡安全域_java – 在安全管理器下解析许多域后,程序内存不足?
  6. JAVA进阶教学之(8种包装类)
  7. 带你了解Node.js包管理工具:包与NPM
  8. shell_exec() php 执行shell脚本
  9. centos 6.5下安装fpm打包工具
  10. Dubbo扩展点机制分析(二)
  11. java zip4j 内存文件和磁盘文件 压缩和加密
  12. ESP8266串口转wifi/wifi转串口模块
  13. 联想Y450 GT130M显卡 使用NVIDIA公版驱动(安装成功)
  14. WireShark抓取网站用户名和密码
  15. 阿里20亿美金收购考拉,丁磊到底是怎么“失身”的?
  16. openstack云计算平台 1(认证服务、镜像服务)
  17. 含有隐函数的离散常微分方程求解
  18. python循环3次停止_【Python】quot;为所欲为quot;怎么成语接龙?
  19. SAP中寄售信息记录税码维护缺失的清单输出实例
  20. No fallbackFactory instance of type class com.ruoyi.system.api.factory.RemoteLogFallbackFactory foun

热门文章

  1. RC电路 微分器 积分器 滤波器
  2. QT designer 控件自适应
  3. python生词本查单词译文_Kindle 阅读器“生词本”功能详细使用说明
  4. Burp新手抓包教程(HTTPS抓包)
  5. 如何设计一个秒杀系统(完整版)
  6. 【Latex】PPT画图,导出emf格式,word插入emf文件并导出pdf,pdf裁剪并导出eps文件,latex插入eps文件
  7. 微信小程序跳转视频号直播
  8. STM32单片机最小系统
  9. 信息科技风险管理提升方案(上)
  10. 01超详细:中文版ANSYS2021_R1安装教程