1.配置Associated Domains
登录苹果开发者中心,找到相应的Identifiers
勾选 Associated Domains
对于之前没有勾选状态的,保存后相关的Profiles会是失效状态,只要点击编辑,再点击保存就可以更新成功,然后下载下来。
2.配置 apple-app-site-association 文件
apple-app-site-association 是一个json格式的文件,但是文件命名上面,不要有.json ,直接是apple-app-site-association,这是一个固定名称,文件的内容例如:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID.BundleID",//把TeamID和BundleID换成你项目真实的值
"paths": [ "*"]
}
//如果你有多个项目,要用同一个apple-app-site-association文件,可以在如下面添加
//,
//{
// "appID": "TeamID2.BundleID2",//把TeamID和BundleID换成你项目真实的值
// "paths": [ "*"]
// }
]
}
}
上传该文件到服务器的根目录(Tips:服务器必须支持HTTPS协议),这里先设定我的服务器域名为:https://www.demo.com(Tips:这个服务器的域名是可以带端口的,如果你的是带端口,那么下面用到该域名的地方都记得带端口)。上传完成后,验证是否有效,可以用Apple官方提供的App Search API Validation Tool
如上图,说明配置没有问题了,接下来要在微信开放平台上面配置Universal Links
比如像我上面举例的服务器域名,那这里就填写https://www.demo.com/
3.集成微信的SDK
按着微信官方的接入指南,要先确定一下微信的Universal Link是否正常,个人觉得这个应该都可以,这里我们就浪费篇幅了,大家直接官方上面看微信开放文档 (qq.com),上重点。
1.CocoaPods 集成
pod 'WechatOpenSDK'
添加完,记得在项目的根目录下执行 pod install。
2.Xcode 项目配置
-
配置 weixin URL scheme
在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你在微信开放平台所注册的应用AppID(如下图所示)。
- 配置 LSApplicationQueriesSchemes
选中项目的info.list => 右击 => open as source code,如图添加
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>weixinULAPI</string>
</array>
- 配置Associated Domains
这里就是以applinks:开头加上上面说的服务器域名,如applinks:www.demo.com
3.上代码
- 注册
因为我是在AppDelegate上面注册
#import "WXApi.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate,WXApiDelegate>
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
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];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
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];
}
注册微信
//微信
[WXApi registerApp:@"您的微信注册AppID" universalLink:@"在微信开放平台填写的universalLink"];
- 调起微信小程序
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = @"小程序的原始ID"; //小程序的原始ID,不是AppID
launchMiniProgramReq.path =@"小程序界面的Path"; //拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入
launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease; //拉起小程序的类型
[WXApi sendReq:launchMiniProgramReq completion:nil];