iOS 跳转微信小程序 Universal Links 坑

前言 每次接入三方sdk会遇到各种各样的坑,三方的文档写的很简易,下面是我们接入跳转微信小程序的坑以及详细介绍

第一步登录苹果开发者中心配置

1.登录苹果开发者中心 打开 Associated Domains 如图1


图1.png

2.在ios项目里面配置 applinks 《图2》,applinks:你的域名,比如 applinks:baidu.com ,baidu.com就是域前面是固定格式


图2.png

第二步 服务器配置《必须配置》

1)创建一个json文件,名称必须为 apple-app-site-association,⚠️该文件不可带 .json 的后缀名
apple-app-site-association 文件必须放在https服务器的根目录下,例:https://baidu.com 这个路径下 ⚠️一定是根目录,也就是说该文件必须是一级目录,供下载使用

  • apple-app-site-association 文件格式:
{
"applinks": {
       "apps": [],
       "details": [
           {
               "appID": "teamID.bundleId",
               "paths": ["*"]
           }
       ]
   }
}

appID 格式为 teamID.bundleId形式,比如说我的teamID是12324,<查看tameID如图3>bundleId是com.test.app
那么我的appID就是:12324.com.test.app。


图3.png

paths:使用*配置,则整个网站都可以使用

验证apple-app-site-association文件 https://search.developer.apple.com/appsearch-validation-tool/ 显示如图4 即为配置成功

图4.png

第三步 集成微信sdk

1.官方sdk下载集成文档介绍https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Launching_a_Mini_Program/iOS_Development_example.html
2.以上步骤操作集成完过后下面我们开始接入sdk 导入头文件 WXApi.h

  1. 调用微信api注册我们的appid 与universalLink
    universalLink 你的域名比如百度 如下
[WXApi registerApp:@"微信appid 不是小程序id" universalLink:@"https://baidu.com/"];

在AppDelegate实现实现以下方法 <如果项目里面有集成聚合sdk,比如友盟分享,可以用聚合的不用实现以下 个别方法了>

- (BOOL)application:(UIApplication *)app
           openURL:(NSURL *)url
           options:(NSDictionary<NSString *,id> *)options {
   return  [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
   return  [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
   return [WXApi handleOpenURL:url delegate:self];
}

//对应我们配置的 Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
{
   return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

4,接下来开始测试
下面遇到一个坑,小程序是前段开发的就问他小程序的userName是多少,前段妹子直接报了小程序的名字,我再三确认他说小程序的userName就是小程序的名字。好吧就开始测试了。微信登录分享都正常未读小程序跳转不过去。
最好查阅资料才发现小程序的userName就是小程序的初始id 登录小程序开放中心找到点击设置
查看方法如图5


图5.png
   WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
   launchMiniProgramReq.userName  = @"小程序的初始id";
   launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
   return [WXApi sendReq:launchMiniProgramReq completion:nil];

写在后面

集成所遇到的坑,
第一个就是小程序的userName没有搞清楚是什么,微信官方文档也没有详细的介绍
第二个坑,就是没有让服务端配置 apple-app-site-association 导致我这里跳转成功了有自动返回,或者需要跳转两次才可以打开对应的小程序。

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

推荐阅读更多精彩内容