App唤起微信小程序和回调

在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转。

可在“管理中心-移动应用-应用详情-关联小程序信息”,为通过审核的移动应用发起关联小程序操作。

唤起

App打开下程序他有两种方式:

1,通过App分享小程序卡片 到微信,然后在微信上点击小程序卡片打开小程序,这是小程序也可以打开App

第一步:你需要到微信开放平台 将你的app 关联上你的小程序!
第二步:你工程中需要导入有 wechatOpenSDK
第三步: 分享小程序卡片类型
官方文档: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317332&token=&lang=zh_CN

1第一种:文字类型分享示例 2SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init]; 3 req.text = @"分享内容"; 4 req.bText = YES; 5 req.scene = WXSceneSession; // 目前只支持会话形式 6 [WXApi sendReq:req]; 7 8第二种:App 主动分享小程序卡片:⚠️ 小程序测试版不能分享 9WXMiniProgramObject *wxminiObiect = [WXMiniProgramObject object]; 10 wxminiObiect.webpageUrl = webpageUrl; //兼容低版本的网络链接 11 wxminiObiect.userName = userName;//小程序的原始ID 12 wxminiObiect.path = path;// 指定打开小程序的某一个页面的URL路径 13 wxminiObiect.hdImageData = hdImageData; //小程序节点高清大图,小于128K 14 15 WXMediaMessage *message = [WXMediaMessage message]; 16 message.title = @"小程序title"; 17 message.description = @"小程序description"; 18 message.mediaObject = wxminiObiect; 19 message.thumbData = nil; // 兼容旧版本节点的图片,小于32k,新版本优先 20 21 SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init]; 22 req.message = message; 23 req.scene = WXSceneSession; // 目前只支持会话 24 25 return [WXApi sendReq:req];

2,通过App主动的调用api 打开小程序,这时候小程序也可以打开App

官方文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=21526646385rK1Bs&token=&lang=zh_CN

1WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object]; 2 launchMiniProgramReq.userName = @"gh_3413cfa14bae"; //拉起的小程序的原始ID 3 launchMiniProgramReq.path = @"pages/index/index"; //拉起小程序页面的可带参路径,不填默认拉起小程序首页 4 launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease; //拉起小程序的类型 5 [WXApi sendReq:launchMiniProgramReq]; 6//或者 7String appId = "wxd930ea5d5a258f4f"; // 填应用AppId 8IWXAPI api = WXAPIFactory.createWXAPI(context, appId); 9WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req(); 10req.userName = "gh_d43f693ca31f"; // 填小程序原始id 11req.path = path; //拉起小程序页面的可带参路径,不填默认拉起小程序首页 12req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE; // 可选打开 开发版,体验版和正式版 13api.sendReq(req);

WXMiniProgramTypeRelease 正式版    WXMiniProgramTypeTest 开发版    WXMiniProgramTypePreview 体验版

回调

当小程序从 APP 分享消息卡片的场景打开(场景值 1036,APP 分享小程序文档 iOS / Android) 或从 APP 打开的场景打开时(场景值 1069),小程序会获得打开 APP 的能力,此时用户点击按钮可以打开分享该小程序卡片/拉起该小程序的 APP。即小程序不能打开任意 APP,只能 跳回 APP。

1options.scene是1036,这个场景id表示app分享。 2options.scene是1069,这个场景id表示从app打开。

按微信文档中描述,从小程序中跳回App只能通过点击小程序中的按钮方可跳回,如何实现点击按钮跳回App,并携带参数呢,需如下两步

App端:

需要创建WXEntryActivty,实现IWXAPIEventHandler接口,重写onResp方法。注意Acitvity需要在Manifest文件中声明 android:exported="true",这样才可以被外部唤起

1public void onResp(BaseResp resp) { 2 if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) { 3 WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp; 4 String extraData =launchMiniProResp.extMsg; // 对应下面小程序中的app-parameter字段的value 5 } 6}

小程序端:

需要将 <button> 组件 open-type 的值设置为 launchApp。如果需要在打开 APP 时向 APP 传递参数,可以设置 app-parameter 为要传递的参数。通过 binderror 可以监听打开 APP 的错误事件。

1<view class='suspension'> 2 <button class="server_button" open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打开APP</button> 3 </view>

这样App拿到的内容就是wechat。

扩展 

再下一步的需求是多个App跳转一个小程序,再分别返回不同的App;一个App跳转不同的小程序,接受不同的返回内容。

从App拉起小程序页面的路径是可以带参数的,我们就利用这个参数判断是从那个App跳到小程序的。

例如:

名称为a的App跳转路径为:

"pages/index/index?type=appA"

名称为b的App跳转路径为:

"pages/index/index?type=appB"

小程序端接收参数:

1onLoad: function (options) { 2 console.log(options.type); //app传递过来的参数 可以判断a或者b 3},
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

喜大普奔,微信终于支持外网打开小程序啦!

前言千呼万唤始出来,微信小程序终于支持以URLScheme的形式从外部唤起了。longlongago我们只能在微信内的网页中使用微信开发标签小程序跳转按钮

thinkcmf+jsapi 实现微信支付

首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();

关于皕杰小程序打开公众号推文

关联公众号1.首先,登录微信公众号的后台,然后找到小程序,并点击小程序管理;其次,在小程序管理中,找到快速注册并认证小程序,点击以后用管理员身份验证一下。然后搜索想要关联的小程序,点击下一步,就关联成功了。2.小程序与公众号关联的时候,有