尝试在 UIWebView 中加载 Facebook 评论插件

Posted

技术标签:

【中文标题】尝试在 UIWebView 中加载 Facebook 评论插件【英文标题】:Trying to load Facebook-Comments plugin in a UIWebView 【发布时间】:2012-05-30 02:30:50 【问题描述】:

我正在尝试在 iPhone 应用程序的 UIWebView 中查看 facebook-cmets 插件。

我从 Facebook 的 ios tutorial 开始,在那里我实现了单点登录。应用程序委托负责 Facebook 的单点登录,然后将我重定向到我的单视图控制器,该控制器显示标题栏和 UIWebView。

我使用名为“cmets.html”的本地文件加载 webview,该文件已添加并复制到我的包/项目目录中。

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"comments" ofType:@"html"] isDirectory:NO];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];

我的 html 文件是插件实现的基本版本,在 Facebook Comments Plugin 描述站点生成。我插入了一个网址并单击“获取代码”。我拿了他们提供给我的 HTML5 代码,并把它保存在一个 html 文件中

<html>
<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 = "//connect.facebook.net/en_GB/all.js#xfbml=1";
      fjs.parentNode.insertBefore(js, fjs);
    (document, 'script', 'facebook-jssdk'));</script>

    <div class="fb-comments" data-href="http://www.bombslo.com" data-num-posts="4" data-></div>

</body>
</html>

UIWebView 在我的模拟器上加载得很好。我在我的设备上托管并启动了 html,它在 Safari 中加载良好。问题是 UIWebView 不会在嵌入式 UIWebView 中加载 Facebook-cmets 插件。

需要注意的重要一点是,我没有得到一个空白屏幕。我看到两个动画加载栏,这是 Facebook 的典型。另请注意,Facebook 生成的代码有 HTML5 和 XFBML。我都试过了。

【问题讨论】:

如果没有人知道,我希望有一个替代系统将用户 cmets 集成到我的应用程序中。和方向将非常感激 【参考方案1】:

我有同样的问题。但在与 Facebook iOS sdk 集成后,将以下语句放入 AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

facebook = [[Facebook alloc] initWithAppId:@"your app id" andDelegate:self];
....

它解决了我的问题。

祝你好运!

【讨论】:

【参考方案2】:

这个问题似乎可以通过在js.src中添加http://来解决

尝试将 FB 脚本更改为此。

js.src = "http://connect.facebook.net/en_GB/all.js#xfbml=1";

【讨论】:

由于某种原因这对我不起作用。它适用于 Twitter 嵌入。【参考方案3】:

调用一个提要对话框出乎意料地对我有用!我打了电话

[facebook dialog:@"feed" andDelegate:self];

关闭后,cmets 插件已正确加载。

【讨论】:

【参考方案4】:

我尝试了所有这些解决方案,但这些都不起作用。对我有用的是设置UIWebViewBase URL。根据问题的示例,假设我已将数据读入变量htmlStr,那么加载策略将如下所示

webview.loadHTMLString(htmlStr, baseURL: URL(string: "http://www.bombslo.com")!)

这对我有用。

【讨论】:

以上是关于尝试在 UIWebView 中加载 Facebook 评论插件的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin iOS 在 UIWebView 中加载内容

在 Html 中嵌入图像并在 UIWebView 中加载

在 UIWebview 中加载 Javascript+Html 内容

如何在 Swift 中的 UIWebView 中加载本地 PDF

如何使用 Xamarin iOS 在 UIWebView 中加载本地 xlsx 文件

如何在Swift中的UIWebView中加载URL?