前言 每次接入三方sdk会遇到各种各样的坑,三方的文档写的很简易,下面是我们接入跳转微信小程序的坑以及详细介绍
第一步登录苹果开发者中心配置
1.登录苹果开发者中心 打开 Associated Domains 如图1
2.在ios项目里面配置 applinks 《图2》,applinks:你的域名,比如 applinks:baidu.com ,baidu.com就是域前面是固定格式
第二步 服务器配置《必须配置》
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。
paths:使用*配置,则整个网站都可以使用
验证apple-app-site-association文件 https://search.developer.apple.com/appsearch-validation-tool/ 显示如图4 即为配置成功
第三步 集成微信sdk
1.官方sdk下载集成文档介绍https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Launching_a_Mini_Program/iOS_Development_example.html
2.以上步骤操作集成完过后下面我们开始接入sdk 导入头文件 WXApi.h
- 调用微信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
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = @"小程序的初始id";
launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
return [WXApi sendReq:launchMiniProgramReq completion:nil];
写在后面
集成所遇到的坑,
第一个就是小程序的userName没有搞清楚是什么,微信官方文档也没有详细的介绍
第二个坑,就是没有让服务端配置 apple-app-site-association 导致我这里跳转成功了有自动返回,或者需要跳转两次才可以打开对应的小程序。