2015-10-07 8 views
13

प्रतिक्रिया नहीं दे रहा हूं मैं अपने मूल ऐप में Facebook Comments Plugin को शामिल करने का प्रयास कर रहा हूं।फेसबुक पर लॉग इन करें टिप्पणियाँ आईओएस (स्विफ्ट)

फेसबुक टिप्पणियां बॉक्स ठीक से प्रस्तुत किया गया है।

enter image description here

लेकिन जब मैं प्रेस "फेसबुक के लिए लॉग इन एक टिप्पणी भेजें करने के लिए", कुछ नहीं होता। मैं इस समारोह के साथ घटना को पकड़ने की कोशिश कर रहा हूं: 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) 
    } 
} 

क्या मैं गलत कर रहा हूँ:

यहाँ मेरी कोड है?

+0

में

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; } 

में

आप Cocoapods उपयोग कर रहे हैं:

तो इस समस्या से बचने के लिए इस प्रतिनिधि विधि कहते हैं? –

+0

नं। केवल प्लगइन - https://developers.facebook.com/docs/plugins/comments – Luda

+0

क्या आप लॉगिन के लिए फेसबुक एसडीके का उपयोग कर रहे हैं। –

उत्तर

3

इसे झुकाएं!

मैंने WKWebView को UIWebView के साथ बदल दिया है और सबकुछ काम करता है!

जब लॉगिन सफल ताज़ा WebView था:

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

     self.updateFramesAccordingToWebViewcontentSize() 
    } 
0

क्या आपका जेएस खराब है? कोड जनरेटर मेरे लिए यह उत्पन्न:

<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>

<!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>

से मैं क्या बता सकते हैं यह लग रहा है यह है की तरह?

संपादित करें: ओह, शायद नहीं। स्ट्रिंग के अन्य हिस्सों को संदर्भ से बाहर ले जाया जाता है।

+0

यदि आपके पास कोई नया प्रश्न है, तो कृपया [प्रश्न पूछें] (http://stackoverflow.com/questions/ask) बटन पर क्लिक करके इसे पूछें। इस प्रश्न का एक लिंक शामिल करें यदि यह संदर्भ प्रदान करने में मदद करता है। – Nullify

+0

@ 200 ओके मान लीजिए कि आप उलझन में हैं।यह इस सवाल के लिए एक तरह का जवाब है। –

+0

हां, यह मेरे पास facebookCommentsURL में है। मैं वास्तव में आपका जवाब नहीं समझता – Luda

0

वहाँ WebViews बदलने के लिए की जरूरत नहीं है। मुख्य समस्या यह है कि फेसबुक स्क्रिप्ट इस पृष्ठ को नए पेज (_blank) में खोलने की कोशिश कर रही है इसलिए स्क्रिप्ट वेबव्यू में काम नहीं करता है। WKWebView में इस समस्या को रोकने के लिए आपको अपने नियंत्रक में WKUIDelegate का अनुकरण करने की आवश्यकता है और आपको _webView.UIDelegate = self इस कोड को अपने viewDidLoad विधि में जोड़ने की आवश्यकता है। 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 
} 
संबंधित मुद्दे