利用Scheme 启动APP

�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判断,处理不同的操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容