我无法理解这种方法的工作原理.
从文档中,它指定:
canOpenURL:返回应用程序是否可以打开给定的URL资源.
- (BOOL)canOpenURL:(NSURL *)url
参数url标识给定资源的URL对象.URL的方案 - 可能是自定义方案 - 标识哪个应用程序可以处理URL.
如果没有可用的接受URL的应用程序,则返回值NO; 否则,返回YES.
讨论此方法保证在调用openURL:时,将启动另一个应用程序来处理它.它不保证完整的URL有效.
可用性适用于iPhone OS 3.0及更高版本.在UIApplication.h中声明
具体来说,如果它:
保证如果调用openURL:,将启动另一个应用程序来处理它.
然后,例如,如果我传入tel://HELLOWORLD
,则返回YES
,当我尝试时openUrl
,电话应用程序不会调用它.什么都没发生,所以我假设在尝试拨号时,完整的URL无效.
我知道它没有验证完整的URL,但是根据设计,如果我无法拨打该号码,为什么它没有显示错误或其他什么?
基本上我想知道的是:它究竟是什么验证?
我不相信它只是检查处理程序类型和支持该特定处理程序的应用程序(例如,tel://
在这种情况下不适用于iPod Touch).
验证不是此功能的目的.它只检查是否有为此url 方案注册的应用程序.
例如,在iPod touch或iPad,没有手机应用程序,从而canOpenURL
将返回NO
的tel:
网址.
或者,如果您要求提供带有该foo:
方案的网址,如果用户设备安装了声称处理此方案的任何应用程序,则它将返回true.
它无法验证网址,因为它不了解该foo
方案或下一个应用程序开发人员提出的任何方案.此时您也不想加载应用程序以验证URL.