shenwu 21 stundas atpakaļ
vecāks
revīzija
1f0cec0fbf
2 mainītis faili ar 82 papildinājumiem un 18 dzēšanām
  1. 47 18
      src/app.tsx
  2. 35 0
      小说插件使用手册.md

+ 47 - 18
src/app.tsx

@@ -42,7 +42,7 @@ const store: Store = {
 }
 }
 class App extends Component {
 class App extends Component {
   // 定义全局数据
   // 定义全局数据
-  globalData:any = {
+  globalData: any = {
     isShow: true,           // 控制是否显示全屏组件
     isShow: true,           // 控制是否显示全屏组件
     customParams: null,     // 自定义参数
     customParams: null,     // 自定义参数
     userInfo: null,         // 用户信息
     userInfo: null,         // 用户信息
@@ -52,17 +52,18 @@ class App extends Component {
       enabled: true,        // 是否启用广告
       enabled: true,        // 是否启用广告
       frequency: 5,         // 广告频率(每几章显示一次)
       frequency: 5,         // 广告频率(每几章显示一次)
       type: 'fullscreen'    // 广告类型:fullscreen/banner
       type: 'fullscreen'    // 广告类型:fullscreen/banner
-    }
+    },
+    chapter_id: null,
+    page: 0
   }
   }
-
   //每次打开小程序触发,后台切入不算
   //每次打开小程序触发,后台切入不算
   onLaunch(options) {
   onLaunch(options) {
     console.log("apponLaunch", options)
     console.log("apponLaunch", options)
-    
+
     // 初始化全局数据
     // 初始化全局数据
     this.globalData.isShow = true
     this.globalData.isShow = true
     this.globalData.customParams = {}
     this.globalData.customParams = {}
-    
+
     // 监听进入插件页事件    
     // 监听进入插件页事件    
     novelPlugin.onPageLoad(this.onNovelPluginLoad)
     novelPlugin.onPageLoad(this.onNovelPluginLoad)
   }
   }
@@ -93,19 +94,30 @@ class App extends Component {
       ],
       ],
     })
     })
     //自定义段落
     //自定义段落
-    novelManager.setParagraphBlock({
-      globalConfigs: [ // 在这里设置的是全局设置 会在所有章节生效
-        {
-          height: 200,//自定义段落高度,单位 px
-          position: 9999,//自定义段落位置,0 表示在标题前,1 表示在第一段文字前,以此类推
-          ext: JSON.stringify({url:"https://corp-msg.oss-cn-hangzhou.aliyuncs.com/17738993366268346745849EF42B39D9459749C6B2784.jpg"}),//透传给自定义组件的参数
-        },
-      ]
-    })
+    // novelManager.setParagraphBlock({
+    //   globalConfigs: [ // 在这里设置的是全局设置 会在所有章节生效
+    //     {
+    //       height: 200,//自定义段落高度,单位 px
+    //       position: 9999,//自定义段落位置,0 表示在标题前,1 表示在第一段文字前,以此类推
+    //       ext: JSON.stringify({ url: "https://corp-msg.oss-cn-hangzhou.aliyuncs.com/17738993366268346745849EF42B39D9459749C6B2784.jpg" }),//透传给自定义组件的参数
+    //     },
+    //   ]
+    // })
+    function setParagraphBlockShow(params) {
+      novelManager.setParagraphBlock({
+        globalConfigs: [ // 在这里设置的是全局设置 会在所有章节生效
+          {
+            height: 200,//自定义段落高度,单位 px
+            position: params.position,//自定义段落位置,0 表示在标题前,1 表示在第一段文字前,以此类推
+            ext: JSON.stringify({ url: params.url }),//透传给自定义组件的参数
+          },
+        ]
+      })
+    }
     // 自义定全屏组件
     // 自义定全屏组件
