微信小程序唤起其他微信小程序 / 移动应用App唤起小程序(2018.11.9 更新)

96
一个程序猿的每一天
2018.05.30 14:26* 字数 803

1. 微信小程序唤起微信小程序

小程序唤起其他小程序很简单
先上链接
小程序跳转小程序 Navigator组件 推荐使用
❗❗❗❗❗从今往后开发者跳转小程序需要将指定跳转小程序的id添加到白名单,具体看文档中的“使用限制”栏目和下图

白名单配置预览 key=navigateToMiniProgramAppIdList

👉小程序基础库版本要在础库 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 = @"原始ID";
    launchMiniProgramReq.path = [WXMiniProgramTool transformPath:path];
    launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
    return  [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后的操作,参考文档,这里就不说了。


注意身体,小心秃顶😬

微信小程序 开发
Gupao