app之間的跳轉

1.從本app中打開另外一個app微信

NSURL *url = [NSURL URLWithString:@"appto2://1314hahada.mintian/home/test/a?abc=123"];
    [[UIApplication sharedApplication] openURL:url
                                       options:nil
                             completionHandler:^(BOOL success) {
                                 NSLog(@"成功:%d",success);
                             }];

其中appto2爲要打開的app的schemeapp

2.從另外一個app跳轉到本app時會走application的代理方法url

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
    NSLog(@"打開url---:%@",url.absoluteString);
    return YES;
}

經過url能夠得到必定的參數信息,這裏能夠將sourceapp的scheme信息放在url的參數裏面,方便跳回,options裏面包含sourceapp的少許信息代理

3.一個app能夠在url types裏面配置多個scheme,這些scheme都是屬於本app的,區別就是在於,weixin對應的scheme會在從微信返回時使用,以此類推。code

這些scheme信息能夠經過獲取info.plist的信息獲取it

//獲取info.plist的信息
    NSDictionary *dic = [[NSBundle mainBundle] infoDictionary];
    NSLog(@"%@",dic[@"CFBundleURLTypes"]);

4.在info.plist中配置白名單的做用,不是爲了打開某個app,而是爲了判斷某個app能不能被打開,白名單的數量限制是50.io

//LSApplicationQueriesSchemes 白名單
//canOpenURL: 判斷是否可以打開某個app
//openurl:直接打開某個app,此app也許不能被打開
相關文章
相關標籤/搜索