微信小程序唤起其他微信小程序 / 移动应用App唤起小程序

微信小程序唤起其他微信小程序 / 移动应用App唤起小程序

    <!-- 文章内容 -->
    <div data-note-content="" class="show-content">
      <div class="show-content-free">
        <h3>1. 微信小程序唤起微信小程序</h3>

小程序唤起其他小程序很简单
先上链接
小程序跳转小程序 Navigator组件 推荐使用
小程序跳转小程序 wx.navigateToMiniProgram(OBJECT) API 即将废弃 不推荐使用
👉小程序基础库版本要在础库 2.0.7 开始支持,低版本需做兼容处理。
👉注意:不是任何小程序都可以唤起的,只能打开同一公众号下关联的小程序

<navigator class='navigatorClass' target="miniProgram" open-type="navigate" app-id="MiniProgram-YourAppID" path="MiniProgram-Path 一般为pages/为首" extra-data="MiniProgram-Parameter 跳转后的微信小程序onLaunch()方法中可以获取" version="release 要跳转的小程序版本"></navigator>
//navigator组件也可以添加class属性 可以当做一个button来使用 点击触发
//其他没有用的的参数 详见上面的Navigator组件文档链接

2. 移动应用App唤起微信小程序

移动应用App唤起小程序的方式也不麻烦,但由于当时开发的时候参考的文档有点模棱两可,导致调试了一阵子,这也是写这篇文章的初衷,避免大家走弯路。
先上链接
移动应用App唤起微信小程序

具体流程:
  1. 登陆微信开放平台
  2. 管理中心-创建移动应用-等待审核通过
  3. 审核通过后-查看应用(拉到最下面)-关联小程序信息-查看关联-关联小程序-小程序账号持有者通过申请
  4. 到这一步就可以开始移动开发了

👉这里只介绍iOS SDK接入开发全流程 原文链接
下载导入或是cocoapod接入随你,原文链接里写的挺清楚,应该不会遇到太多问题,这里提几个容易遗忘和出错的点

  • URL Schemes设置 如下图所示
    Identifier直接填写 weixin
    URL Schemes填写已申请通过的App详情中的AppId


    URL Schemes设置
  • Info.plist设置添加Key-LSApplicationQueriesSchemes 如下图所示

    Info.plist设置

  • 必须在代码中向微信终端注册你的id
    NSLog(@"注册微信权限 ===== %d", [WXApi registerApp:@"AppId"]);

  • 👉都设置成功后,如果想测试一下是否可以使用SDK可以调用api打开微信试一下,如果能跳转到微信,说明可以继续开发了。

    //测试代码
    [WXApi openWXApp];
    

    👉在iOS资源Demo中有一个写好的类WXApiManager可以拿来直接用,方便哦~Demo

    由于我们的需求是点击不同的按钮跳转到小程序不同的页面,所以我有写一个工具类,具体代码如下:

    //外部调用此方法前先调用abilityCheck判断是否可以正常调起微信小程序
    + (BOOL)openWXMiniProgram:(MiniProgramPathType)path {
    
    WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
    launchMiniProgramReq.userName = <span class="hljs-string">@"原始ID"</span>;
    launchMiniProgramReq.path = [WXMiniProgramTool transformPath:path];
    launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
    <span class="hljs-keyword">return</span>  [WXApi sendReq:launchMiniProgramReq];
    

    }
    //检查用户是否安装微信
    //判断当前微信的版本是否支持OpenApi

    • (BOOL)abilityCheck {
      if ([WXApi isWXAppInstalled]) {
      if ([WXApi isWXAppSupportApi]) {
      return YES;
      }
      return NO;
      }
      return NO;
      }
      //外部调用传入枚举值在内部转化为具体小程序path
    • (NSString *)transformPath:(MiniProgramPathType)path {
      if (path == MiniProgramPathDefault) {
      return @"pages/path1/path1";
      }
      if (path == MiniProgramPathIndex) {
      return @"pages/path2/path2";
      }
      if (path == MiniProgramPathTeach) {
      return @"pages/path3/path3";
      }
      return @"pages/pathDefault/pathDefault";
      }

    iOS这里有个很坑的地方,文档中是这样写的

    WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
    launchMiniProgramReq.userName = userName;  //拉起的小程序的username
    launchMiniProgramReq.path = path;    //拉起小程序页面的可带参路径,不填默认拉起小程序首页
    launchMiniProgramReq.miniProgramType = miniProgramType; //拉起小程序的类型
    return  [WXApi sendReq:launchMiniProgramReq];
    

    这个userName并没有具体说明是什么参数,其实是你小程序配置里的原始ID,登陆小程序微信公众平台-设置-最下面 账号信息-原始ID
    若这个参数不填或者填错,该API直接返回NO,不好发现错误原因。

    到这一步如果没有出错,恭喜你已经看到你要跳转的小程序弹出了。如果你们的需求还有从小程序中跳转回移动应用App后的操作,参考文档,这里就不说了。


    注意身体,小心秃顶😬

          </div>
    
    posted @ 2018-11-02 10:06  星朝  阅读(3659)  评论(0编辑  收藏  举报