前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >app唤起小程序_微信小程序支付轮训

app唤起小程序_微信小程序支付轮训

作者头像
全栈程序员站长
发布2022-09-20 11:44:47
1.7K0
发布2022-09-20 11:44:47
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(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

代码语言:javascript
复制
第一种:文字类型分享示例 SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init]; req.text = @"分享内容"; req.bText = YES; req.scene = WXSceneSession; // 目前只支持会话形式  [WXApi sendReq:req]; 第二种:App 主动分享小程序卡片:⚠️ 小程序测试版不能分享 WXMiniProgramObject *wxminiObiect = [WXMiniProgramObject object]; wxminiObiect.webpageUrl = webpageUrl; //兼容低版本的网络链接 wxminiObiect.userName = userName;//小程序的原始ID wxminiObiect.path = path;// 指定打开小程序的某一个页面的URL路径 wxminiObiect.hdImageData = hdImageData; //小程序节点高清大图,小于128K  WXMediaMessage *message = [WXMediaMessage message]; message.title = @"小程序title"; message.description = @"小程序description"; message.mediaObject = wxminiObiect; message.thumbData = nil; // 兼容旧版本节点的图片,小于32k,新版本优先  SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init]; req.message = message; req.scene = WXSceneSession; // 目前只支持会话 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

代码语言:javascript
复制
 WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object]; launchMiniProgramReq.userName = @"gh_3413cfa14bae"; //拉起的小程序的原始ID launchMiniProgramReq.path = @"pages/index/index"; //拉起小程序页面的可带参路径,不填默认拉起小程序首页 launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease; //拉起小程序的类型 [WXApi sendReq:launchMiniProgramReq];
 //或者 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); 

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

回调

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

代码语言:javascript
复制
options.scene是1036,这个场景id表示app分享。 options.scene是1069,这个场景id表示从app打开。

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

App端:

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

代码语言:javascript
复制
public void onResp(BaseResp resp) { if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) { WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp; String extraData =launchMiniProResp.extMsg; // 对应下面小程序中的app-parameter字段的value  } }
小程序端:

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

代码语言:javascript
复制
<view class='suspension'> <button class="server_button" open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打开APP</button> </view>

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

代码语言:javascript
复制
<button class='server_button' open-type="launchApp" app-parameter="MemberId={{MemberId}}&MemberStatus={{MemberStatus}}" binderror="launchAppError">返回App</button>

这样可以传参数给App

扩展

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

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

例如:

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

代码语言:javascript
复制
"pages/index/index?type=appA"

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

代码语言:javascript
复制
"pages/index/index?type=appB"

小程序端接收参数:

代码语言:javascript
复制
onLoad: function (options) { console.log(options.type); //app传递过来的参数 可以判断a或者b },

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167513.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 唤起
  • 回调
    • App端:
      • 小程序端:
      • 扩展
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档