Я новичок в разработке приложений для iOS. В настоящее время я работаю над проектом, который требует взаимодействия между приложением и веб-страницей. Я знаю, что я могу использовать контроллер просмотра сафари для загрузки веб-страницы в приложении и использовать кнопку «Готово» в правом углу веб-страницы для возврата в приложение. Но я хочу вернуться в приложение, щелкнув ссылку на веб-странице, а не кнопку «Готово». Я не мог найти решения для этого. Может ли кто-нибудь помочь? Спасибо заранее.Контроллер просмотра Safari
ответ
эта работа для меня, но wkwebview. https://github.com/liqichao/wkwebview-test
этот пример является sfsafariview, но и должно использовать внутреннее с wkwebview https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch11p552webkit/ch24p825webview/WebViewController.swift
Вы можете сделать это достаточно легко с помощью схемы пользовательских URL. Сначала добавьте схему к вашим Info.plist
:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.mydomain.MyCallback</string>
<key>CFBundleURLSchemes</key>
<array>
<string>mydomainwebcallback</string>
</array>
</dict>
</array>
Теперь у вас есть механизм, который будет открыть приложение из любого URL, который щелкнул. В этом случае URL будет mydomainwebcallback://whatever
Теперь в вашей веб-странице, загруженной в контроллере представления, добавьте URL, как это:
<a href="mydomainwebcallback://whateverinfo">Return to app</a>
я собираюсь упростить здесь, но вам нужна ссылка на ваш SFSafariViewController
от вашего AppDelegate
. Первый в AppDelegate:
import UIKit
import SafariServices
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var safariVC: SFSafariViewController?
func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {
// Here we dismiss the SFSafariViewController
if let sf = safariVC
{
sf.dismissViewControllerAnimated(true, completion: nil)
}
return true
}
Как вы можете видеть, что я держу в SFSafariViewController
в делегатом. Теперь, на мой взгляд контроллер, где я показываю VC:
import UIKit
import SafariServices
class ViewController: UIViewController {
@IBAction func showSafariVC(sender: UIButton) {
if let url = NSURL(string: "https://mywebserver/callback.html")
{
let delegate = UIApplication.sharedApplication().delegate as! AppDelegate
delegate.safariVC = SFSafariViewController(URL: url)
presentViewController(delegate.safariVC!, animated: true, completion: nil)
}
}
}
Теперь, когда вы нажмете на ссылку он уволит SFSafariViewController
.
- 1. Контроллер просмотра Safari или WKWebKit
- 2. Возможно ли предоставить пользовательские заголовки в контроллер просмотра Safari
- 3. Перетащите контроллер просмотра таблицы таблиц в контроллер просмотра
- 4. Как сбросить контроллер просмотра?
- 5. Отсутствует контроллер просмотра
- 6. Контроллер автономного просмотра UIAlertController
- 7. Дважды нажмите контроллер просмотра
- 8. Как запрограммировать контроллер просмотра?
- 9. Подробный контроллер просмотра
- 10. NSAutoReleasePool выпускает контроллер просмотра?
- 11. Как закончить контроллер просмотра?
- 12. Xcode, контроллер просмотра навигации
- 13. Вращающийся контроллер просмотра
- 14. Контроллер начального просмотра работает?
- 15. Контроллер просмотра модели внутри контроллера просмотра модели
- 16. контроллер не получает данные просмотра
- 17. Встраивание видео в контроллер просмотра
- 18. Ссылка на конкретный контроллер просмотра
- 19. Swift 3 Представляющий контроллер просмотра
- 20. Запустить MVC-контроллер без просмотра?
- 21. iOS: текущий контроллер просмотра programallyallly
- 22. iOS (ipad) контроллер просмотра разделов
- 23. Показать контроллер просмотра после прожектора
- 24. Контроллер использования для частичного просмотра
- 25. Нажмите контроллер просмотра в UINavigationController
- 26. Перезагрузите контроллер регулярного просмотра (быстрый)
- 27. UIWebView: медиаплеер вращает контроллер просмотра
- 28. ОтклонитьModalViewControllerAnimated не освобождает контроллер просмотра
- 29. Встроенный контроллер просмотра в UINavigationController
- 30. App Delegate - выгрузить контроллер просмотра
Спасибо всем. Это дает все подробности. Меня устраивает. Благодарю. –
@ShalinaHu, пожалуйста, примите ответ, если он сработает для вас. –