如何从URL方案中获取参数。

时间:2013-03-12 11:54:02

标签: ios iphone objective-c nsurl url-scheme

我在我的iPhone应用程序中使用URL方案,从我将用户切换到safari的页面,以及从网页点击按钮,我将恢复为应用程序 那时,网页传递了一些参数,如

 myapp://parameter=1

如何从我的应用中找到此参数? 我在

中设置了一个断点
    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)ur

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

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

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

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

答案 2 :(得分: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]];
}