简介
华为广告服务(HUAWEI Ads)是一个开放、合规的广告生态。用户可以通过流量变现服务在应用内广告中获得更多收益;通过广告标识服务,可以全方位保护用户隐私,也可以帮助广告平台和三方监测平台合规地开展个性化广告和转化归因。华为广告服务具有高额的变现收益、丰富的广告形式、独有的一键安装、完善的服务体系等特点。
广告形式
为满足App不同场景下的内容体验需要,华为广告服务提供Banner广告、原生广告、激励广告、插屏广告、开屏广告,极速开屏广告六种广告形式,其中极速开屏广告无需集成SDK,本文中不做说明。相信后续华为会持续推出更多、更丰富的广告形式。广告服务集成方式本文中不做介绍,若有需求,请查看HMS或官方文档。下图则展示了几种广告形式:
Banner广告
Banner广告是在应用程序顶部、中部或底部占据一个位置的矩形图片,广告内容每隔一段时间会自动刷新,点击内容时通常会链接到广告主的页面。
- 添加BannerView
添加Banner广告方式可在XML中添加
<com.huawei.hms.ads.banner.BannerView
android:id="@+id/hw_banner_view_144"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
hwads:adId="testw6vs28auh3"
hwads:bannerSize="BANNER_SIZE_360_144" />
通过findViewById或@BindView(butterknife.BindView)获取BannerView。布局中可设置广告位ID和尺寸。
或在代码中添加
BannerView bannerView = new BannerView(this);
// "testw6vs28auh3"为专用的测试广告位ID
bannerView.setAdId("testw6vs28auh3");
// 设置广告位尺寸
bannerView.setBannerAdSize(BannerAdSize.BANNER_SIZE_360_144);
FrameLayout adFrameLayout = findViewById(R.id.banner_ad_container);
adFrameLayout.addView(bannerView);
通过new方法创建BannerView,同时可设置广告位ID和尺寸。
- 获取广告
BannerView创建好之后,通过BannerView类的loadAd()方法来获取广告。
// 创建广告请求,获取广告
AdParam adParam = new AdParam.Builder().build();
bannerView.loadAd(adParam);
其中AdParam是用户发起获取广告请求对广告筛选的一些参数:
...
@GlobalApi
public final AdParam.Builder setBelongCountryCode(String var1) {
...
}
@GlobalApi
public final AdParam.Builder setTagForChildProtection(Integer var1) {
...
}
@GlobalApi
public final AdParam.Builder setNonPersonalizedAd(Integer var1) {
...
}
@GlobalApi
public final AdParam.Builder setTagForUnderAgeOfPromise(Integer var1) {
...
}
@GlobalApi
public final AdParam.Builder setAdContentClassification(String var1) {
...
}
...
方法 | 描述 |
---|---|
setTagForChildProtection | 为了满足《儿童在线隐私保护法》(COPPA)的要求,HUAWEI Ads SDK提供了“面向儿童内容的标记”的设置 |
setTagForUnderAgeOfPromise | 为了满足《一般数据保护条例》(GDPR)的要求,HUAWEI Ads SDK提供了“未达到法定承诺年龄的用户”的设置。一旦启用此设置,包含标记的广告请求均无法获取到个性化广告 |
setAdContentClassification | HUAWEI Ads SDK提供了广告内容过滤能力,在请求广告时可以设置广告内容分级的上限。使用此方法获取的广告内容会小于等于设置的分级 |
setNonPersonalizedAd | HUAWEI Ads SDK支持投放的广告分为个性化广告与非个性化广告两种。通过此方法可以设置请求的广告类型 |
因为广告发放并不仅仅是一下发放给所有用户,还可以根据国家、地区、经纬度、用户类型及搜索关键字等进行区分,这样可以提高广告效率,实现更好的广告收益。具体参数说明请查看华为广告高级设置。
同时AdParam对广告错误进行了细分:
@GlobalApi
public interface ErrorCode {
int INNER = 0;
int INVALID_REQUEST = 1;
int NETWORK_ERROR = 2;
int NO_AD = 3;
int AD_LOADING = 4;
int LOW_API = 5;
int BANNER_AD_EXPIRE = 6;
int BANNER_AD_CANCEL = 7;
int HMS_NOT_SUPPORT_SET_APP = 8;
}
错误码 | 值 | 描述 | 解决方法 |
---|---|---|---|
INNER | 0 | 内部错误 | 检查HMS Core版本是否为4.0.0及以上版本、检查当前网络是否可用 |
INVALID_REQUEST | 1 | 无效的广告请求,如未设置广告位ID、Banner广告尺寸无效等 | 检查申请的广告位是否已生效、检查应用包名与申请广告位的使用的包名是否一致、检查广告尺寸是否设置正确。 |
NETWORK_ERROR | 2 | 由于网络连接错误导致广告请求失败 | 检查当前网络是否可用 |
NO_AD | 3 | 广告请求成功,但是服务器没有返回可用的广告素材 | 检查测试手机配置的国家地区是否正确 |
AD_LOADING | 4 | 广告正在请求中,不能重复发起请求 | 检查是否重复下发广告请求 |
LOW_API | 5 | API版本不在广告服务支持范围内 | 检查HMS Core版本是否为4.0.0及以上版本、检查App中设置的minSdkVersion是否为19及以上 |
BANNER_AD_EXPIRE | 6 | 横幅广告过期 | 横幅广告已过期,重新请求广告,不要缓存广告 |
BANNER_AD_CANCEL | 7 | 横幅广告任务下架 | 横幅广告已过期,重新请求广告,不要缓存广告 |
HMS_NOT_SUPPORT_SET_APP | 8 | HMS Core版本过低,不支持设置AppInfo | 将手机中的HMS Core更新至最新本 |
通过ErrorCode(相当重要),开发者能够更快定位错误原因,找到解决方案,实现更好的用户体验。
- 广告事件监听
根据广告加载状态开发者可以自定义相关操作:
bannerView.setAdListener(new AdListener(){
@Override
public void onAdLoaded() {
// 广告获取成功调用
}
@Override
public void onAdFailed(int errorCode) {
// 广告获取失败时调用
}
@Override
public void onAdOpened() {
// 广告打开时调用
}
@Override
public void onAdClicked() {
// 广告点击时调用
}
@Override
public void onAdLeave() {
// 广告离开应用时调用
}
@Override
public void onAdClosed() {
// 广告关闭时调用
}
});
通常,广告获取成功才可以进行后续操作,获取成功之前可用占位图进行占位或者不进行相关展示;广告获取失败需要进行相关处理,定位错误提供相关方案;广告打开、点击、离开、关闭可以进行数据分析,分析请求量、返回量、点击率、展示率等数据,从而进行更好的市场营销。
- 广告尺寸
类型 | 尺寸(宽*高 以dp为单位) | 说明 | 是否可用 |
---|---|---|---|
BANNER_SIZE_320_50 | 320x50 | 普通Banner广告,适用于手机设备 | ✘ |
BANNER_SIZE_320_100 | 320x100 | 大型Banner广告,适用于手机设备 | ✘ |
BANNER_SIZE_300_250 | 300x250 | 中矩形Banner广告,适用于手机设备 | ✘ |
BANNER_SIZE_360_57 | 360x57 | 普通Banner广告,适用于1080*170px的广告素材 | ✓ |
BANNER_SIZE_360_144 | 360x144 | 大型Banner广告,适用于1080*432px的广告素材 | ✓ |
BANNER_SIZE_SMART | 宽x32/50/90 | 自适应Banner广告,根据设备的宽高比自动调整广告尺寸,适用于手机设备 | ✘ |
其中BANNER_SIZE_SMART是Smart Banner广告。Smart Banner是一种在任何屏幕尺寸、任何屏幕方向的设备上展示与屏幕等宽的Banner广告。获取广告时HUAWEI Ads SDK会根据当前设备屏幕方向,创建与屏幕等宽的广告视图,而广告高度是根据当前屏幕方向的高度来决定。
广告高度 | 屏幕高度 |
---|---|
32dp | ≤ 400dp |
50dp | > 400dp 且 <= 720dp |
90dp | > 720dp |
在手机上,通常情况下当屏幕为纵向时Smart Banner广告高度为50dp;当屏幕为横向时,广告高度为32dp。在平板电脑上,不论屏幕是纵向还是横向,广告高度通常均为90dp。当广告图片素材不足以占据所分配的整个空间时,系统会居中放置图片,然后填充两侧剩余的空间。
-
广告效果
-
优劣
- 集成简单。普通Banner需要集成Banner轮播图框架,图片加载框架,h5加载框架(若需要跳转h5)。
- 无需自定义点击事件。华为Banner广告无需添加点击事件,加载成功后无需开发者控制,而普通Banner需要开发者定义跳转路径。
- 数量有限。华为Banner广告数量一般都是一张或者有限的几张,而普通Banner数量理论上不受限制。
- 尺寸受限。华为Banner广告尺寸支持的尺寸有限,无法满足复杂需求,而普通Banner尺寸理论上不受限制。
- 效果单一。华为Banner广告动画效果单一,而普通Banner开发者可自定义。
- 体验比较好。华为Banner广告不管是加载图片,还是其他广告形式的视频都比较快,不仅提供了丰富的用户操作按钮和相关提示,而且适配做的相当好。普通Banner中每一项都需要开发者进行控制和适配,耗时耗力,无法达到非常满意的效果。
- 错误说明清晰。华为Banner广告对错误进行了准确的说明,并提供解决方法,开发者可以很快找到问题所在,从而进行相关修复。普通Banner由于需要多个框架进行配合,错误类型较多,定位比较慢,修复耗时。
说明
- HUAWEI Ads SDK依赖HMS Core(APK)4.0.0及以上版本。华为终端设备自带HMS Core,非华为终端设备需要安装HMS Core(APK)4.0.0及以上版本,否则无法使用HUAWEI Ads SDK的相关接口。
- 以上广告效果测试手机:HONOR 9X 。
- 相关素材来自于华为Banner广告。
- 若有侵权或错误,请发送邮件至alphabetadata@163.com