shortcut-button避坑指南(二)

141 阅读2分钟

先来划重点:

shortcut-button 在点击加桌成功返回之后,会触发当前页面的onHide和onShow,造成在onShow中检测是否加桌成功,来控制是否显示加桌控件仍然展示。

概述

添加按钮组件。原来加桌需要通过shortcut.install方式拉起加桌确认弹窗,用户二次确认之后,才可完成加桌。 在1100+之后,新引入shortcut-button,用户点击之后,即可完成加桌,极大的提高了快应用的加桌率。

加桌回调

名称参数描述
clickMouseEvent 1050+,{eventStatusCode: eventStatusCodeValue, eventMessage: eventMessageValue} 1100+组件被点击时触发 eventStatusCode: 添桌操作返回码,0 成功,200 失败 eventMessage: 详细信息

实现

检测代码:

      <shortcut-button onclick="createShortcutClick" class="shotcut-btn" value="添加到桌面,海量小说免费看"></shortcut-button>
    </div>

检测代码:

onShow(){
 shortcut.hasInstalled({
          success: function (ret) {
            that.isShowShortcut = !ret;
          }
   });
}

shortcut-button 加桌回调:

 createShortcutClick(evt) {
      var that = this;
      let statusCode = evt.eventStatusCode;
      let msg = evt.eventMessage;
      if (statusCode == 0) {
        that.isShowShortcut = false;
          prompt.showToast({ message: "加桌成功"});
      } else {
        that.isShowShortcut = true;
        prompt.showToast({ message: "创建桌面图标失败: msg:" + msg + ",code:" + statusCode });
      }
    },

shortcut-button 现象:

shortcut-button在点击加桌之后,立即触发页面的onHide->onShow 由于shortcut-button创建桌面快捷方式时存在延迟,导致在onShow中的检查处理会重新触发未创建的状态,进而覆盖shortcut-button的click回调中已经创建的状态,导致业务处理与实际表现不符。

shortcut-button 处理方案:

在onShow处理中增加延时处理,来规避检查异步与创建异步造成的状态不同步,而出现的业务问题。

onShow(){
 let that = this;
 setTimeout(function () {
      shortcut.hasInstalled({
          success: function (ret) {
            that.isShowShortcut = !ret;
          }
         });
      }, 1000 * 10);
   });
}

后话

业务场景不一样,处理也就不一样,一千万个人心中有一千万个哈姆雷特。我只是在总结自己在当前业务中处理碰到的问题,也有人说可以用通知,广播等等,我的方案不一定是最优解,但是是最符合我当前业务场景的。欢迎大家讨论。