限制 UIWebView 留在 Facebook 页面上

Posted

技术标签:

【中文标题】限制 UIWebView 留在 Facebook 页面上【英文标题】:Restrict UIWebView to stay on Facebook page 【发布时间】:2013-02-25 11:13:18 【问题描述】:

我需要为 iPad 制作一个简单的 UIWebView,以便用户使用他们的帐户登录并能够看到固定的 Facebook 公共页面并能够滚动此页面、评论或喜欢帖子但无法前往除了这个页面之外的其他地方。所以我正在使用

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
    
        NSURL *url = request.URL;
        NSString *urlString = url.absoluteString;
        NSRange range = [urlString rangeOfString:@"http://m.facebook.com/groups/10621329941138"];
        if (range.location != NSNotFound)
        
            return YES;
        
        else
        
            return NO;
        
    

每次用户结束会话时,女主人都会从该页面注销到登录页面。经过一些实验后,我遇到了一些问题:

在第一次加载时,我收到“您请求的页面现在无法显示...”http://uaimage.com/image/5a0cccea 每次注销都会导致白屏(.php 有问题?) 如果我要阻止此页面的所有链接,我如何在会话结束时允许注销操作?

提前致谢!

【问题讨论】:

【参考方案1】:

试试这个:

if ([url.host.lowercaseString rangeOfString:@"facebook"].location == NSNotFound) 

    // Don't go since we're somewhere else now
    return NO;

 else 

    // We can go here
    return YES;


【讨论】:

效果和以前一样。我有这个“您请求的页面......”。会是什么? 我好像有一个大写的 F,试试小写的“facebook”,看看是否有帮助... 即使这样可行,它也可能相当不安全,因为任何其他网站都可以将关键字“facebook”放在其路径中,并允许它继续加载。 你的意思是它的主机......问题是Facebook使用外部服务器来托管javascript和其他元素,所以很难停止加载......您也可以尝试仅在@时检查URL 987654322@ 仅检查用户是否启动了新页面加载... jjv360 看起来你是对的,因为直到现在我所有的尝试都没有成功【参考方案2】:

我以前做过类似的事情,我会建议类似的事情

return [urlString hasPrefix:@"http://m.facebook.com/"];

这也可能是一个更安全的选择,因为它仅限于域,而不仅仅是在完整 URL 路径中的任何位置对单词 facebook 进行关键字检查。

您可以花点心思,在“http://”之后和第二个“/”之前的任何地方检查“facebook.com”。也可以使用 NSURL 的 baseURL 方法来提供帮助。

另外,您确定您的 UIWebView 委托设置正确吗?

【讨论】:

以上是关于限制 UIWebView 留在 Facebook 页面上的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIWebView 中使用 Facebook 评论插件

UIWebview 和 facebook 墙

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

在 UIWebView 中打开 facebook 页面墙的 URL 不起作用

嵌入式 Facebook 帖子无法在 UIWebView 中正确显示

使用 UIWebView 登录 Facebook 和 G+