情景:客戶端A跳轉(zhuǎn)到客戶端B
客戶端B:
1、在URL Type添加URL Schemes---注意URL Schemes要保證唯一性,不能與其他app相同,否則可能會跳轉(zhuǎn)到其他App,如你的App名字叫BaiXingShengHuo,那么你的URL Schemes可以設(shè)置為iOSBaiXingShengHuoApp

截屏2021-03-05 上午10.15.17.png
如上設(shè)置后,在網(wǎng)頁搜索
iOSBaiXingShengHuoApp://,就可以跳轉(zhuǎn)到客戶端B.(h5頁面也可以根據(jù)iOSBaiXingShengHuoApp://這個跳轉(zhuǎn)到客戶端B)2、跳轉(zhuǎn)到特定頁面
比如我們需要跳轉(zhuǎn)到某一個詳情頁面,
iOSBaiXingShengHuoApp://pageType?name=tom其打開App會調(diào)用AppDelegate的代理方法:
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
我們可以拿到參數(shù)url,url為:iOSBaiXingShengHuoApp://pageType?name=tom接下來我們可以對其進(jìn)行操作。
- url.scheme:可以獲取到iOSCompanyApp,我們可以對其判斷然后進(jìn)行后續(xù)操作。
- url.host:可以獲取到pageType,個人覺得,可以在此判斷需跳轉(zhuǎn)的頁面。
- url.query:可以獲取到name=tom,在此可以進(jìn)行切割字符串,獲取參數(shù)。
/**獲取Window當(dāng)前顯示的ViewController*/
- (UIViewController*)currentViewController{
//獲得當(dāng)前活動窗口的根視圖
UIViewController* vc = [UIApplication sharedApplication].keyWindow.rootViewController;
while (1)
{
//根據(jù)不同的頁面切換方式,逐步取得最上層的viewController
if ([vc isKindOfClass:[UITabBarController class]]) {
vc = ((UITabBarController*)vc).selectedViewController;
}
if ([vc isKindOfClass:[UINavigationController class]]) {
vc = ((UINavigationController*)vc).visibleViewController;
}
if (vc.presentedViewController) {
vc = vc.presentedViewController;
}else{
break;
}
}
return vc;
}
在swift中通過url打開App,調(diào)用方法為
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts;
實現(xiàn)
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
let context = URLContexts.first
let vc = self.currentVC()
let detailVC = MJDetailViewController.init()
if vc.isKind(of: UINavigationController.self) {
let navi : UINavigationController = vc as! UINavigationController
navi.pushViewController(detailVC, animated: true)
}
}
客戶端A:
NSURL *url = [NSURL URLWithString:@"iOSBaiXingShengHuoApp://"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
//設(shè)備安裝了客戶端B
//打開url
// [[UIApplication sharedApplication] openURL:url];
[[UIApplication sharedApplication]openURL:url options:@{} completionHandler:^(BOOL success) {
}];
}else {
//設(shè)備沒有安裝客戶端 B,打開AppStore去下載
NSString *appid = @"123456";
NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/cn/app/id%@", appid];
NSURL *url = [NSURL URLWithString:str];
[[UIApplication sharedApplication]openURL:url options:@{} completionHandler:^(BOOL success) {
}];