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

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后的操作,参考文档,这里就不说了。


注意身体,小心秃顶😬

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载链接 注:本文转载知乎上的回答 作者:初雪 链接:https://www.zhihu.com/question...
    pengshuangta阅读 28,911评论 9 295
  • 正在阅读一本十年以前购买的书,感觉好像似曾读过,但又很陌生。有一句话是这样说的,学到好的知识而不去应用,就像装在袋...
    健康就是幸福阅读 109评论 0 0
  • 今天的行程是去中国超市。巴黎的两大中国超市都在十三区。我们感觉只去中超有些无聊,就打算先逛逛周围的景点,之后再去买...
    Shun1993阅读 223评论 3 1
  • 完成底层十字 R'D'R或FDF'完成底层一角 重复完成底层 URU'R'U'F'UF(顺时针)或U'F'UFUR...
    独步天涯1031阅读 161评论 0 1
  • 今天梳理了近期自己提高执行力的践行方法,有了点心得。 反思总结一共有精选、刚需、培养、改进、养成、总结 六...
    暖暖的大树阅读 418评论 1 4