iOS--设置URL scheme用openUrl方法来打开另一个应用

最近项目中要用到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)
  • 注意: 这里不需要加上 ://
配置URL scheme.png

三: 准备工作完毕,运行看效果了,是不是很简单

app间跳转.gif

四: 完善及适配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添加到白名单中.如果没有配置的话,就会跳转失败,报错如下所示:
未添加白名单报错.png
  • 添加白名单很简单,增加一个Key: LSApplicationQueriesSchemes Type为数组:如下
Snip20161204_3.png

先暂时写这么多, 有时间会完善以下两点:

五:利用URL scheme跳转到指定页面

六:分享到朋友圈或者其他平台的信息, 用户点击后, 如果安装了应用就提醒是否在**应用中打开,没有安装就跳转到App store中下载安装

  • 目前从我们自己的app内分享到微信的内容,当用户点击后是无法做到跳转回到我们自己应用的具体页面.可能有些同学会问, 为什么像京东呀一些应用可以做到?暂且不说腾讯有入股京东, 就拿京东在应用宝上的应用评级是S级应用来说.因为微信在微信内跳转有限制, 只要是在应用宝上的应用评级低于S级的都是不能跳转的,只能够跳转到应用宝的下载页面在跳转到App Store

你可能感兴趣的:(iOS--设置URL scheme用openUrl方法来打开另一个应用)