关于URL SCHEME

天猫


使用URL SCHEME启动天猫客户端并跳转到某个商品页面的方法   





在项目中遇到了这样一个需求:让用户在手机应用中,点击一个天猫的商品链接(知道商品在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”}




贴段代码作为例子吧:



复制代码

  1. 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”;
  2. NSURL *url;
  3. if([urlString rangeOfString:@"detail.tmall."].location != NSNotFound)   //判断Url是否是天猫商品的链接
  4. {
  5.     NSRange range = [urlString rangeOfString:@"id="]; //URL中找到商品的ID
  6.     if(range.location != NSNotFound)
  7.     {
  8.         NSString *productID = [urlString substringWithRange:NSMakeRange(range.location + 3, 11)];
  9.         NSString *appUrl = [NSString stringWithFormat:@"tmall://tmallclient/?{\"action\":\"item:id=%@\"}", productID];
  10.         url = [NSURL URLWithString:[appUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
  11.         if ([[UIApplication sharedApplication] canOpenURL:url])
  12.         {
  13.             // 如果已经安装天猫客户端,就使用客户端打开链接
  14.             [[UIApplication sharedApplication] openURL:url];
  15.         }
  16.         else
  17.         {
  18.             //客户手机上没有装天猫客户端,这时启动浏览器以网页的方式浏览该商品。
  19.             url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
  20.             [[UIApplication sharedApplication] openURL:url];
  21.         }
  22.     }
  23. }



我使用如下代码为什么没有成功跳转,打印结果是0,求指教


NSString *string = @"tmall://tmallclient/?{\"action\":\"item:id=36930336665\"}";

NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

BOOL aa = [[UIApplication sharedApplication] canOpenURL:url];

NSLog(@"%d",aa);

[[UIApplication sharedApplication] openURL:url];


PS:刚刚安装了客户端,发现是可以调用的,好像就是不能在浏览器打开,稍候需要继续看下



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值