小说漫画CG合集 For 守望先锋 APP今天提交了1.1版本,基本上核心的功能都做完了,所以想总结一下开发的过程,因此打算开始写这篇实战,分享我的开发过程以及过程中遇到的问题。
应用的下载地址:小说漫画CG合集 For 守望先锋
简单来说这是一个Tabbed Application,一共有5个Tab,分别展示背景故事,英雄故事,漫画,CG以及设置的内容。如图:

我会对每个Tab页面的实现进行一一介绍。那么就直接进入正题:今天要谈到的是立项,涉及到的内容有:
- 创建APP ID, Provision File等
- 创建Git,用于代码管理
- 创建工程
- 项目结构
- 编码规约
- CocoaPod及第三方类库介绍
- 预编译头文件
- 项目配置
- Info.plist 修改及介绍
创建APP ID, Provision File等
简述上有很多APP ID, Provisioning Profile创建的详细介绍,所以我就不贴图重复了,这里给出其中一个链接供大家参考App上架流程(2016最新) 需要说明的几点:
- 关于App ID:
- 请一定创建Explicit App ID,不要使用Wildcard App ID。App ID命名规则一般使用Organization Identifier(例如:com.xxxxxxxx) + Product Name(例如:owstorm), 比如这个应用可以命名为com.xxxxxxxx.owstorm。
- 在App Services中打开Push Notifications
- 关于Provisioning Profiles
- 请同时创建Development和Distribution Profile
- 这个应用中用到了Push Notifications,所以请同时创建Apple Push Notification service SSL (Sandbox & Production),可以参考iOS 推送证书设置指南
创建Git,用于代码管理
这个也是必须的,方便代码的版本管理,Github是公用的首选,所以大家可以试试。网上同样有很多介绍,这边提供两片供大家参考。
创建工程
创建工程,显然我们创建一个Tabbed Application
Create Tabbed Application Step1.png
在下一步中,需要注意的是Bundle Identifier,需要和定义的App ID一致 (也可以在Info.plist中修改)
Language 选择Objective-C, Devices选择iPhone。 本应用暂时只支持iPhone,后面会讲到为什么只支持iPhone的理由。
Create Tabbed Application Step2.png
项目结构
项目的工程结构也非常重要,尤其当工程非常庞大,文件众多的时候。给出我的结构供大家参考,基于MVC结构
Project Structure.png
其实我是参考这个的我的iOS工程结构,大家也可以用来参考
编码规约
同样,即便我是一个人开发,编码规约同样重要,请参考
Introduction to Coding Guidelines for Cocoa
CocoaPod及第三方类库介绍
首先介绍CocoaPod的安装和使用
CocoaPods安装和使用教程
我还在Xcode中添加了CocoaPods的插件,这样就更方便些。
cocoapods 插件.png
如何安装插件?可以先安装Alcatraz,然后再安装其他插件在Xcode 7 中安装 Alcatraz - 简书
本应用中用到的pods文件
source 'https://github.com/CocoaPods/Specs.git'
platform:ios, '8.0'
target "owstorm" do
pod 'Google-Mobile-Ads-SDK'
pod 'MBProgressHUD'
pod 'ActionSheetPicker-3.0'
pod 'FormatterKit'
pod 'UIImageEffects'
pod 'AVOSCloud'
pod 'AVOSCloudCrashReporting'
pod 'BHInfiniteScrollView'
pod 'ChameleonFramework'
pod 'TAPromotee'
pod 'DZNEmptyDataSet'
pod 'UITableView+FDTemplateLayoutCell'
end
介绍下这些第三方库:
我的另一片文章iOS面试题大全APP 开发Review - 第三方组件有大部分这些第三方库的介绍,大家可以先参考。 至于具体的使用及介绍,在下面具体用到这些类库的时候会具体讲解。
预编译头文件
iOS添加预编译头文件PrefixHeader.pch
Apple在Xcode6取消了预编译头文件,那如何重新添加呢,看下面的
iOS添加预编译头文件PrefixHeader.pch
项目配置
Info.plist 修改及介绍
添加Bundle display name:这个是应用安装之后显示名字
Bundle Display Name.png
App Transport Security Settings-Allow Arbitrary Loads 设置为YES
App Transport Security.png
- iOS9中新增App Transport Security(简称ATS)特性, 主要使到原来请求的时候用到的HTTP,都转向TLS1.2协议进行传输。这也意味着所有的HTTP协议都强制使用了HTTPS协议进行传输。
- 而应用中我用到了优酷在线视频的播放,是HTTP协议的。
- 如果我们在iOS9下直接进行HTTP请求是会收到如下错误提示:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. - 所以这段配置中的NSAppTransportSecurity是ATS配置的根节点,配置了节点表示告诉系统要走自定义的ATS设置。而NSAllowsAritraryLoads节点则是控制是否禁用ATS特性,设置YES就是禁用ATS功能。因此,通过这个设置可以让我们的可以成功的播放HTTP的视频
- 更为具体的说明,大家可以参考关于iOS9中的App Transport Security相关说明及适配(更新于2016.7.1)
添加URL Types
URL types.png
定义自身的URL Scheme,这样就可以用owstorm:// 这个形式的 URL 就会关联到自己这个应用了
在LSApplicationQueriesSchemes中添加需要推广应用的白名单
Application Queries Schemes.png
iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。上面是几款我想要推荐的应用的URL Schemes,结合TAPromotee库做应用内推广用的。所以将他们列为白名单。
开篇立项的内容就到这里了,大家有什么意见建议,请留言。
接下来一篇会介绍第一个Tab的内容开发介绍,大概就是两个ViewController,如下图:

涉及到的内容大概有:
- TimelineViewController的开发
- TimelineDetailViewController的开发
- BHInfiniteScrollView的使用
- UITableView+FDTemplateLayoutCell的使用
- 使用Admob显示Banner广告
- 和设计相关的一些东西,字体,大小,颜色,以及ChameleonFramework的使用。
希望下一篇可以尽快和大家见面。







