【转】使用URL SCHEME启动天猫客户端并跳转到某个商品页面的方法
2017-03-09 16:07
549 查看
在项目中遇到了这样一个需求:让用户在手机应用中,点击一个天猫的商品链接(知道商品在PC浏览器里的地址),直接启动天猫的客户端并显示这个商品。以前曾经实现过类似的功能,不过那次是淘宝的商品,天猫和淘宝的客户端不同,参数也不一样,直接套淘宝的格式就不行了。不过,总体的思路还是类似的,就是使用iOS 的URL SCHEME机制。
关于URL Scheme的基本原理,网上已经有很多详细讲解的帖子,这里就不重复了。不清楚的同学,看这个经典帖子就可以:http://www.cocoachina.com/newbie/tutorial/2012/0529/4302.html 我这里只说天猫的scheme参数格式。
启动天猫客户端的url scheme格式:tmall://tmallclient/?{"action":”item:id=xxxxx”}
其中xxxxx是商品的id。
比如:某个天猫商品的http链接为:http://detail.tmall.com/item.htm?spm=a215v.7217581.610138.10.sO6nZp&id=36615660686&areaId=410100&cat_id=2&rn=ebe1860b08257aacbac424ed12d5208c&user_id=1098342976&is_b=1
从中抽取”id=“后面的11位数字,此为商品ID,然后,通过下面的URL启动天猫客户端:
tmall://tmallclient/?{"action":”item:id=36615660686”}
贴段代码作为例子吧:
from:http://www.cocoachina.com/bbs/read.php?tid=220610
关于URL Scheme的基本原理,网上已经有很多详细讲解的帖子,这里就不重复了。不清楚的同学,看这个经典帖子就可以:http://www.cocoachina.com/newbie/tutorial/2012/0529/4302.html 我这里只说天猫的scheme参数格式。
启动天猫客户端的url scheme格式:tmall://tmallclient/?{"action":”item:id=xxxxx”}
其中xxxxx是商品的id。
比如:某个天猫商品的http链接为:http://detail.tmall.com/item.htm?spm=a215v.7217581.610138.10.sO6nZp&id=36615660686&areaId=410100&cat_id=2&rn=ebe1860b08257aacbac424ed12d5208c&user_id=1098342976&is_b=1
从中抽取”id=“后面的11位数字,此为商品ID,然后,通过下面的URL启动天猫客户端:
tmall://tmallclient/?{"action":”item:id=36615660686”}
贴段代码作为例子吧:
复制代码 NSString *urlString = @“http://detail.tmall.com/item.htm?spm=a215v.7217581.610138.10.sO6nZp&id=36615660686&areaId=410100&cat_id=2&rn=ebe1860b08257aacbac424ed12d5208c&user_id=1098342976&is_b=1”; NSURL *url; if([urlString rangeOfString:@"detail.tmall."].location != NSNotFound) //判断Url是否是天猫商品的链接 { NSRange range = [urlString rangeOfString:@"id="]; //在URL中找到商品的ID if(range.location != NSNotFound) { NSString *productID = [urlString substringWithRange:NSMakeRange(range.location + 3, 11)]; NSString *appUrl = [NSString stringWithFormat:@"tmall://tmallclient/?{\"action\":\"item:id=%@\"}", productID]; url = [NSURL URLWithString:[appUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; if ([[UIApplication sharedApplication] canOpenURL:url]) { // 如果已经安装天猫客户端,就使用客户端打开链接 [[UIApplication sharedApplication] openURL:url]; } else { //客户手机上没有装天猫客户端,这时启动浏览器以网页的方式浏览该商品。 url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; [[UIApplication sharedApplication] openURL:url]; } } } |
相关文章推荐
- 使用URL SCHEME启动天猫客户端并跳转到某个商品页面的方法
- 使用URL SCHEME启动淘宝客户端并跳转到某个商品页面的方法
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(7):服务器端和客户端数据类型的自动转换:泛型集合类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- asp.net中倒计时自动跳转页面的实现方法(使用javascript)
- 使用RequestDispatcher跳转页面后,JS与CSS样式都不见了的解决方法
- ajax提交session超时跳转页面使用全局的方法来处理
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(8):服务器端和客户端数据类型的自动转换:数组类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(7):服务器端和客户端数据类型的自动转换:泛型集合类型
- 2.response跳转: a.客户端跳转,地址栏改变; b.所有代码执行完毕后跳转; c.跳转后的页面不能使用上一个页面的request属性; d.使用地址重写传递参数(respon
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- ajax提交session超时跳转页面使用全局的方法来处理
- 解决href使用onclick方法时点击该链接的时候不会跳转页面.但是滚动条会往上滚的问题
- Android中应用界面主题Theme使用方法和页面定时跳转
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(5):服务器端和客户端数据类型的自动转换:基本类型和枚举类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- ASP.NET刷新页面的六种方法(转) 包括在跳转的时候使用提示
- php中iconv函数使用方法,URL传中文乱码问题,html页面跳转问题
- 使用js实现页面跳转方法
- ajax提交session超时跳转页面使用全局的方法来处理