-    novelManager.setFullScreenComponentStatus({
-      show: true
-    })
+    // novelManager.setFullScreenComponentStatus({
+    //   show: true
+    // })
     // 监听用户行为事件
     // 监听用户行为事件
     novelManager.onUserTriggerEvent(res => {
     novelManager.onUserTriggerEvent(res => {
       /**
       /**
@@ -149,19 +161,33 @@ class App extends Component {
         case "get_chapter":
         case "get_chapter":
           // 此处做用户阅读记录
           // 此处做用户阅读记录
           console.log("拉取章节数据结束", res)
           console.log("拉取章节数据结束", res)
+          setParagraphBlockShow({ position: 1, url: "https://corp-msg.oss-cn-hangzhou.aliyuncs.com/17690515679881A59E8C30C7B4FA492E1DE7E0491D389.jpg" })
           break;
           break;
         case "click_startread":
         case "click_startread":
           console.log("点击了开始阅读")
           console.log("点击了开始阅读")
           break;
           break;
         case "change_chapter":
         case "change_chapter":
-
           console.log("切换章节")
           console.log("切换章节")
+          Taro.getApp().$app.globalData.page = 0
           break;
           break;
         case "change_page":
         case "change_page":
           console.log("翻页", res)
           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 == 2 && 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;
           break;
         case "leave_readpage":
         case "leave_readpage":
           console.log("离开阅读页")
           console.log("离开阅读页")
+          Taro.getApp().$app.globalData.page = 0
+          Taro.getApp().$app.globalData.chapter_id = null
           break;
           break;
         case "close_ad":
         case "close_ad":
           console.log("关闭广告")
           console.log("关闭广告")
@@ -169,6 +195,9 @@ class App extends Component {
         case "ad_error":
         case "ad_error":
           console.log("广告报错")
           console.log("广告报错")
           break;
           break;
+        case "leave_chapter":
+          console.log("离开章节")
+          break;
       }
       }
     })
     })
     //点击加入书架操作
     //点击加入书架操作

+ 35 - 0
小说插件使用手册.md

@@ -1,6 +1,9 @@
 ## 官方文档地址 https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/novel.html#%E4%BB%8B%E7%BB%8D
 ## 官方文档地址 https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/novel.html#%E4%BB%8B%E7%BB%8D
+
 ## 跳转插件页
 ## 跳转插件页
+
 插件页的路径为 plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx,该路径可以当成普通页面路径进行使用,通过 navigateTo 或 redirectTo 等方法进行跳转。
 插件页的路径为 plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx,该路径可以当成普通页面路径进行使用,通过 navigateTo 或 redirectTo 等方法进行跳转。
+
 ```
 ```
 wx.redirectTo({
 wx.redirectTo({
   url: 'plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx'
   url: 'plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx'
@@ -27,13 +30,45 @@ fontSize 参数用于修改默认字体大小,若用户已经设置过字体
 ```
 ```
 
 
 ## 点击小说直接进入阅读跳过封面
 ## 点击小说直接进入阅读跳过封面
+
 ### 要点
 ### 要点
+
     1.需要chapterIndex章节下标,默认用户未读是为0第一章,需要按用户阅读记录从后端获取
     1.需要chapterIndex章节下标,默认用户未读是为0第一章,需要按用户阅读记录从后端获取
     2.用户点击书籍想跳过封面需要传入chapterIndex参数直接跳转到指定章节阅读
     2.用户点击书籍想跳过封面需要传入chapterIndex参数直接跳转到指定章节阅读
     3.不传入chapterIndex,默认进入小说封面页面,但是官方阅读器会记录用户上次阅读到的章节和段落。
     3.不传入chapterIndex,默认进入小说封面页面,但是官方阅读器会记录用户上次阅读到的章节和段落。
     4.想跳过封面页面,需每次记录用户阅读到第几章保存到后端服务,用户点击跳转书籍时需要拼入章节下标参数
     4.想跳过封面页面,需每次记录用户阅读到第几章保存到后端服务,用户点击跳转书籍时需要拼入章节下标参数
+
 ```
 ```
 wx.redirectTo({
 wx.redirectTo({
   url: 'plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx&chapterIndex=xxx'
   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;
 ```
 ```