1.先來看看效果,這裡做了三個功能 2.實現app之間的跳轉需要註意兩方面 3首先來講url和白名單的設置 4.實現跳轉的代碼 5.demo:https://github.com/TigerCui/MyAppJumpToYourApp.git ...
1.先來看看效果,這裡做了三個功能
- 從MyApp跳轉到YourApp
- 從MyApp跳轉到YourApp的指定頁面
- 從YourApp使用跳轉url的方式跳回MyApp
2.實現app之間的跳轉需要註意兩方面
- 實現跳轉的代碼
- 配置url及url白名單
3首先來講url和白名單的設置
- 創建兩個工程分別叫MyApp和YourApp
- 設置MyApp的url,設置的方法有兩種,都是等效的,如下圖
- 設置YourApp的url
- 設置MyApp的白名單
- 在info.plist中添加LSApplicationQueriesSchemes的數組,其中有含有一個string類型的數據,即為你要跳轉的另外一個App的url,我們要從MyApp跳轉到YourApp,我們把YourApp的url設置為your,所以這裡要寫入YourApp的url“your”
- 設置YourApp的白名單,我寫的demo中有添加用url跳轉回MyApp的功能所以要設置YourApp的白名單,如果沒有的話是不用設置的,系統自帶的有跳轉回初始APP的方法
- 註意不要把白名單的key寫錯了
4.實現跳轉的代碼
- MyApp中的代碼
-
- (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(@"打開應用失敗"); } }
-
- YourApp中的代碼
- 寫在AppDelegate.m中
-
//如果是通過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; }
- 想要跳轉到MyApp的時候
-
- (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