iOS開發之NewsstandKit.framework的使用
1.系統提供NewsstandKit.framework來支持newsstand類型的程序,就是在sprint board上看到在書架中的程序。提供有NKLibrary, NKIssue和NKAssetDownload的類。其中NKLibrary用來管理Newsstand的內容(比如,當前閱讀的issue,當前所有 的issue等);NKIssue用來表示一期刊物,您可以將刊物的URL,包裝成NSURLRequest,set給NKIssue的對象。
NKIssue還可以很方便的管理刊物的狀態(比如None, Downloading-下載中,Available-可用)。NKAssetDownload,可用于刊物的下載。它的 delegate符合NSURLConnectionDownloadDelegate的協議,這個協議中有三個方法:connection:didWriteData:totalBytesWritten:expectedTotalBytes:這個方法可以用來做 進度管理。
connectionDidResumeDownloading:totalBytesWritten:expectedTotalBytes:方法可以 用來做續傳。
connectionDidFinishDownloading:destinationURL:方法表明下載已完成,可以更新界面的 Issue狀態。
NewsstandKit是屬于系統級別的,因此在app切換到后臺或退出的時候,也會由系統選擇繼續下載。
如果使用ASIHttpRequest來下載的話也是沒有問題的,但是沒有后臺下載,issue狀態管理也需要自己來做。
2. 后臺下載只能使用Newsstand Kit的framework實現。關鍵是自動下載。Newsstand類型的app可由push notification來觸發下載流程。前提是注冊push功能的時候,加上Newsstand的key。
像正常的push notification一樣,app在前臺,后臺,或退出狀態下都可以收到。前臺的很簡單,在 didReceiveRemoteNotification的方法中,彈一個alert,問用戶是否需要下載;或者直接下載都可以(我之前的做法是會將要 下載的issue的信息包裝到push notification的message body中)。如果ap是退出狀態下的話,收到newsstand的push notification,app會直接在后臺啟動(這個你是看不到的),然后會走didFinishLaunchingWithOptions的方 法,option會帶入參數,您可以通過它獲取信息。然后就可以啟動下載。