iOS handleOpenURL与Phonegap 1.6.0

时间:2012-04-17 13:42:31

标签: ios ios5 cordova

科尔多瓦:1.6.0

iOS:5.1

XCode:4.3.1

我正试图通过一个非常基本的示例程序进入Phonegap 1.6.0中的handleOpenURL。我想在每次发出http / https请求时分析一个url。我现在所做的就是添加一条日志消息来查看网址的主机。

- (BOOL) application:(UIApplication*)application handleOpenURL: 
(NSURL*)url 
{ 
    NSLog(@"Hi"); 
    NSLog(@"Host: %@", [url host]);

    if (!url) { 
        return NO; 
    }

    ... 
} 

但是,日志消息从不向控制台写入任何内容。

我注意到了评论:

// only valid if Example-Info.plist specifies a protocol to handle 

也许我的Example-Info.plist文件错了?我已经添加了CFBundleURLTypes,假设这是“指定要处理的协议”的含义。我是否必须在某处添加其他内容?下面是我的Example-Info.plist文件的示例部分。模拟器是否有可能无法识别我的.plist修改?

... 
<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
        <key>CFBundleURLSchemes</key> 
            <array> 
                <string>http</string>
                <string>https</string> 
            </array> 
    </dict> 
</array>

我也已经发现了,因为不推荐使用handleOpenURL。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication (NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"Hi");
    ...
}

在我的应用程序中打开URL时,两者都没有被调用。我已经尝试了所有堆栈溢出的解决方案,没有这样的运气。如果有任何帮助,我正在使用jQuery mobile 1.1.0进行页面转换。

1 个答案:

答案 0 :(得分:1)

这不是那些方法的目的。他们要处理用于打开您的应用的网址,而不是您在UIWebView中打开的任何网址。

您应该查看UIWebView

的委托方法

特别是

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType