5

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

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

我使用一个名为“comments.html”的本地文件加载 webview,该文件已添加并复制到我的 bundle/project 目录中。

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

我的 html 文件是插件实现的基本版本,在Facebook 评论插件描述站点生成。我插入了一个网址并单击“获取代码”。我拿了他们提供给我的 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-width="470"></div>

</body>
</html>

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

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

4

4 回答 4

2

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
facebook = [[Facebook alloc] initWithAppId:@"your app id" andDelegate:self];
....
}

它解决了我的问题。

祝你好运!

于 2012-06-22T08:02:04.763 回答
1

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

尝试将 FB 脚本更改为此。

js.src = "http://connect.facebook.net/en_GB/all.js#xfbml=1";
于 2013-04-16T19:54:56.840 回答
0

意外地调用提要对话框对我有用!我打了电话

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

关闭后,评论插件会正确加载。

于 2012-05-30T07:18:47.547 回答
0

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

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

这对我有用。

于 2019-02-03T13:10:52.250 回答