Войдите в Facebook Комментарии iOS (swift) не отвечает

Я пытаюсь включить Facebook Комментарии плагин в моем родном приложении.

Коробка комментариев Facebook представлена ​​в порядке.

введите описание изображения здесь

но когда я нажимаю «Войти в Facebook, чтобы опубликовать комментарий», ничего не происходит. Я пытаюсь поймать событие с помощью этой функции: func userContentController(userContentController: WKUserContentController,didReceiveScriptMessage message: WKScriptMessage) но он не работает.

Вот мой код:

 import UIKit import WebKit class FacebookCommentsViewController: UIViewController, WKScriptMessageHandler{ var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() // WKWebView let contentController = WKUserContentController(); contentController.addScriptMessageHandler(self,name: "callbackHandler") let configuration = WKWebViewConfiguration() configuration.userContentController = contentController webView = WKWebView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), configuration: configuration) webView.scrollView.bounces = false self.view.addSubview(webView) let facebookCommentsURL = "<!DOCTYPE html><html> <head> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> </head> <body> <div id=\"fb-root\"></div><script>(function(d, s, id){var js, fjs=d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js=d.createElement(s); js.id=id; js.src=\"http://connect.facebook.net/en_US/all.js#xfbml=1&appId=527957123932456&status=0\"; fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));</script> <div class=\"fb-comments\" data-href=\url-to-my-item data-width=\"470\" data-num-posts=\"5\"></div></body></html>" webView.loadHTMLString(facebookCommentsURL, baseURL: NSURL(string:"my base url")) } func userContentController(userContentController: WKUserContentController,didReceiveScriptMessage message: WKScriptMessage) { print(message.name) } } 

Что я делаю не так?

3 Solutions collect form web for “Войдите в Facebook Комментарии iOS (swift) не отвечает”

Освободите его!

Я заменил WKWebView на UIWebView и все сработало!

Когда логин был успешно обновлен webView:

 func webViewDidFinishLoad(webView: UIWebView) { let currentURL : NSString = (webView.request?.URL!.absoluteString)! if (currentURL.containsString("/login_success")) { self.reloadFacebookComments() } self.updateFramesAccordingToWebViewcontentSize() } 

Является ли ваш JS искаженным? Генератор кода сгенерировал это для меня:

 <div id="fb-root"></div> <script> (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> 

Нет необходимости изменять веб-просмотры. Основная проблема заключается в том, что скрипт facebook пытается открыть эту страницу на новой странице (_blank), поэтому скрипт не работает в webview. Чтобы предотвратить эту проблему в WKWebView вам необходимо внедрить WKUIDelegate в ваш контроллер, и вам нужно добавить _webView.UIDelegate = self этот код в свой метод viewDidLoad .

Затем вызовите этот метод делегата, чтобы предотвратить эту проблему:

в Objective C

 - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures { if (!navigationAction.targetFrame.isMainFrame) { [webView loadRequest:navigationAction.request]; } return nil; } 

в Swift

 optional func webView(_ webView: WKWebView, createWebViewWithConfiguration configuration: WKWebViewConfiguration, forNavigationAction navigationAction: WKNavigationAction, windowFeatures windowFeatures: WKWindowFeatures) -> WKWebView?{ if navigationAction.targetFrame.isMainFrame == nil { webView.loadRequest(navigationAction.request) } return nil } 
  • iOS 9 ... Являются ли WebView (-ами) свободными от правил Exceptions безопасности транспорта (ATS), которые блокируют небезопасные хосты HTTP?
  • Как удалить cookie WKWebview
  • Скрытие панели аксессуаров клавиатуры в WKWebView
  • Ошибка Ajax с HTTP-статусом 0 при использовании плагина Cordova WKWebView на iOS
  • Получение заголовков HTTP-ответа из WKWebview
  • WKWebView открывает ссылки из определенного домена в сафари
  • Обнаружение воспроизведения видео в компоненте WKWebView
  • как я могу очистить содержимое UIWebView / WKWebView?
  • при перенаправлении с кодом 302 WKWebView не может установить cookie
  • Разрешить непроверенные сертификаты ssl в WKWebView
  • WKWebView пустой после «успешного» HTTPS NSURLRequest
  • Interesting Posts

    Можно ли запускать приложения ios, разработанные с использованием реакции-native в linux для реального iphone

    iOS9: Будет ли NSAllowsArbitraryLoads = True разрешено для выпуска в App Store?

    IOS UIWebView: открытие ссылок в сафари

    Ошибка переноса существующих учетных данных OAuth в ACAccountStore

    Яблоки внешних аксессуаров (bluetooth) только для устройств MFI?

    Какой хороший способ создать оверлейный вид, который останется на вершине?

    как отслеживать одну скорость загрузки с помощью asihttprequest

    Как я могу создать один UITableView с двумя источниками данных

    Совместное использование голосовой почты в приложении ios

    NSURLRequest: Опубликовать данные и прочитать опубликованную страницу

    Уменьшите количество времени, чтобы выпустить 1 миллион + объектов при выводе VC

    редактируемый UITableView, UITextField в ячейке, сохранение данных при их нажатии

    Журналы устройств не отображаются в Xcode

    Экран камеры показывает только чистое черное изображение

    Удаление файла с устройства после использования

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.