APP之间的交互

一、Scheme

    启动App主要用到是自定义Scheme.

    Scheme就类似确定了这个App所在的位置,程序就能找到它。

    添加Scheme:

    

二、其他配置

    iOS9之后需要在发起端添加白名单(即AppOne 唤起AppTwo在AppOne中添加)

    

    LSApplicationQueriesSchemes

三、代码

 NSURL *appBUrl = [NSURL URLWithString:@"/*自定义的Scheme*/://"];
    
    if ([[UIApplication sharedApplication] canOpenURL:appBUrl]) {
        // 3. 打开应用程序App-B
        [[UIApplication sharedApplication] openURL:appBUrl
                                           options:@{}//传空即可
                                 completionHandler:^(BOOL success) {
                                     NSLog(@"打开成功");
                                 }];
    } else {
        NSLog(@"没有安装");
    }


/*iOS10之前用的是 [[UIApplication sharedApplication] openURL:appBUrl];
  不过被弃用了

  - (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS(3_0);

// Options are specified in the section below for openURL options. An empty options dictionary will result in the same  这里也说的很清楚了字典传空就和以前的方法一样了。
// behavior as the older openURL call, aside from the fact that this is asynchronous and calls the completion handler rather
// than returning a result.
// The completion handler is called on the main queue.
- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options completionHandler:(void (^ __nullable)(BOOL success))completion NS_AVAILABLE_IOS(10_0) NS_EXTENSION_UNAVAILABLE_IOS("");
 

*/

四、具体调到某一个控制器

NSURL *appBUrl = [NSURL URLWithString:@"AppTwoScheme://starSecondContrller"];//添加后面的就可以区分了

//在AppTwo中 AppDelegate.m

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    UINavigationController *rootNav = (UINavigationController *)self.window.rootViewController;
    
    NSLog(@"%@",url.absoluteString);//就能得到URL
    
    return YES;
}

转载于:https://my.oschina.net/langzhouzhou1/blog/1573174

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值