iOS App之間跳轉


1.先來看看效果,這里做了三個功能

  1. 從MyApp跳轉到YourApp
  2. 從MyApp跳轉到YourApp的指定頁面
  3. 從YourApp使用跳轉url的方式跳回MyApp

2.實現app之間的跳轉需要注意兩方面

  1. 實現跳轉的代碼
  2. 配置url及url白名單

3首先來講url和白名單的設置

  1. 創建兩個工程分別叫MyApp和YourApp
  2. 設置MyApp的url,設置的方法有兩種,都是等效的,如下圖
  3. 設置YourApp的url
  4. 設置MyApp的白名單
    1. 在info.plist中添加LSApplicationQueriesSchemes的數組,其中有含有一個string類型的數據,即為你要跳轉的另外一個App的url,我們要從MyApp跳轉到YourApp,我們把YourApp的url設置為your,所以這里要寫入YourApp的url“your”
  5. 設置YourApp的白名單,我寫的demo中有添加用url跳轉回MyApp的功能所以要設置YourApp的白名單,如果沒有的話是不用設置的,系統自帶的有跳轉回初始APP的方法
  6. 注意不要把白名單的key寫錯了

4.實現跳轉的代碼

  1. MyApp中的代碼
    1. - (IBAction)gotoYoueApp:(UIButton *)sender {
          // 1.獲取application對象
          UIApplication *app = [UIApplication sharedApplication];
          
          // 2.創建要打開的應用程序的URL
          NSURL *url = [NSURL URLWithString:@"your://aaa"];
          
          // 3.判斷是否可以打開另一個應用
          if ([app canOpenURL:url]) {
              // 能,就打開
              [app openURL:url];
          }else{
              NSLog(@"打開應用失敗");
          }
      }
  2.  YourApp中的代碼
    1. 寫在AppDelegate.m中
    2. //如果是通過URL打開的本應用,則下面的方法會被執行
      -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
      {
          //獲取window中加載的根視圖,也就是那個導航
          UINavigationController *navi = (UINavigationController *)self.window.rootViewController;
          //為了觸發push第二個界面的segue,需要拿到
          //左邊灰色背景的那個控制器的引用
          //而灰色的那個控制器是navi的根視圖控制器
          //vc代表灰色的那個界面
          ViewController *vc = (ViewController *)navi.topViewController;
          
          //1.獲取請求的URL地址
          NSString *urlString = [url absoluteString];
          
          //2.判斷地址中包含的信息為bbb則打開第二個頁面
          if ([urlString hasPrefix:@"your://bbb"])
          {
              [vc performSegueWithIdentifier:@"pushWhiteSegue" sender:nil];
          }
          
          return YES;
      }
      
      
      //新的用於響應從URL跳轉過來的方法
      -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
      {
          //獲取window中加載的根視圖,也就是那個導航
          UINavigationController *navi = (UINavigationController *)self.window.rootViewController;
          //為了觸發push第二個界面的segue,需要拿到
          //左邊灰色背景的那個控制器的引用
          //而灰色的那個控制器是navi的根視圖控制器
          //vc代表灰色的那個界面
          ViewController *vc = (ViewController *)navi.topViewController;
          
          //1.獲取請求的URL地址
          NSString *urlString = [url absoluteString];
          
          //2.判斷地址中包含的信息為bbb則打開第二個頁面
          if ([urlString hasPrefix:@"your://bbb"])
          {
              [vc performSegueWithIdentifier:@"pushWhiteSegue" sender:nil];
          }
          return YES;
      }

       

    3. 想要跳轉到MyApp的時候
    4. - (IBAction)goBackMyApp:(id)sender {
          UIApplication *app = [UIApplication sharedApplication];
          NSURL *url = [NSURL URLWithString:@"my://"];
          if ([app canOpenURL:url]) {
              [app openURL:url];
          }else{
              NSLog(@"跳回到myapp失敗");
          }
      }

 5.demo:https://github.com/TigerCui/MyAppJumpToYourApp.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM