2013-03-12 4 views
3

Я использую схему URL-адреса в своем приложении для iPhone, со страницы, на которой я переключаю пользователя на сафари, и нажатие кнопки на веб-странице, я возвращаюсь обратно в приложение . В то время некоторые параметры передаются на веб-странице, напримерКак принять параметр из схемы URL.

myapp://parameter=1 

Как я могу найти этот параметр в своем приложении? я поставил точку останова в

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

но пока Revert back.it не дозвонились.

+0

Как запустить приложение? Попробуйте ввести url в сафари. Вы возвращаете ДА из этого метода? – Mert

ответ

6

Вы можете использовать этот url host выяснить параметры, где параметры могут быть любого вида, ничего после http:// или пользовательского тега custom:// будет пойман в следующем коде

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

Если у вас есть несколько параметров, то вы могли бы использовать componentsSeparatedByString метод для разделения параметров

+0

Где я использую это ?? –

+0

просто используйте в этом приложении '- (BOOL): (UIApplication *) application handleOpenURL: (NSURL *) url' метод, просто попробуйте NSLog значение там, когда вы нажмете пользовательскую ссылку, он выведет' parameter = 1' – nsgulliver

+0

Вы хоть представляете, как это можно сделать в ванильном C++? Есть ли эквивалентная функция в углероде? – 2am

20
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 
+0

где я могу это использовать? –

+1

@Mert Я попытался выполнить запрос для своих пользовательских ссылок при создании, я никогда не получал ничего внутри запроса, возможно, потому, что у меня были пользовательские параметры после 'customtag: //' поэтому я предпочитал использовать '[url host]' – nsgulliver

+0

KI als used [url host] .... но где я печатаю это из приложения? –

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]]; 
} 
+0

, это должен быть ответ, просто уточните, чтобы ответить на вопрос. –

Смежные вопросы