Я думаю, что определенно есть способ выполнить то, что вы ищете здесь. Поскольку вы говорите, что успешно выполнили шаг 1, похоже, что вы зарегистрировали пользовательскую схему URL для своего приложения и настроили URL в Safari, по которому пользователь нажимает, чтобы открыть ваше приложение. Давайте представим, что ваша пользовательская схема URL-адреса myApp://
, и в этом случае все, что вам нужно сделать, - это вставить любую информацию, которую ваше приложение должно знать о том, куда отправлять Safari как часть этого URL-адреса, что-то вроде myapp://mysite.com/page/to/display
Затем в методе application:openURL:sourceApplication:annotation:
делегата приложения вы можете посмотреть URL-адрес, который использовался для открытия приложения, и сохранить часть, в которой вы должны указать Safari вернуться mysite.com/page/to/display
в этом примере. (Если вы используете версию iOS более раннюю, чем 4.2, вместо этого будет вызываться более простой метод application:handleOpenURL:
.)
Итак, давайте предположим, что в этом методе мы сохраняем URL-адрес, который нам дали, в свойстве openedURL
следующим образом (этот код входит в делегат вашего приложения):
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
self.openedURL = openURL;
}
Затем, когда вы захотите перезапустить Safari, просто используйте сохраненную информацию, чтобы открыть Safari в нужном месте. Вам нужно поменять схему myApp:
на http:
, чтобы она отправлялась в Safari:
NSURL *safariURL = [[NSURL alloc] initWithScheme:@"http"
host:[openedURL host]
path:[openedURL path]];
[[UIApplication sharedApplication] openURL:[safariURL autorelease]];
Если открываемый URL-адрес должен отправить другую информацию в ваше приложение, что кажется вероятным, тогда вам нужно сделать что-то более сложное, но вы все равно можете встроить страницу, на которую хотите вернуться, в Safari как параметр запроса в URL или что-то в этом роде: myApp://process?arg1=foo,arg2=bar,safariContext=mysite.com/page/to/display
(с правильной кодировкой URL, конечно).
Имеет ли это смысл?