应用程序间跳转
1. 什么是应用间跳转,有什么作用?
- 应用场景
1. 使用第三方用户登录,需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名"
2. 应用程序推广,网易彩票,设置-推荐应用-有很多应用程序图标如果本机已经安装过,会直接跳转到另外一个应用程序, 软件的广告,推广结果,后续会有一些列的金钱上的结算
3. 支付宝,第三方支付,淘宝,电话费充值。。。
2. 应用程序间跳转实现?
直接打开对应APP的scheme即可
-
概念须知
> URL : 统一资源定位符 scheme(协议头) : 决定通过什么方式查找资源 http:// ftp:// tel:// file:// path(路径) : 资源路径 www.baidu.com 192.168.1.1/资源 110 /User/Desktop
-
设置方式
> 默认情况下应用程序是没有自己的URL的,如果想要拥有自己的URL,需要设置URL 项目 -> info -> URL Types -> URL Scheme
-
打开方式
// 跳转到其他应用程序 // 打电话 tel:// 发短信: sms:// 发邮件 mailTo://10086 打开网址http:// // schemes: 网易的scheme wangyi NSURL *url = [NSURL URLWithString:@"wangyi://view?newsid=201410130001"]; // url.scheme // 路径的scheme // url.host // 主机地址 // url.path // 资源文件路径 // url.query // 请求参数 // 判断本机是否安装了目标程序 if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } else { NSLog(@"没有安装,可以再给定下载地址,前往"); }
-
跳转到对方APP, 对方APP执行的代理方法
/** 只要是由其他应用程序打开的,就会调用此方法 */ /** URL 就是其他应用程序,打开当前程序使用的URL */ - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url /** openURL 是打开当前应用程序的url sourceApplication 是当开当前应用程序的源程序的BundleId 提示:一旦重写了新方法,旧方法就不再被执行 但是:很多第三方框架,都建议两个方法全都写 */ - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
-
iOS9.0跳转适配
在info.plist文件中添加LSApplicationQueriesSchemes字段 ,是数组类型
-
跳回原程序代码
<!--// iOS9.0以前, 直接通过以下的代码, 就可以打开对应的APP--> <!--// 在iOS9.0之后, 一定要加一个白名单, 代表, 当前APP可以跳转到哪些APP-->