iOS的应用间跳转,项目A内点击按钮,或者其他操作,唤醒项目B,项目B做一定的响应操作。
一、配置信息
两个应用间通信,需要遵循同一个协议规范,类似于微信第三方登录,需要在Info.plist中添加白名单。
首先,在项目B的
Info.plist
的URL types
中添加一组数据,如下图所示
openURL
为双方设定的共同遵循的协议名字,可以随意设置,但不要和其他的重复,最好是项目A的名称。
URL identifier
为项目A的Bundle identifier
,可以在项目A的TARGET
里复制过来
二、触发跳转操作
在项目A中需要实现跳转的操作中,比如按钮的点击事件中,实现以下代码
- (void)tapOpenURL{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"openURL://"] options:@{} completionHandler:^(BOOL success) {
// success to do
}];
}
@“openURL://"
中,openURL
为项目B中配置的共同协议,可以在这个url后拼接想要传递的参数
三、url回调处理
以上完成,在项目B的AppDelegate
里实现应用url的回调方法,
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
NSLog(@"=========%@========",url);
// 微信登录
// return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
return YES;
}
在这里可以获得从项目A中传递过来的url,并取得参数,然后就可以做相应的各种处理了。
//iOS10后,下面的方法被废弃了,用上面的那个方法取代
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return YES;
}