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也許不能被打開