Ios 需要fb的工作示例:类似于UIWebView中的edge.create/remove事件触发

Ios 需要fb的工作示例:类似于UIWebView中的edge.create/remove事件触发,ios,facebook,facebook-like,facebook-javascript-sdk,Ios,Facebook,Facebook Like,Facebook Javascript Sdk,简言之:edge.create在UIWebView中的嵌入式HTML中停止启动(我有一段时间没有更改任何代码)-有什么想法吗 我有一个iOS应用程序,它有UIWebView和类似Facebook的按钮。 用户在出现此对话框之前登录Facebook,因此不存在登录逻辑 我可以单击“喜欢/不喜欢”——它工作得很好——但它曾经关闭对话框,几天前它就坏了。关闭对话框是通过订阅edge.create/edge.remove事件实现的 这是我的HTML页面: <html> <h

简言之:edge.create在UIWebView中的嵌入式HTML中停止启动(我有一段时间没有更改任何代码)-有什么想法吗


我有一个iOS应用程序,它有UIWebView和类似Facebook的按钮。

用户在出现此对话框之前登录Facebook,因此不存在登录逻辑

我可以单击“喜欢/不喜欢”——它工作得很好——但它曾经关闭对话框,几天前它就坏了。关闭对话框是通过订阅edge.create/edge.remove事件实现的

这是我的HTML页面:

<html>
    <head>
        <style type='text/css'>
            * { -webkit-touch-callout: none; -webkit-user-select: none; }
            body { margin:0px; }
            .fb_edge_comment_widget { display: none !important; }
        </style>
    </head>
    <body>                   
        <div id='fb-root'></div>
        <script src='http://connect.facebook.net/en_US/all.js#xfbml=1'></script>
        <script>
            function forwardEvent(name) {
                var iframe = document.createElement('iframe');
                iframe.setAttribute('src', 'event:' + name);
                document.documentElement.appendChild(iframe);
                iframe.parentNode.removeChild(iframe);  
            };
            function beginForwardingEvent(name) {
                FB.Event.subscribe(name, function(r) { forwardEvent(name); });
            };
            function beginForwardingEvents(names) {
                for (var i = 0; i < names.length; i++) {
                    beginForwardingEvent(names[i]);
                }
            };
            beginForwardingEvents(['edge.create', 'edge.remove', 'xfbml.render']);
        </script>    
        <fb:like    href='%@' 
                    send='false' 
                    layout='%@' 
                    width='%.0f' 
                    show_faces='%@' 
                    action='%@' 
                    colorscheme='%@' 
                    font='%@'
                    ></fb:like>
    </body>
</html>
所以再一次-edge.create停止启动(我有一段时间没有更改代码中的任何内容)-有什么想法吗?我怎样才能找回它

多谢各位

更新:
虽然存在一个问题,但我仍然想理解为什么它在站点上可以工作,但在iOS UIWebView中却不能工作。iOS对话框是否需要调整?有解决办法吗?启动悬赏,希望得到答案。

似乎edge.create事件不会在本地HTML文件中触发。无论这是偶然还是有意,我都不确定,但我做了一些事情,并成功实现了这一点:

  • 在我自己的服务器上托管了“FacebookLikeView.html”文件,用格式说明符替换我想要的实际值,例如,
    action='%@'
    现在显式地是
    action='like'

  • 从FacebookLikeView.m中的
    load
    方法中删除所有内容,并将其替换为以下行:

    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.yourhost.com/FacebookLikeView.html"]]];
    
  • 更改了
    webView:shouldStartLoadWithRequest:navigationType
    方法中的行:

    if ([request.URL.scheme isEqualToString:@"file"])
        return YES;
    


  • 这并不是你所希望的答案,但我希望这能给你一些线索,至少有助于让它在这段时间内发挥作用。

    是的!就是这样,很抱歉回复太晚了。这些事件将仅使用远程HTML文件触发。
    if ([request.URL.scheme isEqualToString:@"file"])
        return YES;
    
    if ([request.URL.host hasSuffix:@"yourhost.com"]) 
        return YES;