iOS上自定义URL Schemes

   iPhone上URL Schemes的作用为应用程序提供了一个其他应用程序或者safari可以启动他的方法.就像Android上intent一样.只不过Intent的功能要比URL Schemes强很多.多为一个多任务的操作系统,苹果还有很长的路要走.虽然他一直用耗电作为借口.但实际上,iPhone4在使用过程中并不省电.... 回到话题.

     原理很简单,首先Schemes是在你的应用程序的info.plist里面定义的,在安装应用程序后.应用程序可以解析你的info.plist,如果检测到CFBundleURLTypes,会将相应Scheme注册到系统里面。如果有应用程序通过[[UIApplication sharedApplication] openURL:url]打开了safari或者直接在safari里面输入URL.系统会检测URL,然后对照已经注册的scheme来启动相应的应用程序.比较常见的scheme有http,mailto,tel,sms. 当然你可以自己定义一个.

  被启动的应用程序会调用

  -(BOOL)application:(UIApplication*) application handleOpenURL:(NSURL *)URL  (4.2以前的iOS)

  或者

  - (BOOL)application:(UIApplication *)application openURL:(NSURL  *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation (4.2以后的iOS)

 

  这个函数返回的是bool值,他的返回值指明了是否根据URL的内容是否合法来打开指定的应用程序.当你的应用程序定义了一个scheme可以让别人打开的话,并且需要接受一些参数作为启动参数的时候.这是非常危险的.因此需要对接受到的URL进行检查,如果符合你的要求,那就打开应用程序,如果不符合,可以拒绝打开!

  原理解释完了,如果你懂了,继续看,不懂再看一边@_@.

   要实现这么一个功能,具体步骤如下:

    (1)在info.plist里面,添加 CFBundleURLTypes,然后在生成的URL Scheme输入你自己的定义的Scheme

  (2)在info.plist 里面添加CFBundleURLName;他是你的scheme的一个别名.具体如下

 

  好吧,编译上传模拟器或者真机,在safari里面输入 schemes://url 来测试下能否启动你的应用程序^_^

  上述例子为todolist://balabala..

 

 

你可能感兴趣的:(ios,Scheme,application,url,iPhone,Safari)