唤醒APP 云办公登录示例
1、唤醒APP
ios唤醒示例代码:
// ybg是云办公APP自定义设置的urlSchemes协议 可被第三方应用调用
// ?后面的参数则是云办公APP接收的,这个传你对接的APP所需要的参数
let url = 'ybg://?action=login¶ms=' + 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)打开后台返回的安装包的地址。