Обновление: Возможно, после некоторых экспериментов я заметил что-то интересное в поведении Сафари. Если у Safari открыта вкладка с URL-адресом, а не с корнем сайта, он не откроет новую вкладку, если ваше приложение снова запросит тот же URL-адрес.
Так что в вашем случае, если вы пришли из facebook.com/auth и ваше приложение открыто http://facebook.com/auth, то вкладка будет повторно использована! Вы также можете безопасно передавать веб-параметры; они будут проигнорированы в решении обработки вкладок. Я не тестировал http vs https, чтобы убедиться, что это также игнорируется, но это то, о чем нужно знать.
Старый ответ:
да это возможно, однако только документально способ открыть Safari приведет к новой вкладке открывается для «запрос».
Документально способ сделать это, чтобы использовать схему URL, как это:
if([[UIApplication sharedApplication] canOpenURL:myURL])
{
[[UIApplication sharedApplication] openURL:myURL];
}
https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html
Почему я говорю, что это возможно потому, что Google Maps делает это с прошивкой 8. Если вы используйте мобильный Safari для поиска адреса, затем выберите результирующее представление карты, которое откроет приложение Google Maps (если оно установлено). Приложение Google maps будет иметь баннер в верхней части страницы с надписью «RETURN TO SAFARI». Если вы нажмете на этот баннер, он вернет вас в Safari, не открывая новую вкладку именно так, как вам хотелось бы.
Такое же поведение также распространяется и на Chrome. Документация здесь также говорится, новая вкладка будет создана при открытии URL в Chrome, если вы сделаете несколько вызовов:
https://developer.chrome.com/multidevice/ios/links#creating-a-new-tab
Конечно Chrome является их собственным приложением и в этом случае они хорошо в пределах их права на использование недокументированных функций. Как Google добился этого с помощью Safari, я не могу сказать.
Я бы предложил идеально найти способ поддержки обоих браузеров, которые Google сделал с помощью своего приложения карт, чтобы дать пользователям последовательный опыт и уважать их выбор браузера.На мой взгляд, эта функциональность разумна; если Safari запустила ваше приложение, почему вы не сможете вернуть пользователя на эту страницу.
Можете ли вы не отправить информацию о пользователе в полезную нагрузку? Таким образом, вы могли бы решить, какое приложение используется и вернуть пользователя там ... http://www.w3schools.com/jsref/prop_nav_useragent.asp – jowie
Вы получите идентификатор пакета вызывающего приложения в обратном вызове делегата ваш AppDelegate - при условии справедливости вещей, Safari также должен отправить обратно свой идентификатор. – Mills
Странное, недокументированное поведение в Safari. Потрясающие! :) – jowie