版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.02.04 |
前言
NewsstandKit框架为
Newsstand
应用的客户端创建和管理资源。 使用户能够浏览和下载报纸和杂志,并针对移动设备进行优化查看。接下来几篇我们就一起看一下这个框架。
Overview
下面先看一下该框架的基本信息。
您可以使用NewsstandKit框架来开发Newsstand应用程序的客户端。 通过Newsstand,用户可以浏览最适合在移动设备上观看的报纸和杂志。
Newsstand Kit
框架有三个类:
- NKLibrary - 表示Newsstand问题的应用程序库。
- NKIssue - 代表图书馆出版物的问题。
- NKAssetDownload - 表示从应用程序的服务器下载(或已经下载)的资产。
资产可以是在线问题的组成部分,如HTML或图像文件。 它也可以是一个压缩的存档(例如ZIP文件),一旦解压缩,即可将问题的所有组件以一个即时显示的形式包含在内。
另外,框架将一个属性(通过一个类别)添加到NSURLConnection
类中。 该属性将URL连接与下载(或已经下载的)资产相关联。
注意:用户可以订阅一些出版物,并在推送通知可用时接收新发布。 但是,并不是所有的出版物都涉及订阅和推送通知。 例如,用户可以根据需要下载按次付费或免费的问题。 或者他们甚至可能不订阅出版物,但仍然有问题推到他们的设备上。
newsstand内容应用程序能够在后台运行,以开始下载或处理与资产相关的委托事件。 要请求此功能,请将newsstand-content
指定为应用程序的Info.plist
文件中UIBackgroundModes
属性的数组元素之一的字符串值。 该属性还使应用程序能够通过推送通知在后台启动。
以下步骤描述了当推送通知触发下载时获取newsstand内容的一般工作流程。 如果不包含推送通知,请跳过第一步:
- 当有新的事物下载时,应用程序的服务器端向客户端应用程序发送推送通知。
如果应用程序在传递通知时未在前台运行,则会在后台激活(或者在必要时启动到后台)以下载事物资源。 否则,您会像处理任何推送通知一样处理通知。 有关如何发送和处理推送通知的信息,请参阅 Local and Remote Notification Programming Guide。
- 客户端应用程序与其服务器进行通信,并获取URL以查找要下载的事物资产。也可能需要从服务器获取事物的名称和日期。在这个阶段,它也可能验证用户是否有资格订阅或执行任何其他所需的授权。
- 客户端获取共享的
NKLibrary
实例,并向其送 addIssueWithName:date:消息,并传入问题名称和日期。这一步创建一个代表问题的NKIssue对象并将其添加到库中。
- 客户端获取共享的
- 使用每个URL在应用程序的服务器上查找可下载的资源,客户端将创建一个NSURLRequest对象。
- 对于每个可下载的资产,然后向
NKIssue
对象发送一个 add<AssetWithRequest:消息,传入NSURLRequest
对象。这个调用返回一个NKAssetDownload对象。
- 对于每个可下载的资产,然后向
- 然后在
NKAssetDownload
对象上调用downloadWithDelegate:传递一个采用 NSURLConnectionDownloadDelegate协议的委托对象。
- 然后在
- 代理监视资产的下载并更新进度指示器。下载完成后,会处理下载的资源。
在将资产移至应用程序沙箱中指定的问题位置之前,处理可能涉及解压缩归档或其他操作。
在下载资产时,如果内存不足或用户强制退出应用程序,应用程序可能会被暂停,甚至完全终止。 应用程序(假设它具有newsstand-content
属性)稍后将重新启动到后台以处理完成下载或任何身份验证挑战或与其相关的错误。 这种情况下的程序如下:
- 启动应用程序时,可以使用UIApplicationLaunchOptionsNewsstandDownloadsKey键访问传递到应用程序的
launchOptions
字典中的数组: application:didFinishLaunchingWithOptions: 如果有数组,则包含导致启动的标识符。这些可能是已完成下载或无法完成下载的下载标识符。
- 启动应用程序时,可以使用UIApplicationLaunchOptionsNewsstandDownloadsKey键访问传递到应用程序的
- 它从NKLibrary对象的
downloadingAssets
属性遍历NKAssetDownload对象的数组,并在每个对象调用downloadWithDelegate:。 如果需要,应用程序可以使用上一步获取的资产标识符来检查哪些资产下载导致重新启动。
- 它从NKLibrary对象的
- NSURLConnectionDownloadDelegate对象正常处理资产下载。
NewsstandKit框架期望其方法的所有调用都在主线程上进行,NSURLConnectionDelegate方法也在主线程上调用。
下面看一下该框架的基本结构。
Topics
1. Classes
-
-
NKAssetDownload
类的实例表示正在下载(或已经下载)针对Newsstand 应用程序问题的资产。
-
-
-
NKIssue
类的实例表示newsstand内容应用程序的问题。
-
-
-
NKLibrary
类的实例表示newsstand内容应用程序的问题库。
-
2. Reference
后记
本篇已结束,后面更精彩~~~