zoukankan      html  css  js  c++  java
  • 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
    第一种:文字类型分享示例
    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];
    View Code

    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

     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);
    View Code

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

    回调

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

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

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

    App端:

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

    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 的错误事件。

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

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

    扩展 

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

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

    例如:

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

    "pages/index/index?type=appA"

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

    "pages/index/index?type=appB"

    小程序端接收参数:

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

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

    扩展 

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

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

    例如:

    名称为a的App跳转路径为

  • 相关阅读:
    初步认识,合并集(树)
    20180918-1 词频统计
    20181011-1 每周例行报告
    2018091-2 博客作业
    项目第六天
    项目第五天
    项目第四天
    项目第三天
    总结随笔
    测试报告
  • 原文地址:https://www.cnblogs.com/lst619247/p/13490645.html
Copyright © 2011-2022 走看看