通过
AMPSRequestParameters.Builder构建AMPSRequestParameters实例.
| 方法名称 | 参数 | 描述 |
|---|---|---|
| setTimeOut | long | 设置请求超时时间. 毫秒 |
| setSpaceId | String | 设置广告位ID |
| setWidth | int | 设置原生显示宽, 单位:px |
| setHeight | int | 设置原生显示高, 单位:px |
| setAdCount | int | 设置单次请求原生数量 |
| build | - | 构建实例 |
AMPSRequestParameters parameters = new AMPSRequestParameters.Builder()
.setSpaceId("原生广告位ID")
.setTimeOut(5000)
.setWidth(width)
.setHeight(height)
.setAdCount(1)
.build();
通过传入
AMPSRequestParameters实例, 创建AMPSUnifiedNativeAd实例, 并通过传入AMPSUnifiedNativeLoadEventListener实例, 监听广告状态
AMPSUnifiedNativeLoadEventListener listener = new AMPSUnifiedNativeLoadEventListener() {
@Override
public void onAmpsAdLoad(List<AMPSUnifiedNativeItem> ampsNativeAdExpressInfo) {
}
@Override
public void onAmpsAdFailed(AMPSError error) {
}
}
AMPSUnifiedNativeAd nativeAd = new AMPSUnifiedNativeAd(this, parameters, listener);
| 方法名称 | 参数 | 描述 |
|---|---|---|
| onAmpsAdLoad | List<AMPSUnifiedNativeItem> | 广告加载成功, 返回原生广告列表 |
| onAmpsAdFailed | AMPSError | 广告加载失败, 通过AMPSError获取错误码及错误信息 |
调用
loadAd方法,加载广告.
nativeAd.loadAd();
在接收到广告监听
onAmpsAdLoad后,获取AMPSUnifiedNativeItem实例.
AMPSUnifiedNativeItem nativeAdItem;
@Override
public void onAmpsAdLoad(List<AMPSUnifiedNativeItem> ampsNativeAdExpressInfo) {
Log.e(TAG, "onAdLoaded...");
if (ampsNativeAdExpressInfo != null){
nativeAdItem = ampsNativeAdExpressInfo.get(0);
}
}
调用
setNativeAdEventListener()方法设置广告事件监听. 初始化useMediation传入false时, 使用此接口注意: 此接口不同于
setNativeAdExpressListener接口.
| 方法名称 | 描述 |
|---|---|
| onADExposed | 广告展示 |
| onADClicked | 广告点击 |
| onADExposeError | 广告展示错误 |
nativeAdItem.setNativeAdEventListener(new AMPSUnifiedAdEventListener() {
@Override
public void onADExposed() {
Log.d(DemoParams.TAG, "onAdShow...");
}
@Override
public void onADClicked() {
Log.d(DemoParams.TAG, "onAdClick...");
}
@Override
public void onADExposeError(int i, String s) {
String error = "原生自渲染展示失败... 错误码:" + i + " 原因:" + s;
Log.e(DemoParams.TAG, error);
}
});
当广告类型为视频时, 通过绑定视频view接口
bindAdToMediaView(Activity activity, AMPSUnifiedMediaViewStub mediaStub, AMPSUnifiedVideoListener listener), 设置视频监听.
视频监听接口, 并不是每个接口都会回调. 实际回调接口, 会受到广告源影响
| 方法名称 | 描述 |
|---|---|
| onVideoInit | 视频组件初始化 |
| onVideoLoading | 视频加载中 |
| onVideoReady | 视频加载完成 |
| onVideoLoaded | 视频加载进度 |
| onVideoStart | 视频开始播放 |
| onVideoPause | 视频暂停 |
| onVideoResume | 视频恢复播放 |
| onVideoCompleted | 视频播放完成 |
| onVideoError | 视频播放错误 |
| onVideoStop | 视频停止 |
| onVideoClicked | 视频被点击 |
通过调用
setNegativeFeedbackListener设置广告反馈监听
| 方法名称 | 描述 |
|---|---|
| onComplainSuccess | 反馈成功 |
通过
AMPSUnifiedNativeItem的bindAdToRootContainer(Activity activity, AMPSUnifiedRootContainer container, List<View> clickList, List<View> actList)绑定自渲染view的视图.
| 参数说明 | 描述 |
|---|---|
| activity | 广告展示的Activity |
| container | 自渲染广告展示的根容器 |
| clickList | 自渲染广告内, 需要绑定点击事件的按钮列表 |
| actList | 自渲染广告内, 需要绑定Action事件的按钮列表 |
//根布局
AMPSUnifiedRootContainer root = findViewById(R.id.unified_root);
//图片view, 添加click列表
ImageView image = findViewById(R.id.unified_image);
List<View> clickView = new ArrayList<>();
clickView.add(image);
//action按钮, 添加action列表
Button button = findViewById(R.id.unified_action);
button.setText(TextUtils.isEmpty(nativeAdItem.getActionButtonText()) ? "点击查看详情": nativeAdItem.getActionButtonText());
List<View> actionView = new ArrayList<>();
actionView.add(button);
//绑定布局
nativeAdItem.bindAdToRootContainer(UnifiedNativeActivity.this, root, clickView, actionView);
根据
AMPSUnifiedNativeItem的getAdPattern()方法判断素材类型. 该类型定义在AMPSUnifiedPattern类中
| 类型 | 描述 |
|---|---|
| AD_PATTERN_TEXT_IMAGE | 基本图文类型, 包括单图, 一图一文, 一图两文 |
| AD_PATTERN_3_IMAGES | 多图类型 |
| AD_PATTERN_VIDEO | 视频 |
| AD_PATTERN_UNKNOWN | 类型不确定 |
图片素材, 通过调用
AMPSUnifiedNativeItem的getMainImageUrl()huogetImagesUrl()方法获取图片地址.
| 方法名称 | 描述 |
|---|---|
| getMainImageUrl | 获取主图的图片地址. |
| getImagesUrl | 获取多图的图片地址. 只有在AD_PATTERN_3_IMAGES时返回图片列表 |
当广告素材类型是视频时, 除了需要调用
bindAdToRootContainer()方法绑定视图view外, 还需要额外调用bindAdToMediaView(Activity activity, AMPSUnifiedMediaViewStub mediaStub, AMPSUnifiedVideoListener listener)方法, 绑定视频view
| 参数说明 | 描述 |
|---|---|
| activity | 广告展示的Activity |
| mediaStub | 自渲染创建的用于展示视频广告的容器. 此容器必须为bindAdToRootContainer()方法传入的container的子view |
| listener | 视频状态相关监听 |
if (nativeAdItem.getAdPattern().equals(AMPSUnifiedPattern.AD_PATTERN_VIDEO)){
//创建容器
AMPSUnifiedMediaViewStub mediaView = findViewById(R.id.unified_media);
//绑定到广告
nativeAdItem.bindAdToMediaView(UnifiedNativeActivity.this, mediaView, new AMPSUnifiedVideoListener() {
@Override
public void onVideoInit() {
}
@Override
public void onVideoLoading() {
}
@Override
public void onVideoReady() {
}
@Override
public void onVideoLoaded(int i) {
}
@Override
public void onVideoStart() {
}
@Override
public void onVideoPause() {
}
@Override
public void onVideoResume() {
}
@Override
public void onVideoCompleted() {
}
@Override
public void onVideoError(AMPSUnifiedNativeAdError ampsUnifiedNativeAdError) {
}
@Override
public void onVideoStop() {
}
@Override
public void onVideoClicked() {
}
});
}
自渲染广告加载成功后, 素材会包装成
AMPSUnifiedNativeItem对象, 并通过对象方法获取相关的素材内容.
| 方法名称 | 返回值 | 描述 | 备注 |
|---|---|---|---|
| isValid | boolean | 广告是否有效. | - |
| isExpressAd | boolean | 广告是否为模板广告.不需要手动绑定渲染view | 此接口用于扩展, 只返回false |
| getNativeExpressAdView | View | 为模板广告时, 获取渲染好的广告view | 此接口用于扩展, 只返回null |
| setNativeAdExpressListener | - | 为模板广告时, 监听广告状态. | 此接口用于扩展, 设置无效. 注意不要和setNativeAdEventListener混淆 |
| getTitle | String | 获取广告标题 | 有标题素材则返回, 没有返回空 |
| getDesc | String | 获取广告描述(副标题) | 有则返回, 没有返回空 |
| getActionButtonText | String | 获取广告Action按钮文案 | 有则返回, 没有返回空 |
| getExtras | Map<String, Object> | 获取扩展内容 | 此接口用于扩展, 只返回null |
| getAdSource | String | 返回广告来源 | 此处固定返回8888代表beiziAdn广告 |
| getAdSourceLogoUrl | String | 返回广告来源的logo地址 | |
| getAdSourceLogo | View | 返回广告来源logo的view | 此接口用于扩展, 只返回null |
| getIconUrl | String | 获取图标地址 | |
| isViewObject | boolean | 是否以View形式返回广告 | 此接口用于扩展, 只返回false |
| getMainImageUrl | String | 当广告类型为图文类时, 返回图片素材地址 | |
| getMainImageView | AMPSUnifiedView | 返回主图渲染完成View | 此接口用于扩展, 只返回null |
| getAdPattern | AMPSUnifiedPattern | 用于判断广告素材类型 | |
| getMainImageViews | List<String> | 当素材类型为多图时, 返回多图片地址 | |
| getMainImageViews | List<AMPSUnifiedView> | 当素材类型为多图时, 返回多图渲染完成view | 此接口用于扩展, 只返回null |
| getImageWidth | int | 获取图片宽 | 无法准确获取时返回0 |
| getImageHeight | int | 获取图片高 | 无法准确获取时返回0 |
| getAppDetail | AMPSAppDetail | 下载类广告时,返回下载应用相关信息 | 无相关信息时,返回null |
| getOptimizeController | AMPSUnifiedOptimizeController | 获取优化功能控制器 | 此接口用于扩展, 只返回null |
| setNativeAdEventListener | - | 设置广告事件监听 | 区别于setNativeAdExpressListener, 用于监听广告事件 |
| setDownloadListener | - | 设置下载类广告,下载状态监听 | 此接口用于扩展, 设置无效 |
| setNegativeFeedbackListener | - | 设置反馈监听 | |
| bindAdToRootContainer | - | 用于绑定自渲染布局 | 重要接口, 必须调用 |
| bindAdToMediaView | - | 当广告类型为视频时, 用于绑定视频自渲染布局 | 广告类型为视频时, 重要接口, 必须调用, 切必须在bindAdToRootContainer后才能调用 |
| resume | - | 生命周期接口 | 此接口为扩展接口, 非必须 |
| pause | - | 生命周期接口 | 此接口为扩展接口, 非必须 |
| destroy | - | 销毁广告 | 当广告不再使用时,需要调用销毁 |
通过调用
getAppDetail()接口获取AMPSAppDetail实例. 并通过对应方法获取信息, 获取的信息可能为空
| 方法名称 | 描述 |
|---|---|
| getDownloadCountDesc | 获取应用下载量信息. |
| getAppScore | 获取应用评分. |
| getAppPrice | 获取应用价格. |
| getAppName | 获取应用名称. |
| getAppSize | 获取应用大小. |
| getAppPackageName | 获取应用包名. |
| getAppIconUrl | 获取应用图标. |
| getAppVersion | 获取应用版本. |
| getAppPermissionInfo | 获取应用权限信息. 信息可能为链接地址或文字描述 |
| getAppPrivacyPolicy | 获取应用协议信息. 信息可能为链接地址或文字描述 |
| getAppDescription | 获取应用描述. |
| getAppDeveloper | 获取应用开发者信息. |
自渲染广告, 根据应用逻辑需求, 在不再使用时, 调用销毁方法.
//于生命周期内调用
@Override
protected void onDestroy() {
super.onDestroy();
if (nativeAdItem != null) {
nativeAdItem.destroy();
}
}