3

我在我的 iPhone 应用程序中使用 URL 方案,从我将用户切换到 safari 的页面,然后从网页单击按钮,我正在恢复到应用程序当时,一些参数由网页传递,例如

 myapp://parameter=1

如何从我的应用程序中找到此参数?我在其中放置了一个断点

    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)ur

但是在恢复时。它不会被调用。

4

3 回答 3

21
NSString *query = [url query];
NSArray *queryComponents = [query componentsSeparatedByString:@"&"];

现在你得到了 queryComponents 中的所有字符串,比如

param1=value

现在你可以得到这样的第一个值

NSArray *firstParam = [[queryComponents objectAtIndex:0] componentsSeparatedByString:@"="];

[firstParam objectAtIndex:0] is the name of param
[firstParam objectAtIndex:1] is value of the param
于 2013-03-12T12:03:59.077 回答
7

您可以使用它url host 来查找参数,其中参数可以是任何类型,之后的任何内容http://或自定义标记custom://都将在以下代码中捕获

 NSString *urlParameter = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

如果您有多个参数,那么您可以使用componentsSeparatedByString方法来分隔参数

于 2013-03-12T11:57:30.090 回答
1

试试这个代码。即使您在 url 中有许多参数和值,这也会很有用。

NSURL *url = [NSURL URLWithString:@"xyz.com/result.php?data1=1123660801&data2=250072028055&presult=SUCCESS"];

NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
NSArray *queryItems = [components queryItems];

NSMutableDictionary *dict = [NSMutableDictionary new];

for (NSURLQueryItem *item in queryItems)
{
    [dict setObject:[item value] forKey:[item name]];
}
于 2016-08-01T12:42:28.913 回答