新闻资讯

新闻资讯

此章节将演示如何请求在原生环境下请求与展示新闻资讯

请求新闻资讯

调用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()
}