0

我有一个 UIWebView,用于登录外部库(Gigya)。JavaScript 代码如下所示:

        window.onload = function () {

            gigya.accounts.showScreenSet({
                                         screenSet: 'Login-web',
                                         mobileScreenSet: 'testMobile',
                                         deviceType: 'auto'

                                         });
        }


    **function DisplayEventMessage(eventObj) {
        alert(eventObj.eventName + " event happened");
        window.location="callmycode:cmd=showAlert&var=myVar";
    }

    gigya.socialize.addEventHandlers({
                                     onLogin:DisplayEventMessage,
                                     onConnectionAdded:DisplayEventMessage,
                                     onConnectionRemoved:DisplayEventMessage
                                     }
                                     );**

代码要求 Gigya SDK 将此页面添加到他的委托;( gigya.socialize.addEventHandlers)。但是当有人使用 Facebook 登录时,它会在普通浏览器 ( ) 上打开新标签页,about:blank但在 中UIWebView,它只是加载新网站,而不是标签页。所以,javascript代码禁用,因为页面不存在了。

即使页面不存在,我如何仍然启用此代码?

4

1 回答 1

0

(如果有人需要这个帮助,只需发布​​答案即可:)

答案很简单,只需重定向到 Safari 浏览器即可。我无法使用它UIWebView。示例代码:

(Opening safari:)
   -(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if ( inType == UIWebViewNavigationTypeLinkClicked ) {
        (**here the link opening:**)
        [[UIApplication sharedApplication] openURL:[inRequest URL]];
        return NO;
    }

    return YES;
}

(Some code in the site handling the redirect to the application)
(JavaScript)
window.location = "yourapp://<some information needed>";

我以另一种方式做到了,我识别出链接打开,并从 Gigya 的 SDK 启动本机窗口以登录。

于 2013-12-15T15:42:31.310 回答