新闻资讯
新闻资讯
此章节将演示如何请求在原生
环境下请求与展示新闻资讯
请求新闻资讯
调用ZJNewsAd#loadAd
方法请求广告,并在ZJNewsAdLoadListener
中获取广告对象与处理错误信息
public class ZJNewsAd {
/**
* 加载广告
*
* @param posId 广告位ID
* @param userId 传入当前用户的唯一ID
* @param loadListener 加载回调
*/
public static void loadAd(String posId, String userId, ZJNewsAdLoadListener loadListener);
}
加载回调说明
方法 | 说明 |
---|---|
onError(int code, String msg) | 广告加载出错 code: 错误码 msg: 错误信息 |
onAdLoaded(ZJNewsAd newsAd) | 广告加载成功 newsAd:广告对象 |
展示新闻资讯
在加载成功回调中获取到ZJNewsAd
对象后,可以配置交互回调、展示广告
ZJNewsAd 说明
方法 | 说明 |
---|---|
setRewardListener(ZJRewardListener rewardListener) | 配置奖励回调 |
setInteractionListener(ZJNewsAdInteractionListener interactionListener) | 配置交互回调 |
getFragment(Activity activity) | 获取Fragment对象,自行展示,无需配置交互回调(需要与show方法二选一,同时调用会冲突) |
showAsActivity(Activity activity) | 在新的 Activity 中展示 activity: 需要传入当前前台activity |
showAsFragment(FragmentActivity activity, int layoutRes) | 以Fragment展示 activity: 需要传入当前前台activity layoutRes: 展示容器的ID |
showAsFragment(FragmentActivity activity, int layoutRes, FragmentManager fm) | 以Fragment展示 activity: 需要传入当前前台activity layoutRes: 展示容器的ID fm:指定的 FragmentManager 对象 |
hideFragment() | 隐藏Fragment |
onPause() | 需要在 activity#onPause 时调用 |
onResume() | 展示后,需要在 activity#onResume 时调用 |
onBackPressed() | 以 Fragment 形式展示时,需要判断返回 |
onDestroy() | 需要在 activity#onDestroy 时调用,防止内存泄漏 |
提示
以新 Activity 方式展示新闻需要调用showAsActivity()
方法
以Fragment形式展示时,务必拦截与转发 Activity 的onBackPressed()
方法
展示广告的showAsActivity()
、showAsFragment(FragmentActivity activity, int layoutRes)
和showAsFragment(FragmentActivity activity, int layoutRes, FragmentManager)
三种方法,需要根据场景选择调用,不能同时调用
奖励回调说明
新闻资讯在配置了浏览任务后,需要通过setRewardListener(ZJRewardListener rewardListener)
方法配置奖励回调,并在奖励回调中为用户发奖
ZJRewardListener.class
方法 | 说明 |
---|---|
void onRewardVerify(@Nullable Map<String, Object> extra) | 获得奖励 extra: 额外参数,可能为空 |
提示
SDK 的奖励回调会在每次完成任务时触发,需要开发者自行处理重复发奖的逻辑
交互回调说明
方法 | 说明 |
---|---|
onNewsAdShowError(int code, String msg) | 广告加载出错 code: 错误码 msg: 错误信息 |
onNewsAdShow() | 广告展示成功 |
新闻资讯接入示例
// 加载广告
ZJNewsAd.loadAd(posId, userId, new ZJNewsAdLoadListener() {
@Override
public void onError(int code, @NonNull String msg) {
Log.e("ZJNewsAd", "激励广告加载出错" + code + "-" + msg);
}
@Override
public void onAdLoaded(@NonNull ZJNewsAd newsAd) {
newsAd.setInteractionListener(MainActivity.this);
// 以 Activity 方式展示新闻资讯
newsAd.showAsActivity(NewsAdActivity.this);
// 传入 container 嵌入调用
newsAd.showAsFragment(R.id.news_container);
// 传入 contianer 和 childFragmentManager 嵌入调用
newsAd.showAsFragment(R.id.news_container, getChildFragmentManager());
}
});
// 需要在 activity#onPause 时调用,防止内存泄漏
@Override
public void onPause() {
super.onPause();
newsAd.onPause();
}
// 展示时,需要在 activity#onResume 时调用
@Override
protected void onResume() {
super.onResume();
newsAd.onResume();
}
// 以Fragment 形式展示时,需要判断返回
@Override
public void onBackPressed() {
if (newsAd != null && !newsAd.onBackPressed()) {
super.onBackPressed();
}
}
// 需要在 activity#onDestroy 时调用
@Override
protected void onDestroy() {
zjNewsAd.onDestroy();
}
ZJNewsAd.loadAd(posId, userId, object : ZJNewsAdLoadListener {
override fun onError(code: Int, msg: String) {
Log.e("ZJNewsAd", "激励广告加载出错$code-$msg")
}
override fun onAdLoaded(newsAd: ZJNewsAd) {
newsAd.setInteractionListener(this@MainActivity)
// 以 Activity 方式展示新闻资讯
newsAd.showAsActivity(this@NewsAdActivity)
// 传入 container 嵌入调用
newsAd.showAsFragment(R.id.news_container)
// 传入 contianer 和 childFragmentManager 嵌入调用
newsAd.showAsFragment(R.id.news_container, getChildFragmentManager())
}
})
// 需要在 activity#onPause 时调用,防止内存泄漏
public override fun onPause() {
super.onPause()
newsAd.onPause()
}
// 展示时,需要在 activity#onResume 时调用
override fun onResume() {
super.onResume()
newsAd.onResume()
}
// 以Fragment 形式展示时,需要判断返回
override fun onBackPressed() {
if (newsAd != null && !newsAd.onBackPressed()) {
super.onBackPressed()
}
}
// 需要在 activity#onDestroy 时调用
override fun onDestroy() {
zjNewsAd.onDestroy()
}