根据项目需求,要求在APP中打开一个UIWebView
页面,页面中有一个广告,点击需要跳转至淘宝详情页面,没有安装淘宝则继续在UIWebView
中打开详情;
先配置工程,需要可以打开淘宝APP
具体实现方法,需要在info.plist文件中,新增LSApplicationQueriesSchemes
为Array
类型,然后在这个类型下面新增一个item
为String
类型,值设置为taobao
,(发现在iOS8上面不需要配置也可以打开,iOS11就不行,可能是苹果为了安全性有所拦截)。配置效果如下图:
在UIWebView的代理方法中实现如下代码,方可打开淘宝APP
- (BOOL)webView:(UIWebView *)awebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//跳转至淘宝
NSString *urlStr = [NSString stringWithFormat:@"%@", request.URL];
//如果需要请求的URL中包含`item.taobao.com`
if ([urlStr rangeOfString:@"item.taobao.com"].location != NSNotFound) {
//需要拼接跳转的URL
NSString *itemId = [urlStr componentsSeparatedByString:@"?"].lastObject;
NSString *url = [NSString stringWithFormat:@"taobao://item.taobao.com/item.htm?%@",itemId];
//如果安装了淘宝APP
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
//return NO表示在可以打开淘宝APP时,在自己APP中就不进入详情页面
return NO;
}
}
return YES;
}
为了方便测试,在此提供一个淘宝详情链接:(只可用于测试)
https://item.taobao.com/item.htm?spm=0.7095261.0.0.6e491674SSs7xQ&id=562238292763