�Scheme就是一个url的起始位置,例如http://www.baidu.com的scheme就是http://
苹果利用url的scheme在系统内部定位应用。so,我们可以为自己应用注册一个scheme供其他应用打开。
例如:现有两个APP,APP1,APP2,在APP1中打开APP2,其实只需以下步骤就可以实现这以简单功能,
1.首先在APP2中info中定义自身的scheme
identifier:命名方式为反域名格式
scheme:应用自身的scheme,供其他应用使用
注:当系统内部应用的scheme相同时,后安装的应用会被打开,因为后安装的scheme会覆盖现在安装的应用的scheme
我们将identifier填入:com.21g.test 将schemes填入:APP2
2.在APP1中通过openURL 方法打开APP2
例:
if([[UIApplication sharedApplication] canOpenURL:[NSURLURL WithString:@"APP2://"]]) {
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"APP2://"]];
}else{
NSLog(@"本地没有此应用");
}
注:因为iOS 9限制了http的访问,所以要讲scheme加入白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<string>app scheme</string>
<string>app scheme2</string>
</array>
当app2被其他应用打开的时候,会在APPDelegate中触发下列方法(iOS9.0以后):
- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options //iOS 9.0后 直接调用此方法
- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(nullableNSString*)sourceApplication annotation: //iOS 9.0以下 调用此方法
当一个应用定义多个Scheme时,例如:
weixin:// 直接进入APP
weixin://search 直接进入APP后 打开搜索功能
weixin://pay 直接进入APP后 打开支付功能
我们可以在代理方法中获取URL,根据url判断,处理不同的操作。