科尔多瓦: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进行页面转换。
答案 0 :(得分:1)
这不是那些方法的目的。他们要处理用于打开您的应用的网址,而不是您在UIWebView中打开的任何网址。
您应该查看UIWebView
的委托方法特别是
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType