Запустить и восстановить сессию сафари из приложения в iOS - PullRequest
0 голосов
/ 17 июня 2011

Мой вариант использования таков, что я хочу запустить свое приложение из safari и вернуться к ТОГО ЖЕ СЕССИИ safari из моего приложения. Шаг 1:

  • Запустите мое приложение из браузера Safari [Можно успешно его достичь]

Шаг 2:

  • Запустите Safari, поддерживая тот же сеанс, с которого было запущено приложение [На шаге 1]

Как выполнить Шаг 2?

код ниже для запуска сафари

NSString *strurl = @"http://www.google.com"
NSURL *url = [NSURL URLWithtring:strurl];
[[UIApplication sharedApplication] openURL:url];

ПРИМЕЧАНИЕ. Приведенный выше код запускает сафари для указанного URL.

- Как запустить сафари, восстановив предыдущий сеанс?

  • Есть ли возможность отправки сафари мне уникального идентификатора страницы, когда я запускаю из него приложение, чтобы при попытке запуска сафари из моего приложения это было бы полезно. [Просто смутная идея].

1 Ответ

0 голосов
/ 25 июня 2011

Я думаю, что определенно есть способ выполнить то, что вы ищете здесь. Поскольку вы говорите, что успешно выполнили шаг 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, конечно).

Имеет ли это смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...