App.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <script>
  2. import { config } from './config/config';
  3. import { sdkUtil } from './framework/sdkUtil';
  4. import { tools } from './framework/tools';
  5. import { UserStatus } from './stores/userStatusManager';
  6. // #ifdef MP-WEIXIN
  7. const novelPlugin = requirePlugin('novel-plugin');
  8. // #endif
  9. export default {
  10. onLaunch: function() {
  11. console.log('App Launch')
  12. switch (tools.platform){
  13. case config.Platform.WEIXIN:
  14. wx.showShareMenu({
  15. withShareTicket: true,
  16. menus: ['shareAppMessage', 'shareTimeline']
  17. });
  18. break;
  19. }
  20. tools.requestLogin(()=>{
  21. // tools.requestRechargeOrderBuy(config.pay_type.WEI_XIN,1,(order_id,data)=>{
  22. // console.log("order_id",order_id)
  23. // console.log("data",data)
  24. // sdkUtil.showPayment({
  25. // timeStamp:data.time_stamp,
  26. // nonceStr:data.nonce_str,
  27. // package:`prepay_id=${data.prepay_id}`,
  28. // paySign:data.pay_sign,
  29. // signType:data.sign_type},()=>{
  30. // })
  31. // })
  32. })
  33. // 订阅小程序初始化成功的事件
  34. if(tools.platform==config.Platform.WEIXIN) {
  35. // 订阅小程序初始化成功的事件
  36. novelPlugin.setLoggerConfig({
  37. info:false,
  38. debug: false,
  39. log:false,
  40. warn:true,
  41. error:true})
  42. novelPlugin.onPageLoad(onNovelPluginLoad);
  43. console.log("novelPlugin",novelPlugin)
  44. }
  45. },
  46. onShow: function() {
  47. console.log('App Show')
  48. },
  49. onHide: function() {
  50. console.log('App Hide')
  51. }
  52. }
  53. function onNovelPluginLoad(data) {
  54. // data.id 句柄 用来获取novelManager实例
  55. const novelManager = novelPlugin.getNovelManager(data.id);
  56. console.log(novelManager.getPluginInfo())
  57. // getId() 返回当前manager对应的Id(即句柄)
  58. console.log('id:', novelManager.getId());
  59. // getBookId() 返回当前manager对应的bookId
  60. console.log('bookId:', novelManager.getBookId());
  61. // novelManager.onUserTriggerEvent((params)=>{
  62. // console.log("params",params)
  63. // })
  64. novelManager.setClosePluginInfo({ //关闭后跳转的界面
  65. url: '/pages/bookstore/bookstore',
  66. mode: 'switchTab' // 'redirectTo'
  67. })
  68. // console.log('novelManager:', novelManager);
  69. // setBookshelfStatus(Object params)
  70. // params.bookshelfStatus number类型 0 代表用户取消添加书架 1 代表用户添加书架
  71. // 因为是否添加书架的情况阅读器并不记录 所以需要接入方在接入的时候设置书架的状态
  72. // 默认情况该值为0 即未添加
  73. // 注:此处直接设置了未添加的状态 但实际情况应是接入方去拉取存储于接入方的用户数据
  74. tools.getBookIdByWxBookId(novelManager.getBookId(),(book_id)=>{
  75. tools.checkBookOnBookshelf(book_id,(is_on)=>{
  76. novelManager.setBookshelfStatus({
  77. bookshelfStatus: is_on==true?1:0,
  78. });
  79. })
  80. })
  81. // var wx_book_id = novelManager.getBookId()
  82. // 监听用户点击书架的事件
  83. // params.bookshelfStatus number类型 0 代表用户取消添加书架 1 代表用户添加书架
  84. novelManager.onClickBookshelf((params) => {
  85. // 此处逻辑应是接入方将用户设置的数据存储下来
  86. // 之后将书架状态改变
  87. // 如果接入方不去主动设置该状态 那么用户点击加入书架后 则不会有任何响应
  88. // novelManager.setBookshelfStatus({
  89. // bookshelfStatus: params.bookshelfStatus === 0 ? 1 : 0,
  90. // });
  91. tools.getBookIdByWxBookId(novelManager.getBookId(),(book_id)=>{
  92. console.log("book_id:",book_id)
  93. if(params.bookshelfStatus === 0 ){
  94. tools.addBookshelf(UserStatus().getUserSelectBook(),(is_on)=>{
  95. novelManager.setBookshelfStatus({
  96. bookshelfStatus: 1,
  97. });
  98. })
  99. }else{
  100. tools.deleteBookshelf([book_id],()=>{
  101. novelManager.setBookshelfStatus({
  102. bookshelfStatus: 0,
  103. });
  104. })
  105. }
  106. })
  107. });
  108. // setContents 设置目录信息(Object params)
  109. // params.contents Array类型 是一个代表各个章节信息的数组
  110. // params.contents[i].index number类型 代表章节下标(章节下标从0开始)
  111. // params.contents[i].status number类型 代表章节状态(0 免费章节 1 未付费章节 2 已付费章节 其余值非法)
  112. // 下方示例代表:第一章免费,第二张已付费,第三章未付费
  113. // 注1: 该接口设置的数据仅影响插件页目录的UI表现,插件页去拉取章节数据的时候还是会依赖后台返回的状态。
  114. // 注2: 该接口可以反复调用,因为某些章节数据量过大,如需要分页拉取的时候,该特性或许有用
  115. // 注3: 实际开发中,此数据应从接入方后台拉取
  116. // 注4: 若不设置此数据,则免费章节、未付费章节与已付费章节在目录UI上无法分辨,虽不会影响实际付费的逻辑,但还是强烈建议设置此数据
  117. // novelManager.setContents({
  118. // contents: [
  119. // {
  120. // index: 0,
  121. // status: 0,
  122. // },
  123. // {
  124. // index: 1,
  125. // status: 2,
  126. // },
  127. // {
  128. // index: 2,
  129. // status: 1,
  130. // },
  131. // ],
  132. // });
  133. }
  134. </script>
  135. <style>
  136. /*每个页面公共css */
  137. </style>