iOS中,URL.schemes在拦截webView事件和app
一。需求描述
URL.scheme的作用可能有很多,本文章中仅仅简单总结下自己在开发中用到过的两种情况:
1.拦截UIWebView中的事件,实现webView和native的通信。
2.两个不同app之间的跳转和返回.(三方支付,分享等等)。
二。需求实现
需求一:拦截UIWebView中的事件,实现webView和native的通信。
网上有开源框架,可以实现native 和 js直接互相调用 WebViewJavascriptBridge,如果只是需要简单的调用的话,完全可以利用UIWebView的代理方法代替
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType,代码如下:

需求二:两个不同app之间的跳转和返回.(三方支付,分享等等)
1. 使用URL.scheme原因:
由于苹果的app都是在沙盒中,相互是不能访问数据的。但是苹果还是给出了一个可以在app之间跳转的方法:URL Scheme。简单的说,URL Scheme就是一个可以让app相互之间可以跳转的协议。每个app的URL Scheme都是不一样的,如果存在一样的URL Scheme,那么系统就会响应先安装那个app的URL Scheme,因为后安装的app的URL Scheme被覆盖掉了,是不能被调用的。
2.URL Scheme怎么使用
需求:如果我们希望A app点击某一按钮唤起 B app。被唤起后的B app点击取消按钮,回到A app.
2.1 A app 和B app中url schemes的设置
A app中plist文件中配置一下其跳转协议即可,如下图所示:

“test://test.App.com”就是A app 跳转协议了.
B app中plist文件中配置一下其跳转协议即可,如下图所示:

“cont://wallet.Bapp.com”就是B app 跳转协议了.
2.2 A app 点击某一按钮 唤起 B app

2.3 B app 处理A app的唤起请求

2.4 B app 返回 A app
