1

科尔多瓦:1.6.0

iOS:5.1

X代码:4.3.1

我正在尝试使用一个非常基本的示例程序来利用 Phonegap 1.6.0 中的 handleOpenURL。每次发出 http/https 请求时,我都想分析一个 url。我现在所做的就是添加一条日志消息以查看 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 进行页面转换。

4

1 回答 1

1

那不是这些方法的目的。它们将处理用于打开您的应用程序的 URL,而不是您在 UIWebView 中打开的任何 URL。

您应该查看UIWebView的委托方法

具体来说

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

于 2012-04-17T13:50:23.457 回答