我们正在尝试使用Apple Universal Links在iOS上实现应用程序索引(我正在查看https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2)。
在“创建和上传关联文件”部分中,我看到我可以将索引限制为特定页面,这很好。
我想将索引限制为https://www.mywebsite.com?parameter=something,我该怎么办?
我在想这样的事情:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "MYID",
"paths":[ "*?parameter=*" ]
}
]
}
}
你认为它能起作用吗?我无法测试它,因为获取授权在网站根目录上上传文件需要时间,这就是为什么我问你是否认为它可以工作,我想上传文件一次,如果我可以。
谢谢
答案 0 :(得分:12)
否,目前#{1}}不支持#(内联链接)和?(查询参数)。 Apple未提供任何格式来支持Universal Links
& Inline-Links
文件中的Query-Parmeter
。
为了对https://www.mywebsite.com?parameter=something建立索引,我正在使用以下JSON文件。
apple-app-site-association
如果您希望仅将索引限制为某个参数,例如{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.BUNDLEID",
"paths":[ "*" ]
}
]
}
}
和query_parmeter1
,那么您需要在UIApplicationDelegate方法query_parmeter2
中处理此问题
<强>目标-C:强>
[UIApplicationDelegate application: continueUserActivity: restorationHandler:]
<强>夫特:强>
-(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;
}
注意:当点击指向该网站的链接时,此技巧不会阻止该应用打开。但是,如果没有,则可以检查URL是否符合您的要求,然后您可以再次在Web浏览器中打开URL。与亚马逊应用程序类似 -
答案 1 :(得分:3)
对于附加到基本域的路径 off 的查询参数(即https://www.mywebsite.com/pathOffOfTheBaseDomain?parameter=something),请使用:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.BUNDLEID",
"paths":[ "/pathOffOfTheBaseDomain" ]
}
]
}
}
根据Apple Universal Link documentation:
Note that only the path component of the URL is used for comparison. Other components, such as the query string or fragment identifier, are ignored.
完整的网址已经成熟,可以在AppDelegate的continueUserActivity
方法中进行解析。
答案 2 :(得分:0)
在iOS 13中,现在可以在定义通用链接URL时指定查询和片段值。遗憾的是,Apple并没有很好地对此进行记录,但是在WWDC 2019中提到了它:https://developer.apple.com/videos/play/wwdc2019/717/。
对于您想匹配https://www.mywebsite.com?parameter=something
的原始示例,您的apple-app-site-association
文件应如下所示:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "MYID",
"components": [
{
"/" : "",
"?": { "parameter": "something" }
}
]
}
]
}
}
请注意,如果您想继续支持iOS 12中的通用链接,则仍然需要指定paths
数组,如果您指定{{ 1}}数组。