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-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:]
这样的事情来处理
-(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。