ios - app之间互相调用

2019-01-17  本文已影响0人  捕梦少女的梦想

场景:

实现:

用意:

当前App允许访问的App有哪些,即白名单。需要通信双方均设置为对方的scheme,否则当调用对方App时,系统会告诉你This app is not allowed to query for scheme。
调用者和被调用者均需要设置白名单,一方想调用,另一方需要也知道将被你调用 ,更为安全。


1.Target -> Info -> URL Types -> URL Schemes -> @"back"
2.LSApplicationQueriesSchemes(类型为array) -> @"tempApp"

@“back”为项目-A 的标识,白名单内容为项目-B的标识“ tempApp”
@"tempApp"为项目-B的标识,白名单内容为项目-A的标识“ back”

1.Target -> Info -> URL Types -> URL Schemes -> @"tempApp"
2.LSApplicationQueriesSchemes(类型为array) -> @"back"

- (void)evokeAppAction {
    NSString *customURL = @"tempApp://"; //tempApp = 自定义标示符
    
    if ([[UIApplication sharedApplication]
         canOpenURL:[NSURL URLWithString:customURL]])
    {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL] options:@{@"key":@"value"} completionHandler:nil];
    } else {
//
    }
}

在Appdelegate.m 文件中实现:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  if ([[url absoluteString] containsString:@"tempApp"]) {
// 进行对应页面跳转  
  }
  return YES;
}
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"back://"] options:dataDic completionHandler:^(BOOL success) {
      //返回授权程序成功~
    }];
至此,就可以愉快的从项目A和项目B互相调用了。
上一篇下一篇

猜你喜欢

热点阅读