一种新的方式来分发杂志 Newsstand
应用程序设置
基本应用
前提是要有跟随本教程XCode 4.2 SDK安装和iOS 5。即使大多数的新功能,可以直接在iPhone模拟器测试,推动notifcations和在应用程序购买本教程的一部分需要iOS开发者账户。
所以让我们从一个简单的方法:
打开XCode和创建一个新的“空”的项目,您可以自由地选择目标设备iPhone和iPad之间。然后创建一个新的视图控制器,称之为StoreViewController,进入应用程序委托实例化一个新对象,该控制器和把它放进一个新的导航控制器。最后定义一个新的图标,把它添加在您的项目并运行在模拟器。最明显的结果是这样的,我们的图标在跳板和应用程序显示一个空的屏幕:
启用的报摊
现在我们需要指示系统,我们希望我们的应用程序要兼容报摊。
第一个要求是创建一个特定于报摊的图标,这个图标是不同于通常的应用图标,它必须出现在一个我们的杂志的封面。在我们的例子中,我们准备了一个简单的130 x 190像素图标和进口在XCode。
此外,我们需要添加或修改三个新领域应用信息plist。第一个新字段是UINewsstandapp,必须添加和设置为YES。
第二个是创建或修改CFBundleIcons字典项通过添加报摊图标。最后,如果我们要支持背景下载新的资产,我们需要添加的应用背景报摊代码功能。新添加的plist物品将出现在xml语法为:
<key>CFBundleIconFiles</key>
<array>
<string>icon.png</string>
<string>icon@2x.png</string>
</array>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon.png</string>
<string>icon@2x.png</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
<key>UINewsstandIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon_newsstand.png</string>
</array>
<key>UINewsstandBindingEdge</key>
<string>UINewsstandBindingEdgeLeft</string>
<key>UINewsstandBindingType</key>
<string>UINewsstandBindingTypeMagazine</string>
</dict>
</dict>
<key>UINewsstandApp</key>
<true/>
<key>UIBackgroundModes</key>
<array>
<string>newsstand-content</string>
</array>
注意:
CFBundleIconFiles部分仍然存在为了向后兼容,但在新的iOS 5语法已经复制在CFBundlePrimaryIcon CFBundleIcons节。这些新的设置出现在XCode如下图所示,我们这里显示的值而不是关键参数的名称信息,只是为了让你看看新图标文件结构是标有一个iOS 5标签:
让我们构建并运行应用程序再一次,结果将出现如下:我们原来的图标被罢免了跳板和替换为封面像图标在报摊组;如果我们打开组然后我们就能在我们的应用程序图标,点击移动它到前台。注意,经典的风格图标仍系统所需的,因为它们被用于聚光灯,推送通知,在应用程序商店。
显示和下载杂志
现在是时候开始编写一些代码,将我们的项目加入NewsstandKit框架。
别忘了导入NewsstandKit标题的分类,需要它:
#import <NewsstandKit/NewsstandKit.h>
为简单起见,我们假设列表中可用的问题(所有免费的)是在一个plist文件,可以从服务器下载的出版商。所以为了我们定义一个类称为出版商将照顾下载当前的项目列表。一旦项目被下载他们将提交给用户。的plist是相当简单的:它是一个数组,每个字典词典代表一个问题通过提供识别名称(独特的)、标题(对用户可见),出版日期和url缩略图封面图片和内容(PDF文件)下载。
<dict>
<key>Name</key>
<string>Magazine-0</string>
<key>Title</key>
<string>Magazine Issue 0</string>
<key>Date</key>
<date>2011-10-01T06:00:00Z</date>
<key>Cover</key>
<string>http://www.viggiosoft.com/media/data/blog/newsstand/magazine-0.png</string>
<key>Content</key>
<string>http://www.viggiosoft.com/media/data/blog/newsstand/magazine-0.pdf</string>
</dict>
在启动时将下载的StoreViewController从服务器的问题清单,解析它并将提供这个表中列出。同时它将下载覆盖缩略图和表中会显示它们。这是很典型的代码还不相关,所以我不会解释报摊的细节。结束时的加载视图将以这种方式出现。你只会这个项目列表一起盖和暗示邀请丝锥下载。