應用間跳轉,應用跳轉

來源:互聯網
上載者:User

應用間跳轉,應用跳轉
1、配置URLSchemes

    被跳轉至的應用要配置URLSchemes,其他應用根據此應用的URLSchemes跳轉至此應用。

    一個APP可以配置多個URLSchemes,這樣其他APP無論寫哪個URLSchemes,都能跳轉至此應用。

方式1:配置Info資訊,其實本質修改的還是Info.plist檔案

方式2:直接修改Info.plist檔案

2、配置白名單

發起跳轉的APP使用openURL直接進行跳轉,iOS9開始要先判斷使用者是否下載了跳轉至的APP,使用

canOpenURL方法進行判斷,但使用canOpenURL的前提是要配置要跳轉至APP的白名單,否則無論使用者是否下載,都返回NO。

注意:我們一般先使用canOpenURL進行判斷,然後再進行跳轉;但:可以直接使用openURL進行跳轉,白名單不用配置,也不用canOpenURL進行判斷。

執行跳轉的APP配置白名單(蘋果要求最多配置50個白名單):

或者使用代碼來添加白名單:

 

1 <key>LSApplicationQueriesSchemes</key>2 <array>3       <string>toapp</string>4 </array>

 

3、被跳轉的應用

AppDelegate實現以下方法:

 1 // 當此APP被其他APP開啟時調用 2 // app: 3 // url:開啟APP的URL,即其他APP開啟此APP時使用的URL,裡面可能包含一些參數 4 // options: 5 // return:是否同意開啟APP 6 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{ 7      8     NSString *urlString = url.absoluteString; 9     NSRange xieyitouRange = [urlString rangeOfString:@"://"];10     NSRange range = NSMakeRange(0, xieyitouRange.location + xieyitouRange.length);11     12     // 截取其他APP傳過來的參數13     NSString *queryString = [urlString substringFromIndex:range.location + range.length];14     UITabBarController *tabbarVC = (UITabBarController *)self.window.rootViewController;15     16     // 根據其他APP傳過來的不同參數,執行不同的操作17     if([queryString isEqualToString:@"0"]){18         tabbarVC.selectedIndex = 0;19     }20     else{21         tabbarVC.selectedIndex = 1;22     }23     24     // 回跳,操作執行完,跳回到開啟此APP的APP25     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{26         [app openURL:[NSURL URLWithString:@"fromapp://"]];27     });28     29     return YES;30 }
4、執行跳轉的應用

執行跳轉的代碼:

 1 - (IBAction)openURLRed:(id)sender { 2     // openURL直接開啟其他的APP,《toapp://》是要開啟的APP的URLSchemes,後面的0是參數 3     [self.application openURL:[NSURL URLWithString:@"toapp://0"]]; 4 } 5 - (IBAction)openURLGreen:(id)sender { 6     // openURL直接開啟其他的APP,《toapp://》是要開啟的APP的URLSchemes,後面的0是參數 7     [self.application openURL:[NSURL URLWithString:@"toapp://1"]]; 8 } 9 - (IBAction)canOpenURLRed:(id)sender {10     // 使用canOpenURL先判斷使用者是否下載了要開啟的APP,《toapp://》是要開啟的APP的URLSchemes11     // 使用這個方法,需要先設定白名單(iOS9開始),否則調用的時候,不管使用者是否下載,都返回NO12     if([self.application canOpenURL:[NSURL URLWithString:@"toapp://"]]){13         [self.application openURL:[NSURL URLWithString:@"toapp://0"]];14     }15     else{16         NSLog(@"您還未下載此APP");17     }18 }19 - (IBAction)canOpenURLGreen:(id)sender {20     // 使用canOpenURL先判斷使用者是否下載了要開啟的APP,《toapp://》是要開啟的APP的URLSchemes21     // 使用這個方法,需要先設定白名單(iOS9開始),否則調用的時候,不管使用者是否下載,都返回NO22     if([self.application canOpenURL:[NSURL URLWithString:@"toapp://"]]){23         [self.application openURL:[NSURL URLWithString:@"toapp://1"]];24     }25     else{26         NSLog(@"您還未下載此APP");27     }28 }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.