先来划重点:
shortcut-button 在点击加桌成功返回之后,会触发当前页面的onHide和onShow,造成在onShow中检测是否加桌成功,来控制是否显示加桌控件仍然展示。
概述
添加按钮组件。原来加桌需要通过shortcut.install方式拉起加桌确认弹窗,用户二次确认之后,才可完成加桌。 在1100+之后,新引入shortcut-button,用户点击之后,即可完成加桌,极大的提高了快应用的加桌率。
加桌回调
| 名称 | 参数 | 描述 |
|---|---|---|
| click | MouseEvent 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);
});
}
后话
业务场景不一样,处理也就不一样,一千万个人心中有一千万个哈姆雷特。我只是在总结自己在当前业务中处理碰到的问题,也有人说可以用通知,广播等等,我的方案不一定是最优解,但是是最符合我当前业务场景的。欢迎大家讨论。