否,目前Universal Links 不支持 #(inline-links) 和 ?(query-parmeter)。 Apple 未在apple-app-site-association 文件中提供任何格式来支持Inline-Links 和Query-Parmeter。
为了对https://www.mywebsite.com?parameter=something 进行索引,我使用了以下 JSON 文件。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.BUNDLEID",
"paths":[ "*" ]
}
]
}
}
如果您只想将索引限制为某些参数,例如 query_parmeter1 和 query_parmeter2,那么您需要在 UIApplicationDelegate 方法 [UIApplicationDelegate application: continueUserActivity: restorationHandler:] 中处理这个问题
目标-C:
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
if ([url.query containsString:@"query_parmeter1"]) {
//handle code for query_parmeter1
}else if ([url.query containsString:@"query_parmeter2"]){
//handle code for query_parmeter2
}
return YES;
}
return NO;
}
斯威夫特:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
let query = url.query ?? ""
if query.contains("query_parmeter1") {
// handle code for query_parmeter1
} else if query.contains("query_parmeter2") {
// handle code for query_parmeter2
}
return true
}
return false
}
注意:当点击网站链接时,此技巧不会阻止应用打开。但是您可以检查 URL 是否满足您的要求,如果没有,您可以再次在 Web 浏览器中打开您的 URL。类似于亚马逊应用 -
参考资料 - Handle query parameters in universal links