应用程序间跳转

2017-11-23  本文已影响58人  翻这个墙

应用程序间跳转

1. 什么是应用间跳转,有什么作用?

    - 应用场景
        1. 使用第三方用户登录,需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名"
        2. 应用程序推广,网易彩票,设置-推荐应用-有很多应用程序图标如果本机已经安装过,会直接跳转到另外一个应用程序, 软件的广告,推广结果,后续会有一些列的金钱上的结算
        3. 支付宝,第三方支付,淘宝,电话费充值。。。

2. 应用程序间跳转实现?

直接打开对应APP的scheme即可

  1. 概念须知

     > URL : 统一资源定位符
         scheme(协议头) : 决定通过什么方式查找资源 http:// ftp:// tel:// file://
         path(路径) : 资源路径 www.baidu.com 192.168.1.1/资源 110 /User/Desktop
    
  2. 设置方式

     > 默认情况下应用程序是没有自己的URL的,如果想要拥有自己的URL,需要设置URL
         项目 -> info -> URL Types -> URL Scheme
    
  3. 打开方式

    // 跳转到其他应用程序
    // 打电话 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(@"没有安装,可以再给定下载地址,前往");
    }
    
  4. 跳转到对方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
    
  5. iOS9.0跳转适配

     在info.plist文件中添加LSApplicationQueriesSchemes字段 ,是数组类型
    
  6. 跳回原程序代码

     <!--// iOS9.0以前, 直接通过以下的代码, 就可以打开对应的APP-->
     <!--// 在iOS9.0之后, 一定要加一个白名单, 代表, 当前APP可以跳转到哪些APP-->
    


































上一篇下一篇

猜你喜欢

热点阅读