随大流吧。微信小程序出了这么久,现在才学习下。
app和小程序互相跳转:
1、App主动发起小程序卡片分享到微信,微信点击打开小程序,这时的小程序可以打开App
2、App主动发起打开小程序,这时的小程序可以打开App
目前主要就这两种方式吧,说是互相跳转好像不太妥当,毕竟App才是主动一方,小程序只能被动返回,类似于分享,App如果不发起分享到微信,微信是不能返回你的App的。说到这里大家应该都有一个印象了吧。
至于上面两种方式的实现方法也简单,只要把微信官网的代码复制过来就能用了。
App主动分享小程序卡片(微信官网):小程序测试版不能分享
WXMiniProgramObject miniProgramObj = new WXMiniProgramObject(); miniProgramObj.webpageUrl = "http://www.qq.com"; // 兼容低版本的网页链接 miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,测试版:1,体验版:2 miniProgramObj.userName = "gh_d43f693ca31f"; // 小程序原始id miniProgramObj.path = "/pages/media"; //小程序页面路径 WXMediaMessage msg = new WXMediaMessage(miniProgramObj); msg.title = "小程序消息Title"; // 小程序消息title msg.description = "小程序消息Desc"; // 小程序消息desc msg.thumbData = getThumb(); // 小程序消息封面图片,小于128k SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; req.scene = SendMessageToWX.Req.WXSceneSession; // 目前支持会话 api.sendReq(req);
App主动打开小程序(微信官网):
String appId = "wxd930ea5d5a258f4f"; // 填应用AppId IWXAPI api = WXAPIFactory.createWXAPI(context, appId); WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req(); req.userName = "gh_d43f693ca31f"; // 填小程序原始id req.path = path; //拉起小程序页面的可带参路径,不填默认拉起小程序首页 req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版 api.sendReq(req);
WXEntryActivity中 public void onResp(BaseResp resp) { if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) { WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp; String extraData =launchMiniProResp.extMsg; // 对应JsApi navigateBackApplication中的extraData字段数据 } }
小程序返回App就更简单了(微信官网):
<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打开APP</button>
另附:微信分享打开App:使用魔窗SDK实现,实际是网页打开App,苹果倒是可以直接打开App,安卓只能用网页打开分享再打开App。具体实现可以查看官网文档。我是在unity游戏项目上实现的,安卓需要添加一个透明Activity作为初始界面,不然没有分配link的界面会实现不了吧,IOS是同事配置的。