工程规范
* .DS_Store
* *.xcodeproj/*
* !*.xcodeproj/project.pbxproj
* project.xcworkspace
* xcuserdata
* xcshareddata
* build
* ._*
- 分支管理
- 保持master作为release分支,创建一个dev分支做日常开发,需要发布版本时在master上 merge dev分支并release
- 服务器上tag一般用于标识重要更新于发布,tag只出现在master上,dev应该不存在tag
- 编码规范参照Google的Objective-C编码规范
- 重定义NSLog,在发布版本(Release)时对NSLog屏蔽
* #ifdef RELEASE
* #define NSLog(...)
* #else
* #define NSLog(...) NSLog(__VA_ARGS__)
* #endif
工程结构规范
- 环境部署方案
- 使用不同环境plist文件根据Scheme的Build configuration动态更改环境的主机地址,第三方平台key值等配置(示例demo)
- 添加项目Prefix Header文件
- 宏定义工具类
- 使用BASE_URL 作为不同环境主机地址的切换#define BASE_URL @"http://192.68.1.249:8080"
- 完整接口名以HTTP开头,拼接路径地址,例如#define HTTP_USER_LOGIN [BASE_URL stringByAppendingString:@"/user/login"]
- 颜色定义
- 以COLOR开头,拼接主要用途,以具体颜色结尾#define COLOR_TEXTFIELD_GRAY HEXCOLOR(0x999999)
- 物理文件应该与Xcode工程文件保持同步避免文件扩张
- 使用images.xcassets管理图片,@1x,@2x,@3
通用模块
- HTTP请求模块(AFNetworking)
- 可添加全局请求头,或cookie等身份验证逻辑
- 配合后台返回状态参数做成功处理与错误处理
- JSON转模型模块
- 网络请求JSON数据通过AFNetworking与MJExtension框架转成数据模型
- 错误检验与网络进度模块
- 网络进度条使用MBProgressHUD
- 本地检验方案:
- 使用UWToast工具类或Alerview提示(Toast)
- 监听符合条件时按钮才能触发网络请求
- Tabbar模块(UITabBar+UINavigation框架搭建)
- Drawer模块(MMDrawerController+UINavigation框架搭建)(MMDrawer)
- BaseWebView模块
- BaseViewController模块
- 下拉刷新与上拉加载更多的分页处理方案
- 检查更新逻辑模块
- 图片选择与上传模块(选择图片)
- 第三方集成:
- 集成即时通讯方案(环信、融云、阿里百川)
- 集成分享模块
- 集成统计模块
- 集成推送模块
- 集成支付模块
- 集成地图模块
常用工具部分
- button
- textfield
- 自定义iamge/imageview
- 字符串处理(各种category)
- 手机号、邮箱、身份证的正则判断
- 空格、回车、emoji表情的处理
- 加密处理
- 日期转换处理
- 时间戳与日期转换
- 当前时间与状态时间比较
- 日期与年龄、星座转换
- popview弹出视图控制器
- 图片浏览工具,包括保存、缩放
- 地区选择工具,包括数据库读取工具类(FMDB)
- 图片轮播工具(SDCycleScrollView)
- 用户信息保存与获取工具(arc版本)(非arc版本)
上线前的CheckList
- Bundle identifier,version,build,证书是否正确
- 环境地址是否为线上地址,检查是否有地方没有使用BASE_URL,特别注意分享的环境地质是否正确
- 使用的第三方key值(百度统计,ShareSDK,极光推送,百度地图,融云等)是否切换到生产环境
- 需要读取沙盒文件的地方,检查数据与上个版本是否兼容
AppStore审核注意点
- 官方文档
- 一些审核细节:
- 审核用的是美国的网络
- iPhone app苹果审核人员也会在iPad上测试
- 测试所用的系统是当前最新系统,但机型未必是当前最新机型
- 一些常见问题总结:
- 应用分级需注意:是否有无限制的网页浏览(17+),黄赌毒酒等不良信息不要在审核时出现,甚至一些不雅词汇也不要出现
- 在简介里如果涉及到苹果的商标或者词汇,一定一个字母都不能错,包括每个字母的大小写
- 应用中不要出现“测试”、“beta”、“demo”、“version 0.9”等字样
- 有列表的页面内容尽量填充数据
- 事件无法响应的按钮:隐藏或者设置成不可用状态,(注意第三方登录只能隐藏)
- 由网络下载的数据必须存在沙盒的cache或者tmp目录
- 每个输入框弹出响应的键盘
- 不能出现Android等第三方操作系统的图标或者名字,注意一些共用的如滚动的广告图片
- 检查更新不能出现,登入自检的时候也需注意
- 有抽奖活动的,需要申明此活动跟苹果公司无关
网友评论