2011-11-24 63 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