3

私はiPhoneアプリでURLスキームを使用しています。ユーザーをサファリに切り替えたページから、Webページからボタンをクリックして、アプリに戻ります。その時点で、いくつかのパラメーターが次のようなWebページによって渡されます。

 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 に答える