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

什么是开屏广告

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

开屏广告示例

a7b3967eb5bb43759b1027dd44e958d4.jpg

开屏广告的优势

位置优势:用户在进入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

关注我们,第一时间了解华为移动服务最新技术资讯~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在 Java 中实现开屏广告的代码示例: 1. 在布局文件中添加 AdView,例如: ``` <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:adSize="BANNER" app:adUnitId="@string/banner_ad_unit_id" /> ``` 2. 在 Activity 中添加以下代码: ``` import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; import com.google.android.gms.ads.MobileAds; public class MainActivity extends AppCompatActivity { private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化 MobileAds MobileAds.initialize(this, initializationStatus -> {}); // 查找 AdView mAdView = findViewById(R.id.adView); // 创建 AdRequest 对象 AdRequest adRequest = new AdRequest.Builder().build(); // 加载广告 mAdView.loadAd(adRequest); } @Override protected void onDestroy() { super.onDestroy(); // 释放 AdView 的资源 if (mAdView != null) { mAdView.destroy(); } } } ``` 其中,`MobileAds.initialize()` 方法用于初始化 Mobile Ads,需要在 Activity 的 onCreate() 方法中调用一次即可;`AdRequest.Builder().build()` 方法用于创建 AdRequest 对象,可以设置一些参数,例如设置用户的地理位置、关键词等;`mAdView.loadAd(adRequest)` 方法用于加载广告,会自动在后台进行预加载,不需要手动调用。 3. 在 AndroidManifest.xml 文件中添加以下权限: ``` <uses-permission android:name="android.permission.INTERNET"/> ``` 这个权限是必须的,因为开屏广告需要从互联网上加载广告内容。 注意:在使用开屏广告时,需要遵守 Google AdMob 的政策,不允许在开屏广告中添加过于骚扰的内容,例如闪烁、震动等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值