android多类型启动广告,如何在我的应用启动界面实现「开屏广告」?
什么是开屏广告
开屏广告是一种在应用启动时且在应用主界面显示之前需要被展示的广告。一般是5s展示时间,广告展示时间结束后自动进入应用,用户可以点击跳过按钮直接进入主界面。
开屏广告示例
开屏广告的优势
位置优势:用户在进入App前就会看到开屏广告,相比于应用内广告提前,并且只要使用App的用户就要强制观看。
展示面积大:广告全屏显示,视觉冲击力很强,便于优质内容曝光,吸引用户眼球,增强用户点击率与品牌曝光度。
当用户刚打开应用时,用户覆盖面广,用户注意力集中。因此开屏广告适用于广告主进行大规模的品牌宣传和产品推广。
华为广告服务能够帮助开发者接入包括开屏广告在内的6种广告位。接下来的文章会详细讲解开屏广告的开发步骤。示例代码已在相关社区进行开源,欢迎开发者关注、下载并提供宝贵意见:
前提条件
HUAWEI Ads SDK依赖HMS Core(APK)4.0.0.300及以上版本。如果设备上未安装HMS Core(APK)4.0.0.300及以上版本,则无法使用HUAWEI Ads SDK的相关接口。
在开发应用前需要在
参见
开发前准备
广告服务的集成需如下4个关键步骤,可以参考
1. 导入HUAWEI Ads SDK
2. 配置网络权限
3. 配置混淆脚本
4. 初始化SDK
1.1添加SplashView。
在XML布局文件中添加SplashView。
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SplashActivity">
android:id="@+id/logo_area"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:visibility="visible">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp"
android:orientation="vertical">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="6dp"
android:gravity="center"
android:orientation="horizontal">
android:layout_width="28dp"
android:layout_height="28dp"
android:background="@mipmap/ic_launcher" />
android:layout_width="0.5dp"
android:layout_height="18dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:alpha="0.1"
android:background="@android:color/black" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="1"
android:text="@string/owner"
android:textColor="@android:color/black"
android:textSize="16sp" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:alpha="0.5"
android:text="@string/copyright_info"
android:textColor="@android:color/black"
android:textSize="8sp" />
android:id="@+id/splash_ad_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/logo" />
以下示例代码展示了如何获取SplashView
SplashView splashView = findViewById(R.id.splash_ad_view);
1.2修改应用默认启动页面。
开屏广告是在应用主界面显示之前被展示,所以需修改应用默认启动页面。
修改AndroidManifest.xml, 将默认启动的activity修改为SplashActivity,这样即可在应用主界面加载前展示开屏广告。
package="com.huawei.hms.ads.sdk">
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:name=".MainActivity"
android:exported="false"
android:screenOrientation="portrait">
android:name=".SplashActivity"
android:exported="true"
android:screenOrientation="portrait">
...
创建SplashActivity.java类,用于实现开屏广告获取和展示。
...
import android.os.Build;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
// "testq6zq98hecj"为测试专用的广告位ID, App正式发布时需要改为正式的广告位ID
private static final String AD_ID = "testq6zq98hecj";
private static final int AD_TIMEOUT = 5000;
private static final int MSG_AD_TIMEOUT = 1001;
/**
* 暂停标志位。
* 在开屏广告页面展示时:
* 按返回键退出应用时需设置为true,以确保应用主界面不被拉起;
* 切换至其他界面时需设置为false,以确保从其他页面回到开屏广告页面时仍然可以正常跳转至应用主界面;
*/
private boolean hasPaused = false;
// 收到广告展示超时消息时的回调处理
private Handler timeoutHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
if (SplashActivity.this.hasWindowFocus()) {
jump();
}
return false;
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
// 获取并展示开屏广告
loadAd();
}
/**
* 广告展示完毕时,从广告界面跳转至App主界面
*/
private void jump() {
if (!hasPaused) {
hasPaused = true;
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}
}
/**
* 按返回键退出应用时需设置为true,以确保应用主界面不被拉起
*/
@Override
protected void onStop() {
// 移除消息队列中等待的超时消息
timeoutHandler.removeMessages(MSG_AD_TIMEOUT);
hasPaused = true;
super.onStop();
}
/**
* 从其他页面回到开屏页面时调用,进入应用主界面
*/
@Override
protected void onRestart() {
super.onRestart();
hasPaused = false;
jump();
}
@Override
protected void onDestroy() {
super.onDestroy();
1.3获取广告。
SplashView创建好之后,通过SplashView类的load()方法来获取广告。
private void loadAd() {
int orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
AdParam adParam = new AdParam.Builder().build();
SplashView.SplashAdLoadListener splashAdLoadListener = new SplashView.SplashAdLoadListener() {
@Override
public void onAdLoaded() {
// 广告获取成功时调用
...
}
@Override
public void onAdFailedToLoad(int errorCode) {
// 广告获取失败时调用, 跳转至App主界面
jump();
}
@Override
public void onAdDismissed() {
// 广告展示完毕时调用, 跳转至App主界面
jump();
}
};
// 获取SplashView
SplashView splashView = findViewById(R.id.splash_ad_view);
// 设置默认Slogan
splashView.setSloganResId(R.drawable.default_slogan);
// 设置视频类开屏广告的音频焦点类型
splashView.setAudioFocusType(AudioFocusType.NOT_GAIN_AUDIO_FOCUS_WHEN_MUTE);
// 获取广告,其中AD_ID为广告位ID
splashView.load(AD_ID, orientation, adParam, splashAdLoadListener);
// 发送延时消息,保证广告显示超时后,APP首页可以正常显示
timeoutHandler.removeMessages(MSG_AD_TIMEOUT);
timeoutHandler.sendEmptyMessageDelayed(MSG_AD_TIMEOUT, AD_TIMEOUT);
1.4监听广告事件。
通过实现SplashAdDisplayListener类中的方法来监听广告展示类事件。了解详细方法,请参见API文档中的SplashAdDisplayListener类。
SplashAdDisplayListener adDisplayListener = new SplashAdDisplayListener() {
@Override
public void onAdShowed() {
// 广告显示时调用
...
}
@Override
public void onAdClick() {
// 广告被点击时调用
...
}
};
splashView.setAdDisplayListener(adDisplayListener);
>>访问华为广告服务官网,了解更多相关内容
>>访问华为开发者联盟官网,了解更多相关内容
>>华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解华为移动服务最新技术资讯~
android多类型启动广告,如何在我的应用启动界面实现「开屏广告」?相关推荐
- 如何在我的应用启动界面实现「开屏广告」?
什么是开屏广告 开屏广告是一种在应用启动时且在应用主界面显示之前需要被展示的广告.一般是5s展示时间,广告展示时间结束后自动进入应用,用户可以点击跳过按钮直接进入主界面. 开屏广告示例 开屏广告的优势 ...
- Android 接入穿山甲SDK之开屏广告
大家可以先参考我的上一篇博客介绍了如何集成SDK以及一些工具类传送门 首先创建一个脚本写入如下内容 package com.unity3d.player.chuanshanjia;import and ...
- Android逆向实战 - 腾讯新闻去开屏广告
上次反编译一个工具类app失败,原因是使用了360加固,回编译后无法启动.一般来讲,大厂的app考虑到性能.兼容性.包体积等,通常不用加固.因此,本次我们选一个大一些的app-腾讯新闻.写在前面:本篇 ...
- android怎么实现广告页,Android开屏广告的实现原理与适配方案
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 开屏广告目前很多应用都在使用,"约饭"为了推广自家的线上活动也提出了增加开屏广告的需求,所以就研究了 ...
- Android接入穿山甲SDK并实现开屏广告
一.穿山甲SDK的接入 0.进入官方下载地址,下载穿山甲AndroidSDK,下载的压缩包里包含.aar的sdk文件和工程demo. 1.将 SDK 压缩包内的 open_ad_sdk.aar 复制到 ...
- ubuntu 自动加载ko_开屏广告太烦人?用这个只有 2M 的 App,助你自动跳过 5 秒等待...
手机上的什么按钮会让你不假思索点击?除了抢红包,恐怕就是应用启动页的「跳过广告」了.「跳过广告」会这么容易被叉掉吗?显然,如果不够快准狠,连戳几次没反应不说,还有可能在戳偏后继续忍受广告跳转--掐指算 ...
- 微信为什么没有开屏广告?
微信在商业广告变现的道路上一直很克制,而开屏广告对用户体验伤害极大,对微信来说,开屏广告与其自身发展理念不一致. 01 前言 玩了这么久的微信,不知道大家有没有思考过一个问题,微信商业化也有好几年了, ...
- 好用app开屏广告组件XHLaunchAd -支持静态/动态图片广告/mp4视频广告
特性: 1.支持静态/动态图片广告. 2.支持mp4视频广告. 3.支持全屏/半屏广告. 4.支持网络及本地资源. 5.兼容iPhone和iPad. 6.支持广告点击事件. 7.支持自定义跳过按钮,添 ...
- 【Flutter】Flutter 如何实现开屏广告
文章目录 一.前言 二.实现开屏广告页面 三.实现广告数据的加载 四.开屏广告的完整代码 五.总结 一.前言 开屏广告这个功能在商业应用中非常常见,它可以在应用启动时向用户展示广告,增加应用的商业价值 ...
最新文章
- Open3D面向机器学习的扩展库
- 生信服务器 | Linux 时间戳和标准时间
- 物联网技术周报第 145 期: ESP8266 和 IFTTT 自制 WiFi 智能秤
- 智能合约从入门到精通:调用数据的布局和ABI
- java class.getmethod_java反射之Class.getMethod与getDeclaredMethods()区别
- MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16
- SQL Server的数据导入MySQL数据库方法简介
- 好久不上来,发现这个世界变得真是快啊,都.NET 2.0 AJAX了~~
- python对csv文件中的数据进行分类_python 数据处理 对csv文件进行数据处理
- jest单元测试-基础
- 尚硅谷大数据Hadoop(1)技术之Hadoop(入门)
- Cox回归和HR值理解要点难点,实例讲解
- 访问WebServcie遇到配额不足的时候,请增加配额
- 在电脑上怎么做报表新手_自己怎样在电脑上制作表格
- 【深度学习】Github 最受欢迎的深度学习项目 TOP 20
- 2007noip提高组初赛总结
- Python如何下载网页上的视频
- 计算机实际上是如何工作的
- 从前端Vue/Axios到后端交互--浅谈Vue生命周期、Ajax调用
- Java基础21-JavaWeb(01)【HTML】