最近项目中要用到URL scheme,首先就搜索相关资料,看了几篇文章,自己也建了demo演示了下,发现网上写的有点问题,所以写下这文章来总结下.这里不写概念,只写具体操作,想了解概念的自己搜其他文章来了解
一: 起名
- 我的应用 - <小羊>,URL scheme为xiaoyang
- 别人的应用 - <微信>,URL scheme为weixin
二: 想要达到的目的:应用<小羊>跳转到应用<微信>
- 新建工程1,名称叫
小羊
,先在主界面中添加一个按钮,只需要写以下这几行代码,无需
其他任何操作:
- 注意:url为需要跳转到的应用的URL scheme + ://,也就是
weixin://
#pragma mark - 点击跳转到微信
- (IBAction)turnToWeixin:(id)sender {
NSURL *url = [NSURL URLWithString:@"weixin://"];
[[UIApplication sharedApplication] openURL:url];
}
- 新建工程2,名称叫
微信
,只需要配置一下URL scheme就行了,无需
其他任何操作:(相当于自己给自己起了个名字,告诉别人, 你要想跳到我这里, 你通过这个URL scheme就可以了,从上面的起名中可以知道微信
的URL scheme为weixin)
- 注意: 这里不需要加上
://
三: 准备工作完毕,运行看效果了,是不是很简单
四: 完善及适配iOS9
- 估计有朋友注意到在按钮点击事件里写的代码逻辑不严谨,应该要先判断下是否能打开那个URL,代码如下:
#pragma mark - 点击跳转到微信
- (IBAction)turnToWeixin:(id)sender {
NSURL *url = [NSURL URLWithString:@"weixin://"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
}
- 如果是iOS9之前在加上这个判断是无需其他任何操作的,如果是需要适配iOS9及以上的话就需要配置一下白名单,告诉程序,我可以跳到别的应用里,这里的例子就是,在
小羊
这个程序里配置一下白名单, 把微信
的URL scheme添加到白名单中.如果没有配置的话,就会跳转失败,报错如下所示:
- 添加白名单很简单,增加一个Key: LSApplicationQueriesSchemes Type为数组:如下
先暂时写这么多, 有时间会完善以下两点:
五:利用URL scheme跳转到指定页面
六:分享到朋友圈或者其他平台的信息, 用户点击后, 如果安装了应用就提醒是否在**应用
中打开,没有安装就跳转到App store中下载安装
- 目前从我们自己的app内分享到微信的内容,当用户点击后是无法做到跳转回到我们自己应用的具体页面.可能有些同学会问, 为什么像京东呀一些应用可以做到?暂且不说腾讯有入股京东, 就拿京东在应用宝上的应用评级是S级应用来说.因为微信在微信内跳转有限制, 只要是在应用宝上的应用评级低于S级的都是不能跳转的,只能够跳转到应用宝的下载页面在跳转到App Store