如何从webview中捕获自定义URL方案?

时间:2011-11-24 08:05:15

标签: iphone nsurl nsurlrequest

在我的应用程序中,我有一个webview,它会加载一个包含普通链接和自定义URL方案的页面,例如myapp:// id = 1234。

现在,我正试图在此函数中捕获请求:

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

    NSLog(@"NSURLRequest = %@", [[request URL] absoluteString]);

}

如上所述打印出网址给了我:

http://localhost:8888/myapp://id=1234

这是我在MAMP上的本地主机设置,其中自定义URL附加到URL。

我曾希望我可以直接使用[请求方案],但现在在这种情况下,它只返回“http”。有没有办法可以在我自己的应用程序中处理自定义URL方案?

此时,我希望能够做到以下几点:

  1. 用户在网页浏览
  2. 用户点按自定义网址链接(myapp:// id = 1234)
  3. 我的应用处理自定义网址并将用户定向到另一个网页(http://www.someotherpage.com/?id=1234
  4. 谢谢!

2 个答案:

答案 0 :(得分:0)

当一个URL在冒号后面有一个双斜杠时,就像你的一样,下一部分应该看起来像userinfo@hostname:portuserinfo@:port都可以省略。由于id=1234看起来不像主机名,因此URL解析器无法将您的URL识别为绝对URL。因此,URL解析器将其视为相对URL。

尝试将您的网址语法更改为myapp:id=1234myapp:///id=1234

答案 1 :(得分:0)

我猜您应该声明由您的应用程序处理的任何自定义URL方案。

Check reference