uniapp APP端 唤醒APP、分享朋友圈、检查版本更新安装最新版

623 阅读2分钟

唤醒APP 云办公登录示例

1、唤醒APP

ios唤醒示例代码:

// ybg是云办公APP自定义设置的urlSchemes协议 可被第三方应用调用
// ?后面的参数则是云办公APP接收的,这个传你对接的APP所需要的参数
let url = 'ybg://?action=login&params=' + encodeURIComponent(JSON.stringify(params))
plus.runtime.launchApplication({
    action: url
}, function(e){
    // 未安装云办公,则打开appstore下载地址安装云办公
    let url = 'https://appstore.***.cn/market/appDetails.html?appName=***'
    plus.runtime.openURL(url);
});

android唤醒示例代码:

// 根据包名判断应用是否安装 
if (plus.runtime.isApplicationExist({
    pname: 'com.istone.***',  
})) {
    let Intent = plus.android.importClass('android.content.Intent')
    // 这里传给Intent的参数是 action
    let intent = new Intent('com.istone.***.THIRD_PARTY_AUTH')
    // 通信 云办公接收的参数
    intent.putExtra('x**id', '***')
    let mContext = plus.android.runtimeMainActivity();
    let CODE_REQUEST = 1000;
    mContext.startActivityForResult(intent,CODE_REQUEST);
    // 当前APP被唤醒时,接收回调参数
    mContext.onActivityResult = (requestCode, resultCode, data) => {
        console.log(requestCode, resultCode, data)
        if(requestCode == CODE_REQUEST){
            let xxxInfo = data.getStringExtra('xxxInfo');
            // 做你相应的操作
        }
    }
}else{
    let url = 'https://appstore.***.cn/market/appDetails.html?appName=***'
    plus.runtime.openURL(url)
}

2、被唤醒:

  • ios端需要设置在manifest.json里面设置ios UrlSchemes协议,供其它APP打开当前APP;
  • 安卓则不需要,安卓是根据包名来找到当前APP并打开。
  • 对应的参数都要在唤醒云办公时传过去,云办公才知道要返回到哪个APP。

3、回调接收参数:

  • ios: 在APP.vue的onShow()方法内做全局被唤醒监听 示例代码:
// 全局处理唤醒
APP.vue
onShow() {
    // 正常情况都不需要延迟函数,这里是因为后端注入cookie存在漏洞,有需要再加。
    setTimeout(()=> {
        // 获取被唤醒的回调参数
        let res = plus.runtime.arguments
        if(res){
            let result = JSON.parse(decodeURIComponent(res.split('result=')[1]));
            // 解析返回结果参数
            let dataDic = this.getX3InfoDic(result.data);
            // 做你的云办公登录 请求接口等操作
            this.loginYbg('***', dataDic.***, dataDic.***);
        }
    }, 1000)
}
  • android: 在唤醒云办公APP时注册的mContext实例,有个onActivityResult回调方法接收,代码示例在上方。

分享朋友圈 canvas生成图片

1、分享代码 具体参考官网api

uni.share({
    provider: "weixin",
    scene: "WXSenceTimeline",
    type: 2,
    // 图片url通过canvas生成
    imageUrl: this.canvasUrl,
    success: function (res) { 
        wx.showToast({
            title: '分享成功'
        })
    }
})

2、canvas生成图片

  • 场景:分享到朋友圈的图片是需要将背景图和文字等信息 合成一张图 分享。
  • APP端不能直接使用html2canvas插件,于是只能用canvas生成图片,用原生canvas画也行,这边采用的是插件市场的mosowe-canvas-image

3、踩过的坑

  • 本地真机调试可以正常分享,ios打包发布后不行,是因为ios系统的安全性问题,必须在苹果开发者中心配置Universal Links(以前是URLScheme)来让其它APP打开当前APP,详情参考官网说明

检查版本更新安装最新版

  • 每次发布需要在后台记录当前最新的版本号,上传最新安装包(apk\ipa),然后APP启动页请求接口获取最新版本号,如果不是最新的版本,plus.runtime.openURL(url)打开后台返回的安装包的地址。