iOS通用链接和GET参数

我们正在尝试使用Apple Universal Links在iOS上实现应用索引(我正在查看https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref / doc / uid / TP40016308-CH12-SW2 )。

在“创build和上传关联文件”部分,我看到我可以限制索引到特定的页面,这是很好的。

我想限制索引到https://www.mywebsite.com?parameter=something ,我怎么能?

我在想这样的事情:

{ "applinks": { "apps": [], "details": [ { "appID": "MYID", "paths":[ "*?parameter=*" ] } ] } } 

你认为它可以工作吗? 我还不能testing它,因为它需要时间来获得在网站根目录上传文件的授权,这就是为什么我问你,如果你认为它可以工作,我只想上传一次,如果我的文件能够。

谢谢

,目前#(内联链接)和?(查询 – 参数)不受Universal Links支持。 Apple没有提供任何格式来支持apple-app-site-association文件中的Inline-LinksQuery-Parmeter

为了做索引到https://www.mywebsite.com?parameter=something ,我使用下面的json文件。

 { "applinks": { "apps": [], "details": [ { "appID": "TEAMID.BUNDLEID", "paths":[ "*" ] } ] } } 

如果你想限制索引只有一些参数例如query_parmeter1query_parmeter2那么你需要在UIApplicationDelegate方法[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; } 

注意:这个技巧不会阻止应用程序在点击链接到网站时打开。

参考 – 在通用链接中处理查询参数

对于追加到基本域的path的查询参数(即https://www.mywebsite.com/pathOffOfTheBaseDomain?parameter=something )使用:

 { "applinks": { "apps": [], "details": [ { "appID": "TEAMID.BUNDLEID", "paths":[ "/pathOffOfTheBaseDomain" ] } ] } } 

根据Apple Universal Link文档 :

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.

完整的URL已经成熟,可以在AppDelegate的continueUserActivity方法中parsing。