2011-11-24 54 views
3

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

现在,我想捕获该函数中的要求:

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

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

} 

打印出来作为上述网址给我:

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

这是我的本地设置上甲基苯丙胺与附加到URL的自定义网址。

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

在这一点上,我想能够做到以下几点:

  1. 用户在web视图
  2. 用户点击自定义URL链接(MYAPP:// ID = 1234)
  3. 我的应用程序处理的自定义网址和将用户定向到另一个页面(http://www.someotherpage.com/?id=1234

谢谢!

回答

0

当一个URL跟冒号一样有一个双斜线时,下一个部分应该看起来像[email protected]:port[email protected]:port都可以省略)。由于id=1234看起来不像主机名,因此URL解析器不会将您的URL识别为绝对URL。所以URL解析器将其视为相对URL。

尝试将URL语法更改为myapp:id=1234myapp:///id=1234

+0

谢谢你,不幸的是,使用该方案仍返回HTTP。如果简单地使用字符串比较来判断“myapp://”是否存在,然后执行一个操作,是不是很糟糕的做法? – kurisukun

0

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

Check reference

+0

谢谢,但这不是注册你的应用程序被其他应用程序调用吗? – kurisukun