上篇博客App启动另外一个App(Android) 中完成了Android开发的App跳转,但是苦逼的是,在公司里不仅要做Android,还要做iOS,偶尔还得去做JAVA后台,所以这里一并把iOS的代码贴上来.

iOS的App跳转要比Android复杂一些,毕竟iOS自诩要比Android更安全,所以iOS的跳转基本要分三部:

  1. B App在系统注册自己的Url以供其他App进行调用(访问)
  2. A App在系统中设置白名单(iOS9以后跳转都需要设置这个,这也是为什么平时跳转大厂的App需要设置的缘故)
  3. A 中书写跳转的代码

1. 在B App注册自己的url

打开B App 的info.plist文件,做以下操作:

这里稍微说一下步骤:
红色数字1  新建一个URL types 改为Array类型,或许Xcode会自动变为Array

红色数字2 新建一个item 这里需要是Dictionary类型

红色数字3  新加你一个URL Schemes 需要是Array类型
红色数字4  新建一个字符串类型的item,值的话随意起,但是必须跟A App plist文件中的值要完全一样

2. 在A App注册自己的url

打开A App 的info.plist文件,做以下操作:

在 LSApplicationQueriesSchemes 中增加一行item,属性为String, 后面的值填写B App注册的那个值
如果在A App的plist文件没有 LSApplicationQueriesSchemes 这个值,那么就新建一个,设置为Array属性

3. 在A App中书写跳转的代码

3.1 如果需要带参数的话,用这个方法
  -(void)gotoAnotherApp{
      char c[50] = {0};
      sprintf(c, "%s", "AppB://参数1=值1&参数2=值2");
      //  带参数的传递方式
      NSURL* urlLocal = [NSURL URLWithString:[NSString stringWithUTF8String:c]];
      // 判断是否可以启动该 url
      if([[UIApplication sharedApplication] canOpenURL:urlLocal])
      {
        [[UIApplication sharedApplication] openURL:urlLocal];
      }else{
        NSLog(@"找不到App");
        // 跳到 appStore 下载
        NSURL* urlAppStore = [NSURL URLWithString:@"https://itunes.apple.com/cn/app/?mt=8"];
        [[UIApplication sharedApplication] openURL: urlAppStore];
      }
   }
  
3.2 如果不需要带参数的话,用这个方法
  -(void)gotoAnotherApp
    {
      //  不带参数的传递方式
      NSURL* urlLocal = [NSURL URLWithString:@"pssmanager://"];
      // 判断是否可以启动该 url
      if([[UIApplication sharedApplication] canOpenURL:urlLocal])
      {
        [[UIApplication sharedApplication] openURL:urlLocal];
      }else{
        NSLog(@"找不到App");
        // 跳到 appStore 下载
        NSURL* urlAppStore = [NSURL URLWithString:@"https://itunes.apple.com/cn/app/?mt=8"];
        [[UIApplication sharedApplication] openURL: urlAppStore];
      }
    }