zoukankan      html  css  js  c++  java
  • 应用间跳转

    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的APP
    25     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的URLSchemes
    11     // 使用这个方法,需要先设置白名单(iOS9开始),否则调用的时候,不管用户是否下载,都返回NO
    12     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的URLSchemes
    21     // 使用这个方法,需要先设置白名单(iOS9开始),否则调用的时候,不管用户是否下载,都返回NO
    22     if([self.application canOpenURL:[NSURL URLWithString:@"toapp://"]]){
    23         [self.application openURL:[NSURL URLWithString:@"toapp://1"]];
    24     }
    25     else{
    26         NSLog(@"您还未下载此APP");
    27     }
    28 }
  • 相关阅读:
    在C语言中,double、long、unsigned、int、char类型数据所占字节数
    SIFT算法的应用--目标识别之Bag-of-words模型
    公司笔试客观题
    程序的内存分配 CC++
    C++编程练习(14)-------“单例模式”的实现
    SSH框架:同一个工程之前可以正常运行,现在不能
    严重: Exception starting filter struts2 Unable to load configuration.
    Oracle SQL Developer出现错误 【ora-28002:the password will expire within 7 days】的解决办法
    jQuery 属性操作
    前端模块化开发应用——日历组件开发
  • 原文地址:https://www.cnblogs.com/panda1024/p/6081587.html
Copyright © 2011-2022 走看看