尝试在 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】:我尝试了所有这些解决方案,但这些都不起作用。对我有用的是设置UIWebView
的Base URL。根据问题的示例,假设我已将数据读入变量htmlStr
,那么加载策略将如下所示
webview.loadHTMLString(htmlStr, baseURL: URL(string: "http://www.bombslo.com")!)
这对我有用。
【讨论】:
以上是关于尝试在 UIWebView 中加载 Facebook 评论插件的主要内容,如果未能解决你的问题,请参考以下文章
在 UIWebview 中加载 Javascript+Html 内容
如何在 Swift 中的 UIWebView 中加载本地 PDF