How to take the parameter from URL scheme.

2019-03-16 21:27发布

问题:

I am using URL scheme in my iPhone app,from a page I switch user to safari,and a button click from Web page,I am reverting back to app At that time ,some parameters are passed by the web page like

 myapp://parameter=1

How can I find this parameter from my app ? I have placed a break point in

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

but while revert back.it is not get called.

回答1:

You can use this url host to find out the parameters, where parameters could be of any kind, anything after http:// or custom tag custom:// will be caught in the following code

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

If you have multiple parameters then you could use componentsSeparatedByString method to separate the parameters



回答2:

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

Now you got all strings in queryComponents like

param1=value

Now you can get first value like that

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

[firstParam objectAtIndex:0] is the name of param
[firstParam objectAtIndex:1] is value of the param


回答3:

Try this code. this ll useful even if you had numbers of parameters and values in 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]];
}