要想打开pdf、淘宝等等,我们首先需要一个链接url
,通过webview
加载这个链接url
,设置webview
的代理,并实现将要加载请求的方法,这里进行网络请求的拦截,如果是.pdf
结尾的直接调用[[UIApplication sharedApplication] canOpenURL:
这个方法,就可以正常打开PDF了,同样的道理,如果我们加载的是京东或者淘宝的链接,他们有各自协议头,我们通过拦截他们的请求,判断是我们需要的,则调用[[UIApplication sharedApplication] canOpenURL:
这个方法。
如果是打开第三方应用,紧紧这么做苹果是不让我们打开第三方应用的,我们还需要在info.plist
里面的白名单中添加我们要打开第三方的协议头(schemes
),京东对应openapp.jdmobile
,淘宝对应taobao
,至于其他的第三方需要自己测试添加!
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSURL *url = [request URL];
// 应用内打开PDF
if (navigationType == UIWebViewNavigationTypeLinkClicked && [url.absoluteString hasSuffix:@".pdf"])
{
if([[UIApplication sharedApplication]canOpenURL:url])
{
[[UIApplication sharedApplication]openURL:url];
return NO;
}
}
// 打开京东
if ([url.absoluteString hasPrefix:@"openapp"]) {
if([[UIApplication sharedApplication]canOpenURL:url])
{
[[UIApplication sharedApplication]openURL:url];
return NO;
}
}
// 打开淘宝
if ([url.absoluteString hasPrefix:@"taobao"]) {
if([[UIApplication sharedApplication]canOpenURL:url])
{
[[UIApplication sharedApplication]openURL:url];
return NO;
}
}
return YES;
}