插件页的路径为 plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx,该路径可以当成普通页面路径进行使用,通过 navigateTo 或 redirectTo 等方法进行跳转。
wx.redirectTo({
url: 'plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx'
})
bookId 是 书籍 id
customServerParams 否 透传到服务器的参数,因为是在 path 上,所以如果含有特殊字符,需自行 encode,防止解析出错
chapterIndex 否 跳转章节下标(从 0 开始)
paragraphIndex 否 跳转段落下标,默认 0(从 0 开始)
fontSize 否 指定默认字体大小(0 - 9 从小到大)
turnPageWay 否 指定默认翻页方式:TURN_PAGE_WAY_SWIPE - 覆盖翻页;TURN_PAGE_WAY_MOVE - 平移翻页;TURN_PAGE_WAY_SCROLL - 上下翻页
backgroundConfigIndex 否 指定默认背景色序号,默认为 1(可传入值 1 - 5)
isNightMode 否 指定默认是否夜间模式,传入 1 则表示默认为夜间模式
blockUnpaidScroll 否 传入值为 1 时,滑动到未解锁章节会阻塞住,用户无法往下滑动;传入值为 0 时则不做阻塞;默认值为 1
disableAutoShowChargeDialog 否 传入值为 0 时,进入未解锁章节时会自动拉起付费弹窗;传入值为 1 时则关闭此特性;默认值为 0
showListenButton 否 是否显示听书按钮,传入值为 1 时则显示听书按钮;默认为 0,即不显示
listenForFree 否 传入值为 1 时表示全书可免费听;传入值为 0 时表示在听书时遇到未解锁内容时会自动停止;默认值为 0
recommendMode 否 传入值为 1 时显示读后推荐列表;传入值为 2 时显示读后推荐沉浸模式;默认值为 1
注意:
bookId 是书籍 id,创建作品后会返回,详情可参考小说作品管理接口文档[https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/novel-api.html]
chapterIndex 和 paragraphIndex 用于强制跳转到指定章节和段落;用户的阅读进度由阅读器自行保存,无需接入方维护。(跳过封面页面直接进入小说)
fontSize 参数用于修改默认字体大小,若用户已经设置过字体大小,则该参数无效。turnPageWay 参数同理。
如果当前书籍的音频未生成,就算传入 showListenButton 也不会显示听书按钮。
1.需要chapterIndex章节下标,默认用户未读是为0第一章,需要按用户阅读记录从后端获取
2.用户点击书籍想跳过封面需要传入chapterIndex参数直接跳转到指定章节阅读
3.不传入chapterIndex,默认进入小说封面页面,但是官方阅读器会记录用户上次阅读到的章节和段落。
4.想跳过封面页面,需每次记录用户阅读到第几章保存到后端服务,用户点击跳转书籍时需要拼入章节下标参数
wx.redirectTo({
url: 'plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx&chapterIndex=xxx'
})
1.就是段落组件只能引用固定的段落组件,无法定义多个段落组件插入到不同位置,但是可以用插件监听回调去改变一个组件的展示位置,再在组件内部去判断展示不同的内容。缺点,相同组件不同出现在同屏,否则被覆盖,所以相同组件出现在章节底部和章节头部时,会出现问题。(每章最多插入10个段落组件,测试好像是同时调用 novelManager.setParagraphBlock时会出现覆盖的情况,需分开监听事件调用,比如获取章节时调用一次,翻页时调用一次,)
case "get_chapter":
// 此处做用户阅读记录
console.log("拉取章节数据结束", res)
setParagraphBlockShow({ position: 1, url: "https://corp-msg.oss-cn-hangzhou.aliyuncs.com/17690515679881A59E8C30C7B4FA492E1DE7E0491D389.jpg" })
break;
case "change_chapter":
console.log("切换章节")
Taro.getApp().$app.globalData.page = 0
break;
case "change_page":
console.log("翻页", res)
let old_chapter_id = Taro.getApp().$app.globalData.chapter_id
let page = Taro.getApp().$app.globalData.page
console.log("old_chapter_id", old_chapter_id == res.chapter_id, page)
if (page == 1 && old_chapter_id == res.chapter_id) {
console.log("翻页设置二维码")
setParagraphBlockShow({ position: 9999, url: "https://corp-msg.oss-cn-hangzhou.aliyuncs.com/17691320273453CC69B74C948475A83C3EB9B88D4E666.png" })
}
if (old_chapter_id != res.chapter_id) {
Taro.getApp().$app.globalData.chapter_id = res.chapter_id
}
Taro.getApp().$app.globalData.page += 1
break;