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跳转路径为

  • 相关阅读:
    android 中文 api (43) —— Chronometer
    SVN客户端清除密码
    Android 中文 API (35) —— ImageSwitcher
    Android 中文API (46) —— SimpleAdapter
    Android 中文 API (28) —— CheckedTextView
    Android 中文 API (36) —— Toast
    Android 中文 API (29) —— CompoundButton
    android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
    Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
    Android 中文 API (24) —— MultiAutoCompleteTextView.CommaTokenizer
  • 原文地址:https://www.cnblogs.com/lst619247/p/13490645.html
Copyright © 2011-2022 走看看