资讯 News DCloud 5+原生插件接入文档

概述

本文档描述了 DCloud 5+app 和 wap2app 开发者如何集成 News 原生插件(后面简称为插件),通过集成插件引入完备的信息流服务。

如果需要在信息流和资讯正文中展示广告,则需集成 AD 插件。本文档默认需要展示广告,展示广告可以创造收益。

术语介绍

AppId:应用 id,18位 hex 字符串。【注意】调试时请使用测试 appId:ba0063bfbc1a5ad878;外发版本请替换成正式 appId,否则不会产生收益。

UserId:用户 id,接入方定义的用户唯一标识,传入时可以哈希脱敏,主要用于排查问题。

插件集成

DCloud 5+app 和 wap2app 接入5+原生插件扩展原生能力,不支持云端打包,仅支持本地离线打包。(请参考 DCloud 官方文档 https://nativesupport.dcloud.net.cn/AppDocs/README

插件集成步骤如下:

  1. 将 newsSdk.js 拷贝到项目中,并在需要调用广告的文件中引入此文件;

newsSdk.js:

document.addEventListener("plusready", function () {
    plus.newsSdk = {
        setUserId: function (userId) {
            return plus.bridge.execSync("NewsSdk", "setUserId", [userId])
        },
        showNews: function (params) {
            return plus.bridge.execSync("NewsSdk", "showNews", [params.margins, params.channel])
        },
        hideNews: function () {
            return plus.bridge.execSync("NewsSdk", "hideNews", [])
        },
        startNews: function (params) {
            return plus.bridge.execSync("NewsSdk", "startNews", [params.title, params.channel])
        },
        configReadingCountdown: function (params, callback) {
            callbackId = plus.bridge.callbackId(callback, null)
            return plus.bridge.execSync("NewsSdk", "configReadingCountdown", [callbackId, params.color, params.bgColor, params.imageUrl, params.layout, params.margins])
        },
        startCountdown: function (params) {
            return plus.bridge.execSync("NewsSdk", "startCountdown", [params.newsUrl, params.countdownSeconds, params.scrollEffectSeconds, params.rewardData])
        },
        setRewardResult: function (params) {
            return plus.bridge.execSync("NewsSdk", "setRewardResult", [params.newsUrl, params.success, params.rewardData])
        },
    }
}, true)
  1. 前端页面接入资讯;
  2. 打开 demo 提供的原生代码框架,拷贝 HBuilderX 生成的本地打包 App 资源,进行本地离线打包。

插件初始化

初始化已在原生代码中完成,请参考插件集成

登录时请设置 userId:

plus.newsSdk.setUserId("uid")

退出登录请重置 userId:

plus.newsSdk.setUserId(null)

信息流接入

方式一

显示资讯信息流代码如下:

plus.newsSdk.showNews({
    // channel: "科技", // 单频道
    margins: [0, 200, 0, 0] // [left, top, right, bottom]
})

隐藏资讯信息流代码如下:

plus.newsSdk.hideNews()

方式二

跳转新打开的资讯信息流页面代码如下:

plus.newsSdk.startNews({
    // channel: "科技", // 单频道
    title: "资讯"
})

阅读倒计时(可选)

阅读资讯时可以显示倒计时,倒计时结束后给用户发放奖励。

配置倒计时示例代码如下:

document.addEventListener("plusready", function() {
    plus.newsSdk.configReadingCountdown({
        color: "#FF0000",
        bgColor: "#00FF00",
        imageUrl: "https://mobi.oss-cn-shanghai.aliyuncs.com/images/redpack.png",
        layout: "bottom",
        margins: [0, 0, 50, 50] // [left, top, right, bottom]
    }, function(result) {
        console.log(JSON.stringify(result))

        if (result.event == "onReadingStart") {
            // 请按照产品需求,根据 newsUrl、newsType 判断是否启动倒计时,不给奖励可以不调用
            if (1 /* ARTICLE */ == result.newsType || 2 /* VIDEO */ == result.newsType) {
                plus.newsSdk.startCountdown({
                    newsUrl: result.newsUrl,
                    countdownSeconds: 10,
                    scrollEffectSeconds: 3, // 滚动作用时间,到期后暂停计时,再滚动继续计时;小于等于0不滚动也不会暂停计时
                    rewardData: 5
                });
            }
        } else if (result.event == "onReward") {
            // 在此发放奖励,并设置奖励结果
            plus.newsSdk.setRewardResult({
                newsUrl: result.newsUrl,
                success: true,
                rewardData: result.rewardData
            })
        } else if (result.event == "onReadingEnd") {
        }
    })
})