1.1 iOS 9新特性简述

iOS 9是iOS系统的一次重大升级,增强了iOS设备的安全性并支持新增传感器的硬件编程接口。多任务处理能力也更加优秀强大。熟悉iOS 9的这些改变支持,可以更好地帮助读者学习iOS应用程序的开发。

1.1.1 新增压力传感器编程接口

在iPhone 6s 问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫作3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互。Xcode7开始支持3D Touch的开发,遗憾的是,模拟器并不能进行3D Touch的操作调试,开发者需要在真机上进行测试调试。

3D Touch功能在用户维度上主要有两个方面的应用,第一部分的应用是用户可以通过3D手势,在主屏幕上的应用图标处,直接进入应用的某些功能模块。这个功能就例如用户可以重按系统日历App,会在日历App图标旁边出现一个菜单,单击菜单我们可以进入相应的功能单元。第二部分的应用是对App 的一个优化,用户可以通过3D Touch手势在View视图上来预览一些预加载信息,这样的设计可以使App 更加简洁大方,交互性也更强。如图1-1所示。

图1-1 3D Touch的预加载视图

1.1.2 全新的搜索功能API

iOS 9为开发者提供了许多新的编程API,搜索功能的加强无疑是其中比较显眼的一个。首先,可以设想一下:如果在App中定义一种标识符,在Siri和搜索中,用户可以用这个标识符搜索到相应App,是不是很棒?再扩展一些,如果可以定义任意的数据,使其在搜索和Siri中可以快速检索到。更进一步,开发者甚至可以在开发者的网站中根据协议添加一些标志,使Apple的爬虫可以检索到,那样,即使用户没有安装App,也可以在搜索中获取到相应的信息,这是多么酷的事。

iOS 9提供了3种全新的搜索模式。

第1种搜索模式是使用NSUserActivity活跃元素类,开发者可以使用它来为应用程序添加活跃元素,也就是说,用户可以在搜索中根据活跃元素搜索到开发者的App。示例代码如下:

        //创建一个对象,这里的type用于区分搜索的类型
        NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityTy
    pe: @"myapp"];
        //显示的标题
        userActivity.title = @"我的app";
        // 搜索的关键字
        userActivity.keywords = [NSSet setWithArray: @[@"sea", @"rch"]];
        // 支持Search
        userActivity.eligibleForSearch = YES;
        //提交设置
        [userActivity becomeCurrent];

当用户通过相应的活跃元素找到App,并且激活App 时,系统会调用如下方法,开发者可以在其中做相应的逻辑操作。

        - (BOOL)application:(UIApplication *)application continueUserActivity:(NS
    UserActivity *)userActivity restorationHandler:
        {
         NSString *activityType = userActivity.activityType;
            if ([activityType isEqual: @"myapp"]){
              // Handle restoration for values provided in userInfo
              // do something
             return YES;
            }
            return NO;
        }

提示

这里的代码只是作为示例,读者可以不必深究其原理与使用方法,等读者学习完后面的章节,具备开发iOS实际应用的能力后,可以再来学习此段代码。

第2种搜索模式是采用CoreSpotlight框架,CoreSpotlight是一种更加自由的搜索方式,可以通过添加一些模型,将App 中的数据展示在搜索栏中,CoreSpotlight 框架类似提供了一些增、删、改、查的操作,开发者可以自由地进行搜索属性的设置。

第3种搜索模式为Web Markup模式,这个功能与App端开发关系不大,但是对App的推广却至关重要,这项技术可以让App关联一个网站,Apple通过爬虫来获取我们规定的一些标签值,无论用户是否安装了此App,在搜索时,都可以展示出相关信息。

1.1.3 更小、更快——全新的应用瘦身策略

Apple在iOS 9中引入了一套新的App瘦身方案,通过一些优化策略,尽可能地减小App安装包的体积。这部分的大多数工作是由AppStore来完成的,开发者并不需要付出太多额外的开销。

App的瘦身策略主要包括3部分。

第1部分为Slicing,这部分的主要原理是在不同的设备中下载安装不同的App包,各个App包副本中包含相应尺寸的素材。在Xcode中,开发者使用Asset Catalog管理素材文件,在提交应用市场后,AppStore系统会自动帮开发者生成各个尺寸包的App副本。

第2部分是使用BitCode编码,字节码文件是App程序的一种中间形式,Apple会对包含字节码的App进行二次优化,来进行相应的瘦身。

第3部分是On-Demand Resources,这是一种多级应用的设计思路,例如一个游戏,开发者可以将其分为一个个大小各异的资源包,用户只需下载一个小的引导程序,在程序内加载相应的资源包。这样就可以大大加快应用的下载安装速度。

1.1.4 使用更加安全的网络传输协议

随着iOS 9的推出和Xcode的升级,Apple将默认开发者使用Https的传输方式,相比Http的传输协议,这会增加一些安全性,对于开发者而言,一下子将Http 协议全部升级为Https协议不是一件容易的事,但是开发者可以通过Xcode的一些配置,使其支持Http的传输协议,这将是一种折中的方案。

具体Xcode的配置方式,在后面章节使用到时会向读者演示过程。