iphone - 如何从 Web View 中捕获自定义 URL 方案?

标签 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. 用户正在使用 WebView
  2. 用户点击自定义网址链接 ( myapp://id=1234 )
  3. 我的应用处理自定义网址并将用户定向到另一个页面 ( http://www.someotherpage.com/?id=1234 )

谢谢!

最佳答案

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

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

关于iphone - 如何从 Web View 中捕获自定义 URL 方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8253834/

相关文章:

NSURL 提取参数字符串中某个键的单个值

html - 禁用输入 "Text"标记中的自动缩放 - iPhone 上的 Safari

ios - 带有本地视频文件的 AVPlayer

iphone - 用于设备特定布局的 Xcode 8 界面构建器

objective-c - NSURL 书签查找失败

php - Json 错误 : Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value. }

swift - Swift 中的 NSURLRequest 和 URLRequest 有什么区别?

iOS NSURLConnection/CFURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9813)

iphone - 为什么这段代码运行缓慢?

iphone - 协议(protocol)中的协议(protocol)是否可以被视为包含它们采用的协议(protocol)?