问题原因:ios打开页面,整个项目的签名,只需要签名一次

所以需要判系统;

ios端只需要在项目第一次打开调用签名,所用到的JSSDK接口,都写在 jsApiList里,具体接口执行方法,放在需要执行的时候。

export function shareSignature() {
    return new Promise(resolve => {
        let params = {
            url: window.location.href,
            appId: localStorage.getItem('appId')
        };
        wxApi.shareSignature(params, res => {
            if (res.succeed) {
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: res.data.appid, // 必填,公众号的唯一标识
                    timestamp: res.data.timestamp, // 必填,生成签名的时间戳
                    nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
                    signature: res.data.signature, // 必填,签名
                    jsApiList: [
                        "chooseImage", 
                        "uploadImage", 
                        "downloadImage", 
                        "onMenuShareTimeline",
                        "onMenuShareAppMessage"
                    ] // 必填,需要使用的JS接口列表
                });
                resolve();
            }
        });
    });
}
router.beforeEach((to, from, next) => {
    if (isIOS()) {
        if (from.path === '/') {
            if(localStorage.getItem('appId')) {
                shareSignature()
            }
            next();
        } else {
            next();
        }
    } else {
        next();
    }
});

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