本文共 1584 字,大约阅读时间需要 5 分钟。
由于苹果推出了“沙盒机制”,各个APP之间不能互相访问,但是我们在使用时经常会出现APP之间跳转的情况,这就是URL Scheme的用处了
URL Scheme类似于URL,可以通过该APP的URL Scheme来定位到该APP,当然定位只是最基本的用法
things:///add?title=正文内容¬e=备注
things
,它是启动一个应用的URL,比如:weixin
//
或者///
add
,指打开该APP后进行的动作title
和note
=
&
weixin:
things://B/post
,将会直接使用B号并且在发布文章页面,而如果是things:///post
,就不会切换到B号。也就是说///
是//
的一种省略使用场景的形式添加
使用
查看用户是否安装该APP
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"***://***"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"***://***"]]; }else{ //提示用户未安装app }
如果其他APP打开了自己的APP,也会触发自己的代理方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url NS_DEPRECATED_IOS(2_0, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED; - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED; - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options NS_AVAILABLE_IOS(9_0); // no equiv. notification. return NO if the application can't open for some reason
为了防止APP疯狂遍历用户手机上的APP,窥探隐私,iOS 9后苹果为URL Scheme添加了白名单,开发者需要在白名单中注册自己APP要用到的URL Scheme,而白名单是有数量限制的,最多50个,在iOS 9中不在白名单中注册的话,利用URL Scheme是打不开其他APP的
转载地址:http://gkkti.baihongyu.com/