iOS handleOpenURL with Phonegap 1.6.0



Cordova: 1.6.0

iOS:5.1

XCode:4.3.1

我正在尝试使用一个非常基本的示例程序来利用Phonegap 1.6.0中的句柄OpenURL。 我想在每次发出 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 

也许我的示例信息列表文件是错误的? 我已经添加了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移动1.1.0进行页面过渡。

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

您应该查看UIWebView的委托方法

具体说来

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

最新更新