首先,我们先来了解下APP内活动,这是苹果官方给的说明:https://developer.apple.com/cn/help/app-store-connect/offer-in-app-events/overview-of-in-app-events简单来说,就是我们在苹果后台开发者后台里填写关于自己APP内的一些具有时效性的活动;用户就可以在App Store上看到APP内活动,如果用户未安装此APP,可以在APP内活动页面中直接下载安装;如果已经安装过此APP,用户可以此活动可以直接跳转到APP或活动专区。
这里需要我们开发人员做的就是提供出一个活动深层链接和修改工程。活动深层链接可以是通用链接(更安全,推荐使用)或自定网址(URL)。请避免使用短链接或添加多重定向。
1、创建一个名字为apple-app-site-association的json文件,不能带有扩展名;
json文件内容如下:
{
"applinks":{
"apps":[],
"details":[{
"appID":"XXXXXXXXXX.YYYYYYYYYYY",
"paths":["*"]
}]
}
}
这里appID的内容是<App ID Prefix>.<Bundle ID>;App ID Prefix和Bundle ID在证书Identifiers中可以看到,见下图。
2、将apple-app-site-association文件交给服务器人员,将其文件放到sites站点的 .well-known目录下,或者根目录下。这个文件的URL应该是下面格式https://<fully qualified domain>/.well-known/apple-app-site-association
https://<fully qualified domain>/apple-app-site-association
注意:
(1)必须使用https://承载该文件,该文件具有有效的证书并且没有重定向。
(2)josn文件内不能有注释代码,我就因为一开始在这个文件里随手写了句注释,后来测试一直无法跳转到APP;
(3)https://branch.io/resources/aasa-validator/可在此处验证域名配置的信息,查看苹果取到的数据
3、在证书Identifiers下勾选associated domains功能。
4、在APP中添加associated domains功能。
在xcode中target下选择 Signing & Capabilities ,增加associated domains选项。
把这里的 example 替换成自己的URL,即上面链接里<fully qualified domain>部分;不需要带https://和apple-app-site-association文件中 path 和 components里的内容,也不需要尾部斜杠(/)
5、代码相关处理
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
NSLog(@"通用链接");
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL * webpageURL = userActivity.webpageURL;
NSString * webPageHost = webpageURL.host;
NSLog(@"通用链接-host:%@---webpageURL:%@",webPageHost,webpageURL);
NSLog(@"---------fragment:%@-----parameterString:%@--活动标题:%@",webpageURL.fragment,webpageURL.parameterString,userActivity.title);
}
return YES;
}
6、测试:
建议先测试深层链接,确保该链接能定向至准确的位置。将链接粘贴到“备忘录”,然后轻点链接,出现 在“你的APP名”中打开 ,点击会跳转到APP内。