我们在打开一个URL或者跳转到另一个APP的时候会用到一个跳转Api
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@""] options:@{} completionHandler:nil];
这个Api的第一个参数是URL或者App配好的url scheme,第二个参数是一个字典,这个是用来通信的参数,在Appdelegate的代理中可以获取到,第三个参数是一个block回调,用一个bool值来告诉结果。
当我们在另一个APP的时候,获取到请求的URL的请求参数,进行处理;例如app之间的跳转可以写成millertest://one 或者 millertest://two来区分不同的路由,options来获取请求参数,是不是和一个get或者post的请求很像啊,一个路由和一个请求参数组成。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {
// 通过url的host判断需要跳转的页面进行处理
if ([url.host isEqualToString:@"one"]) {
}
if ([url.host isEqualToString:@"two"]) {
}
return YES;
}
这个方法本身很简单,没什么太多可以讨论的,但是苹果的封装思想可以来给我借鉴一下;最近的APP都在强调组件化,模块之间解耦独立起来,那么在它们建立通信的时候我们可以参考苹果设计思想了;首先要有一个注册中心类似于[UIApplication sharedApplication] ,把所有的组件抽象成路由注册进去,然后通信的时候传入字典参数,回调结果处理时采用类似的block。在平时封装类和优化代码时,可以多参考苹果的设计思想和代码框架。
网友评论