├── Appstore最新审核标准_2015-3.md └── README.md /Appstore最新审核标准_2015-3.md: -------------------------------------------------------------------------------- 1 | # App store最新审核标准(2015.3) 2 | 3 | > 苹果近日更新了App Store审核指南的相关章节,对此前版本进行了修改和完善。除了增加应用截图、预览等限制外,使用Apple Pay进行定期付款的应用程序必须展示每个阶段所需款额,费用归属以及如何取消。而从修改的政策部分可以看出,苹果对App store应用的审核更加严格,鉴于近来国内游戏踩雷屡见不鲜,审核标准请各位业内同学耐心阅读。 4 | 5 | 以下是更新后的审核指南(修改部分红色字体标出): 6 | 7 | ### 1. 条款和条件 8 | 9 | - 1.1 为App Store开发程序,开发者必须遵守 Program License Agreement (PLA)、人机交互指南(HIG)以及开发者和苹果签订的任何其他协议和合同。以下规则和例证旨在帮助开发者的程序能获得App Store的认可,而不是修改或删除任何其他协议中的条款。 10 | 11 | ### 2. 功能 12 | 13 | - 2.1 崩溃的程序将会被拒绝。 14 | 15 | - 2.2 存在错误的程序将会被拒绝。 16 | 17 | - 2.3 跟开发者宣传不符的程序将会被拒绝。 18 | 19 | - 2.4 无应用文档或隐藏功能与描述不符的程序将会被拒绝。 20 | 21 | - 2.5 使用非公开API的程序将会被拒绝。 22 | 23 | - 2.6 在指定容器范围外读写数据的程序将会被拒绝。 24 | 25 | - 2.7 以任何方式或形式下载代码的程序将会被拒绝。 26 | 27 | - 2.8 安装或运行其他可执行代码的程序将会被拒绝。 28 | 29 | - 2.9 Demo版、trial版和test版的程序将会被拒绝。 Beta版应用程序可通过TestFlight提交,并且必须遵守相关指南。(此前并未允许Beta版通过TestFlight提交) 30 | 31 | - 2.10 iPhone程序必须不经修改就能以iPhone分辨率和2倍 iPhone 3GS的分辨率在iPad上运行。 32 | 33 | - 2.11 与App Store已有程序重复的应用可能会被拒绝,特别是数量很多的情况下,比如手电筒应用和爱经应用。 34 | 35 | - 2.12 没有显著用途、不独特的应用程序或者与网站简单捆绑的应用有可能被拒;不提供任何持久娱乐价值的程序可能会被拒绝。 36 | 37 | - 2.13 内容主要是营销材料或广告的程序将会被拒绝。 38 | 39 | - 2.14 包含欺骗或虚假功能,却有没有标明的应用程序将会被拒绝。 40 | 41 | - 2.15 大于100MB无法通过蜂窝网络下载的应用(App Store会自动禁止)。 42 | 43 | - 2.16 多任务程序使用后台服务仅限于几种目的:VoIP、音频播放、地理位置、完成任务以及本地提醒等。 44 | 45 | - 2.17 应用程序只允许使用iOS WebKit框架和WebKit Javascript浏览web内容。 46 | 47 | - 2.18 鼓励酗酒或使用违禁药物,或引诱青少年饮酒或吸烟的程序将会被拒绝。 48 | 49 | - 2.19 提供错误的系统诊断或不精确的设备数据的应用将会被拒绝。 50 | 51 | - 2.20 向App Store上传大量相似版本程序的开发者将会从iOS开发者计划中除名。 52 | 53 | - 2.21 简单一首歌曲或者一部影片应用要提交到iTunes store,书籍类应用应该提交到iBookstore。 54 | 55 | - 2.22 随意根据环境(如定位或者运营商)限制用户使用的应用会被拒。 56 | 57 | - 2.23 应用必须遵守iOS数据储存指导方针(iOS Data Storage Guidelines ),否则应用将被拒。 58 | 59 | - 2.24 存放在Newsstand的应用必须遵守开发者项目许可协议(Program License Agreement)的表1、表2以及表3,否则应用将会被拒。 60 | 61 | - 2.25 类似App store,或者基于购买或者促销的目的而展示其他应用的应用将会被拒绝 62 | (限制更加严格,此前经过特殊审核批准(比如健康管理、航空以及其他无障碍需求等),或者为特殊群体用户提供具有重大意义的附加值的应用是可以通过的) 63 | 64 | - 2.26 只有当app是出于特殊审核需要(比如健康管理、航空以及无障碍需求等)或为特殊群体用户提供具有重大意义的附加值时,才可以展示和推荐自身以外的其他应用程序,否则应用程序将会被拒绝。 65 | 66 | ### 3. 元数据(名称、描述、评级、排名等) 近来厂商踩雷屡见不鲜,此部分请详细阅读 67 | 68 | - 3.1 应用或者元数据中提到其他任何移动平台将会被拒。 69 | 70 | - 3.2 带有占位符文本的程序将会被拒绝 71 | 72 | - 3.3 应用程序的名称、描述、截图或者预览与应用的内容和功能不相关将会被拒绝。 73 | (此前仅对描述有所限制 ) 74 | 75 | - 3.4 为了不混淆用户,iTunes Connect中的应用名称应该和展示在设备上的应用名称一致。 76 | 77 | - 3.5 不同尺寸的app icon要一致,否则会造成混淆。 78 | 79 | - 3.6 图标、截图以及预览不符合4+年龄评级的程序将会被拒绝。 80 | (增加了对预览的限制) 81 | 82 | - 3.7 目录与类型不适合于程序内容的程序将会被拒绝。 83 | 84 | - 3.8 开发者有责任为其程序指定适合的评级。不相称的评级可能会由苹果公司修改。 85 | 86 | - 3.9 开发者有责任为其程序指定恰当的关键字。不恰当的关键词可能会被苹果公司修改/删除。 87 | 88 | - 3.10试图通过伪造评论或者付费评论的方式在AppStore中操纵或者其欺骗用户评论(或者采用其他不正当方式)以提升排名的开发者将会被苹果从iOS开发者计划中除名。 89 | 90 | - 3.11 在安装或打开应用之前,推荐用户重启iOS设备的应用将会被拒。 91 | 92 | - 3.12 提交审核的应用程序应包含能正常运行的URL,比如支持服务URL和隐私政策URL。 93 | 94 | - 3.13 应用程序的截图、预览或者营销文本没有清晰地指出附加内容或项目需要额外单独购买(比如使用IAP)将会被拒绝。 95 | 96 | - 3.14 App预览仅能使用从应用程序捕获的视频屏幕、旁白、文本以及design overlays,否则应用程序将会被拒绝。 97 | 98 | - 3.15 添加App预览的应用程序,未经许可展示真人个人信息将会被拒绝。 99 | 100 | - 3.16 App预览仅能使用在所有选定地区内经过授权许可、用于此目的的音乐。 101 | 102 | - 3.17 App预览包含未经授权的通过app播放的内容(比如iTunes playlist和YouTube流媒体)的应用将会被拒绝。 103 | 104 | ### 4. 位置 105 | 106 | - 4.1 在收集、传输或使用位置数据之前未通知并获得用户同意的程序将会被拒绝。 107 | 108 | - 4.2 将基于位置的API用于车辆、飞机或其他设备的自动控制或自主控制的应用程序将会被拒绝。 109 | 110 | - 4.3 使用基于位置的API用于应急服务的应用程序将会被拒绝。 111 | (此处进行了描述修改,未着重指出调度和车队管理) 112 | 113 | - 4.4 当与提供的功能或服务密切相关,或者为支持经过授权的广告时,应用程序才可以使用位置数据。 114 | 115 | ### 5. 推送通知 116 | 117 | - 5.1 不使用苹果推送通知 (APN)应用接口提供推送通知的程序将会被拒绝。 118 | 119 | - 5.2 未从苹果获得Push Application ID便擅自使用APN服务的程序将会被拒绝。 120 | 121 | - 5.3 在首次推送消息或者要求运行推送通知之前未获得用户许可的应用将会被拒绝。 122 | 123 | - 5.4 使用推送通知发送敏感个人信息或机密信息的程序将会被拒绝。 124 | 125 | - 5.5 使用推送通知发送非请求消息,或用于钓鱼或群发垃圾信息用途的程序将会被拒绝。 126 | 127 | - 5.6 应用程序不可使用推送通知发送广告、促销或任何类型的直销信息。 128 | 129 | - 5.7 应用程序不能向使用推送通知服务的用户收取费用。 130 | 131 | - 5.8 使用推送通知会过多利用APN服务的网络流量或带宽或给设备带来过度负担的程序将会被拒绝。 132 | 133 | - 5.9 如果应用程序传送病毒、文件、计算机代码或程序,并且对APN服务的正常运行造成损害或中断,那么该程序将会被拒绝。 134 | 135 | ### 6. 游戏中心 136 | 137 | - 6.1 向终端用户或任意第三方显示玩家ID的程序将会被拒绝。 138 | 139 | - 6.2 将玩家ID用于任何未经游戏中心条款批准用途的程序将会被拒绝。 140 | 141 | - 6.3 试图进行反向搜索、跟踪、关联、挖掘、获得或利用玩家ID、别名或通过游戏中心获得其他信息的开发者将会iOS开发者计划除名。 142 | 143 | - 6.4 游戏中心信息(例如排行榜分数),只能用于游戏中心批准的应用程序中。 144 | 145 | - 6.5 利用游戏中心服务发送非请求信息,或用于钓鱼或群发垃圾邮件的程序将会被拒绝。 146 | 147 | - 6.6 过多使用游戏中心网络流量或带宽的应用程序将会被拒绝。 148 | 149 | - 6.7 如果程序能够传送病毒、文件、计算机代码或程序,并且对游戏中心服务的正常运行造成损害或中断,该程序将会被拒绝。 150 | 151 | ### 7. 广告 152 | 153 | - 7.1 人工刷广告浏览量或者广告点击率的应用程序将会被拒绝。 154 | 155 | - 7.2 包含空iAd广告的应用程序将会被拒绝。 156 | 157 | - 7.3 主要设计目的在于显示广告的应用程序将会被拒绝。 158 | 159 | ### 8. 商标与商品外观 160 | 161 | - 8.1 应用程序必须遵守”Guidelines for Using Apple Trademarks and Copyrights”和”Apple Trademark List”中说明的所有条款与条件。 162 | 163 | - 8.2 任何误导和暗示苹果公司是该应用程序来源或提供商,或者苹果公司以任何形式表示认可其质量或功能的应用程序将会被拒绝。 164 | 165 | - 8.3 与目前已有苹果产品或者广告主题外观相似或混淆的应用程序将会被拒绝。 166 | 167 | - 8.4 在应用程序名称中将苹果产品名拼错的应用程序(例如,GPS for Iphone,iTunz)将会被拒绝。 168 | 169 | - 8.5 应用程序不得使用受保护的第三方材料(比如商标、版权以及专利),不能违反第三方使用条款。必须提供使用这些材料的授权许可。 170 | 171 | - 8.6 若无明确授权许可,从第三方来源处(比如YouTube、SoundCloud以及Vimeo等)下载音乐或者视频内容的应用程序将会被拒绝。 172 | 173 | ### 9. 媒体内容 174 | 175 | - 9.1 不使用媒体播放器框架(MediaPlayer Framework)获取音乐库中媒体内容的应用程序将会被拒绝。 176 | 177 | - 9.2 用户界面模仿任何iPod或者iTunes界面的应用程序将会被拒绝。 178 | 179 | - 9.3 通过蜂窝网络传输的音频流内容每5分钟不得超过5MB。 180 | 181 | - 9.4通过蜂窝网络传输超过10分钟的视频流内容必须使用HTTP Live Streaming协议,并且要包含一个基线为192kbps或者更低的HTTP实时流。 182 | 183 | ### 10. 用户界面 184 | 185 | - 10.1 应用程序必须遵守苹果的《iOS Human Interface Guidelines》中所有的条款和条件。 186 | 187 | - 10.2 外观与iPhone自带应用(比如App Store、iTunes Store和iBookstore)相似的应用程序将会被拒绝。 188 | 189 | - 10.3 未能按苹果《iOS Human Interface Guidelines》描述正确使用系统提供的项目(比如按钮、图标)的应用将会被拒绝。 190 | 191 | - 10.4 创建桌面/主屏幕环境或者模拟multi-App插件体验的应用程序将会被拒绝。 192 | 193 | - 10.5 修改音量大小和铃声/静音等标准开关功能的应用程序将会被拒绝。 194 | 195 | - 10.6 苹果和我们的客户高度推崇简单、精致、富有创造性以及经过精心设计的界面。虽然需要付出更多,但却非常值得。苹果设立了很高的门槛。如果你的用户界面太过复杂或者水准不高,可能会被拒绝。 196 | 197 | ### 11. 购买与货币流通 198 | 199 | - 11.1 使用App Store以外的渠道解锁或开启附加属性和功能的应用程序将会被拒绝。 200 | 201 | - 11.2 使用应用内支付系统(IAP)以外的系统购买内容、功能或服务的应用软件将会被拒绝。 202 | 203 | - 11.3 使用IAP购买实物商品或者用于该软件之外的商品和服务的应用软件将会被拒绝。 204 | 205 | - 11.4 使用IAP购买积分(信用点)或者其他货币必须在本应用中消费。 206 | 207 | - 11.5 使用IAP购买已过期积分或其他货币的应用软件将会被拒绝。 208 | 209 | - 11.6 使用IAP订阅的内容至少要持续7天,而且允许在用户的其他iOS设备间共享。 210 | 211 | - 11.7 使用IAP购买项目的应用程序必须指派正确的购买类型。 212 | 213 | - 11.8 使用IAP购买iOS内置功能(如照相机,陀螺仪)的应用程序将会被拒绝。 214 | 215 | - 11.9 含有超过限定时间的内容或服务的应用程序将会被拒绝,除经特定批准的内容(比如电影、电视节目音乐以及书籍)。 216 | 217 | - 11.10 保险类应用程序必须免费,要遵守发布地区的法律,并且不能使用IAP。 218 | 219 | - 11.11 一般而言,你的应用程序越贵,我们的评审会越深入。(对不起,我们国产大部分是免费网游) 220 | 221 | - 11.12 提供订阅功能的应用必须使用IAP,苹果将会按照 Developer Program License Agreement 中的约定与开发者按30/70比例分成。 222 | 223 | - 11.13 在应用内使用跳转至外部购买或订阅链接的应用将会被拒,比如”buy”按钮跳转至一个购买电子书的web页面。 224 | 225 | - 11.14 只要应用内没有跳转至外部购买、订阅的按钮或链接,苹果允许这些应用读取或展示经批准的、在应用外购买或订阅内容(特别是杂志、报纸、书籍、音频、音乐、视频以及云存储内容)。苹果只能通过应用程序内的购买获得一部分收益。 226 | 227 | - 11.15 应用程序可以只使用自动更新订阅期刊(报纸、杂志)、商业应用程序(企业类、效率类、专业创意类以及云存储类)和媒体类应用程序(视频、音频、声音),否则应用程序将被拒绝。 228 | 229 | - 11.16 当与特定的经过审核的实体产品(比如玩具)结合使用时,应用程序可以使用获得批准的附加特性和功能,只要附加功能完全依赖于该硬件产品(比如一款用于控制望远镜的应用程序)或者也可以在不使用实物产品的情况下使用应用程序,比如成就奖励或者使用IAP。 230 | 231 | - 11.17 如果应用功能遵照各州和联邦法律,那么应用可以用来促进被认可的虚拟货币的流通。 232 | 233 | ### 12. 抓取和聚合 234 | 235 | - 12.1 从苹果网站(例如apple.com、iTunes Store、App Store、iTunes Connect以及Apple Developer Programs等)抓取任何信息或者使用苹果网站内容和服务进行排名的应用程序将会被拒绝。 236 | 237 | - 12.2 应用软件可以使用获得批准的苹果RSS feeds,例如iTunes Store RSS feeds。 238 | 239 | - 12.3 只是简单的网页剪切、内容整合或者收集链接的应用程序可能会被拒绝。 240 | 241 | ### 13. 损害设备 242 | 243 | - 13.1 怂恿用户以可能造成损害的方式使用苹果设备的应用软件将会被拒绝。 244 | 245 | - 13.2 快速耗光设备电量或产生过多热量的应用软件将会被拒绝。 246 | 247 | - 13.3 能导致用户人身伤害的app将会被拒绝。 248 | 249 | ### 14. 人身攻击 250 | 251 | - 14.1 涉及诽谤、人身攻击性质以及内容狭隘卑鄙的应用软件或者打击特定个人或组织的应用软件将会被拒绝。 252 | 253 | - 14.2 职业政治讽刺家和幽默作家不受这一条款约束。(开门,查水表) 254 | 255 | - 14.3 展示用户创作内容(UGC)的应用程序必须提供一个过滤不良资讯的方法,一个用户可以标记侵犯性内容的机制,以及可以阻止辱骂用户的能力。 256 | 257 | ### 15. 暴力 (此前传禁枪的消息并未在条款中明确指出) 258 | 259 | - 15.1 应用程序中出现人或动物被杀、致残以及枪击、刺伤、拷打等受伤情形的真实画面将会被拒绝。 260 | 261 | - 15.2 出现描绘暴力或虐待儿童等内容的应用程序将会被拒绝。 262 | 263 | - 15.3 游戏中出现的”敌人”不可指向一个特定种族、文化、一个真实存在的政府、企业或者其他任何现实中的实体。 264 | 265 | - 15.4 对武器进行真实描述以怂恿非法使用或滥用这些武器的应用程序将会被拒绝。 266 | 267 | - 15.5包含俄罗斯轮盘赌博内容的游戏将会被拒。 268 | 269 | ### 16.令人反感的内容 270 | 271 | - 16.1 应用程序中出现过于令人反感或者低俗的内容将会被拒绝。 272 | 273 | - 16.2 在设计上激怒用户或令人感到厌恶的应用程序将会被拒绝。 274 | 275 | ### 17.隐私 276 | 277 | - 17.1 在未经用户事先许可,或未告知用户如何使用信息以及在何处使用信息的情况下,应用程序不能传输用户数据。 278 | 279 | - 17.2 要求用户共享电子邮箱地址和出生日期等私人信息才可使用其功能的应用程序将会被拒绝。 280 | 281 | - 17.3 仅出于遵守适用的儿童隐私法规的目的,应用程序可以要求用户的出生日期(或者使用其他年龄评级机制),但是必须包括一些有用的功能或者娱乐价值,不管用户年龄大小。 282 | 283 | - 17.4 收集、传输以及分享未成年用户个人信息(比如名字、地址、邮件、位置、照片、视频、绘画、聊天信息以及其他个人数据,或者与以上所述相关的永久性标示符)的应用程序必须遵守应用儿童隐私法规,并且必须包含隐私条款。 284 | 285 | - 17.5 包含账号注册或者访问用户现有账号的应用程序必须包含隐私策略,否则将会被拒绝。 286 | 287 | ### 18. 色情 288 | 289 | - 18.1 含有色情素材,也就是《韦氏词典》中定义的”旨在激发情欲,对性器官或性行为的明确描述或展示,而无关美学或情绪感受”的程序将会被拒绝。 290 | 291 | - 18.2 包含用户频繁提供的色情内容的应用程序(比如以前的“Chat Roulette”程序)将会被拒绝。 292 | 293 | - 19.宗教,文化与种族 294 | 295 | - 19.1 涉及宗教、文化或种族群体的引用或评论包含诽谤性、攻击性或狭隘内容,或会使特定群体遭受伤害或暴力的应用程序将会被拒绝。 296 | 297 | - 19.2 程序可以包含或引用宗教经文,程序所提供的引用或翻译必须准确且不会引起误导。评论应该有教育意义,可以令人开阔眼界,而不应有煽动性。 298 | 299 | ### 20. 竞赛、赌博、彩票以及抽奖 300 | 301 | - 20.1 彩票抽奖和竞赛必须由应用程序的开发者或者app所属公司发起。 302 | 303 | - 20.2 应用程序必须展示彩票抽奖和竞赛的正式规则,并声明苹果不是发起者,也没有以任何方式参与活动。 304 | 305 | - 20.3 开发者运营一款具有抽奖性质的应用必须经过法律允许,并且抽奖应用必须具备以下特征:报酬、运气以及奖品。 306 | 307 | - 20.4 允许用户在应用中直接购买彩票或彩券的应用将会被拒。 308 | 309 | - 20.5 提供真钱游戏(比如体育博彩、扑克牌、赌场游戏、赛马以及彩票)的应用程序必须有应用程序适用地区当地必要的许可和允许,必须限制在这些区域,必须可以从App Store免费下载。 310 | 311 | - 20.6 使用IAP购买信誉或者货币,且结合真钱游戏的应用将会被拒绝。 312 | 313 | ### 21.慈善与援助 314 | 315 | - 21.1 包含可以向已认证的慈善组织捐赠功能的应用程序必须是免费的。 316 | 317 | - 21.2 捐赠款项的募集必须通过Safari浏览器访问web页面或是手机短消息完成。 318 | 319 | ### 22. 法律要件 320 | 321 | - 22.1 应用程序必须遵守所有发布地区当地法律,开发者有义务了解并遵守所有当地法律。 322 | 323 | - 22.2 包含虚假,欺诈或误导性陈述的程序将会被拒绝。 324 | 325 | - 22.3 任何用于招徕、促进或鼓励犯罪或明显鲁莽行为的应用程序将会被拒绝。 326 | 327 | - 22.4 支持非法文件共享的程序将会被拒绝。 328 | 329 | - 22.5 被设计用以非法赌博工具的应用程序(包括点算牌)将会被拒绝。 330 | 331 | - 22.6 具有匿名或恶作剧拨打电话或发送类似短信/彩信功能的程序将会被拒绝。 332 | 333 | - 22.7 任何开发暗中收集用户密码或用户私人数据程序的开发者将会从iOS开发者计划中除名。 334 | 335 | - 22.8 包含非执法机构发布的DUI检查点信息,或者怂恿/协助酒后驾车的应用将会被拒绝。 336 | 337 | - 22.9 计算药剂用量的应用程序必须由药品制造商或者认可机构发布,比如医院、保险公司以及高校。 338 | 339 | - 22.10.在未授权的情况下使用iTunes音乐预览的应用程序将会被拒绝。 340 | 341 | ### 23. Passbook 342 | 343 | - 23.1 Passbook Passes可被用来支付或者接收支付,传递商业信息或者提供验证(比如电影票、飞机票、优惠券以及其他),但把Passbook Passes用于其他用途的应用程序可能会遭到拒绝,并且会被撤销Passbook证书。 344 | 345 | - 23.2 Passes必须包含有效的pass发行人有效的联系资料,否则app将会被拒绝,并且Passbook证书也会被取消。 346 | 347 | - 23.3 Passes必须经过实体签名,并基于其名字、商标或者品牌进行分发,否则应用程序将会被拒绝,而Passbook证书也可能会被撤销。 348 | 349 | ### 24.儿童类别 350 | 351 | - 24.1 儿童类别中的应用程序必须包含隐私政策,必须遵守适用的儿童隐私法规。 352 | 353 | - 24.2 儿童类别中的应用程序不允许包括行为广告(比如app内部基于用户行动的服务广告),任何在应用程序中展示的上下文广告必须适合儿童。 354 | 355 | - 24.3 儿童类别中的应用程序必须得到家长许可或使用parental gate才能链接至应用程序外部或进行交易。 356 | 357 | - 24.4 儿童类别中的应用程序必须标明”5岁以下,6-8岁或者9-11岁”。 358 | 359 | ### 25.扩展 360 | 361 | - 25.1 包含扩展的应用程序必须遵照 App Extension Programming Guide要求。 362 | 363 | - 25.2 包含扩展的应用程序必须提供某些功能(辅助屏幕,附加设置),否则将会被拒绝。 364 | 365 | - 25.3 如果扩展的视图中包含营销推广、广告或者IAP内容,那么包含该扩展的应用将会被拒绝。 366 | 367 | - 25.4 键盘扩展必须提供一个切换至下个键盘的方法。 368 | 369 | - 25.5 键盘扩展必须具有离线访问功能,否则将会被拒绝。 370 | 371 | - 25.6 键盘扩展必须提供和 App Extension Programming Guide 描述一致的数字和十进键盘类型,否则将会被拒绝。 372 | 373 | - 25.7 提供键盘扩展的应用必须拥有基本的功能分类和隐私政策,否则将会被拒绝。 374 | 375 | - 25.8 提供键盘扩展的应用程序只允许收集用户活动以增强键盘扩展在iOS设备上的功能,否则将会被拒绝。 376 | 377 | ### 26.HomeKit 378 | 379 | - 26.1 使用HomeKit框架的应用程序必须有提供家庭自动化服务的主要目的。 380 | 381 | - 26.2 使用HomeKit框架的应用程序必须在营销文本中说明用途,同时必须提供隐私政策,否则将会被拒绝。 382 | 383 | - 26.3 应用程序不允许将从HomeKit API收集的数据用于广告宣传或者其他基于使用的数据挖掘。 384 | 385 | - 26.4 出于其他目的使用从HomeKit API收集的数据,而不是用于提高用户体验或者家庭自动化功能中硬件/软件性能,这类应用将会被拒绝。 386 | 387 | ### 27.HealthKit 388 | 389 | - 27.1 使用HealthKit或者ResearchKit框架(出于健康目的用于进行人体生物学研究的框架)的应用程序,必须遵守其所有适用区域的法律,以及iOS Developer Program License Agreement中的3.3.28和3.39条款。(增加了对于ResearchKit框架的支持) 390 | 391 | - 27.2 将虚假或者错误的数据写入HealthKit的应用程序将会被拒绝。 392 | 393 | - 27.3 使用HealthKit框架的应用程序在iCloud中储存用户健康信息将会被拒绝。 394 | 395 | - 27.4 应用程序不允许将通过HealthKit API收集的用户数据用作广告宣传或者基于使用的数据挖掘目的,除了改善健康、医疗、健康管理以及医学研究目的。 396 | 397 | - 27.5 未经用户许可与第三方分享通过HealthKit API获得的用户数据的应用程序将会被拒绝。 398 | 399 | - 27.6 使用HealthKit框架的应用程序必须在营销文本中说明集成了Health app,同时必须在app用户界面清楚阐释HealthKit的功能。 400 | 401 | - 27.7 使用HealthKit框架的应用程序必须提供隐私政策,否则将会被拒绝。 402 | 403 | - 27.8 提供诊断、治疗建议,或者控制诊断疾病的硬件,或者治疗疾病的应用程序,若没有根据要求提供书面的监管审批,将会被拒绝。 404 | 405 | - 27.9 收集人体生物学研究相关数据的应用程序必须要获得参与者的许可,对于未成年人,应用程序要得到其父母或者监护人的许可。许可内容必须包括:(a)研究的性质、目的以及持续性;(b)参与流程、风险以及受益(福利);(c)信息的机密性和数据处理(包括与任何与第三方的共享);(d)参与者问题切入点;(e) 取消方法(新增) 406 | 407 | ### 28.TestFlight 408 | 409 | - 28.1 应用程序仅能使用TestFlight对以公开发布为目的的应用进行beta版测试,且必须遵守完整的App Review Guidelines。 410 | 411 | - 28.2 当版本中包含的内容或功能有重大变化时,使用TestFlight的应用程序必须提交审核。 412 | 413 | - 28.3 使用TestFlight的应用程序不允许分发给测试者,以作为任何形式的补偿。 414 | 415 | ### 29. Apple Pay 416 | 417 | - 29.1 使用Apple Pay的应用程序必须在出售任何商品或者服务之前为用户提供所有材料的购买信息,否则将会被拒绝。使用Apple Pay进行定期付款的应用程序必须提供最低限度续费期限,付费将持续直至被取消,每个阶段所付款额,费用付款归属,以及如何取消等。(增加了对于定期付款的规定) 418 | 419 | - 29.2 使用Apple Pay的应用程序必须正确使用 Apple Pay Human Interface Guidelines 中的Apple Pay标识和用户界面元素,否则将会被拒绝。 420 | 421 | - 29.3 使用Apple Pay作为购买机制的应用程序所提供的商品或服务不能触犯任何交付地范围内的法律,也不能用作任何非法目的。 422 | 423 | - 29.4 使用Apple Pay的应用程序必须提供隐私政策,否则将会被拒绝。 424 | 425 | - 29.5 只有为了促进或提高商品和服务的交付,或者依照法律要件,使用Apple Pay的应用程序才能与第三方分享通过Apple Pay获得的数据。 426 | 427 | > 英文原文: 428 | https://developer.apple.com/app-store/review/guidelines/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iOS 开发流程笔记 2 | 3 | - [x] 证书知识及准备工作 4 | - [x] 几种开发者帐号区别 5 | - [x] 真机调试流程 6 | - [x] 内测发布流程 7 | - [ ] Appstore 上架流程 8 | 9 | ## 目录导航 10 | 11 | - [证书知识及准备工作](#证书知识及准备工作) 12 | - [基础问题答疑](#基础问题答疑) 13 | - [什么是证书](#什么是证书) 14 | - [什么时候需要证书](#什么时候需要证书) 15 | - [证书如何获得](#证书如何获得) 16 | - [如何对代码进行签名](#如何对代码进行签名) 17 | - [我生成的私钥如何共享给团队成员](#我生成的私钥如何共享给团队成员) 18 | - [各流程中证书的需求情况](#各流程中证书的需求情况) 19 | - [模拟器调试](#模拟器调试) 20 | - [真机调试](#真机调试) 21 | - [打包和发布](#打包和发布) 22 | - [消息推送后端服务](#消息推送后端服务) 23 | - [开发中常见的证书及相关文件介绍](#开发中常见的证书及相关文件介绍) 24 | - [CSR(certificate request) 文件](#csrcertificate-request-%E6%96%87%E4%BB%B6) 25 | - [开发者证书](#开发者证书) 26 | - [apns(Apple Push Notification Service) 证书](#apnsapple-push-notification-service-%E8%AF%81%E4%B9%A6) 27 | - [p12(Personal Information Exchange) 证书](#p12personal-information-exchange-%E8%AF%81%E4%B9%A6) 28 | - [描述文件(Provisioning Profiles)](##%E6%8F%8F%E8%BF%B0%E6%96%87%E4%BB%B6provisioning-profiles) 29 | - [附录1: 开发准备相关的网址](#%E9%99%84%E5%BD%951-%E5%BC%80%E5%8F%91%E5%87%86%E5%A4%87%E7%9B%B8%E5%85%B3%E7%9A%84%E7%BD%91%E5%9D%80) 30 | - [几种开发者帐号区别](#几种开发者帐号区别) 31 | - [关键区别](#关键区别) 32 | - [真机调试流程](#真机调试流程) 33 | - [基本概念](##%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5) 34 | - [条件和流程](#条件和流程) 35 | - [内测发布流程](#内测发布流程) 36 | - [基本概念](#%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5-1) 37 | - [实现条件](#实现条件) 38 | - [几种常见的分发途径](#几种常见的分发途径) 39 | - [附录2: 常见分发渠道及工具地址](#%E9%99%84%E5%BD%952-%E5%B8%B8%E8%A7%81%E5%88%86%E5%8F%91%E6%B8%A0%E9%81%93%E5%8F%8A%E5%B7%A5%E5%85%B7%E5%9C%B0%E5%9D%80) 40 | - [Appstore 上架流程](#appstore-%E4%B8%8A%E6%9E%B6%E6%B5%81%E7%A8%8B) 41 | - [附录3: App store最新审核标准(2015.3)](#%E9%99%84%E5%BD%953-app-store%E6%9C%80%E6%96%B0%E5%AE%A1%E6%A0%B8%E6%A0%87%E5%87%8620153) 42 | 43 | ## 证书知识及准备工作 44 | 45 | ### 基础问题答疑 46 | 47 | #### 什么是证书 48 | 49 | 由 apple 官方颁发, 用以证明开发者身份的特殊文件, 在 iOS 开发中主要用于代码签名, 保障 iOS 生态的健康安全, 分为开发者证书和发布者证书 50 | 51 | #### 什么时候需要证书 52 | 53 | 只有在本机模拟器调试时无需代码签名, 当 App 需要在真机运行和发布时需要使用相应证书进行签名 54 | 55 | #### 证书如何获得 56 | 57 | 首先需要拥有相应权限的开发者帐号, 通过在本地生成配对的密钥, 向 [provisioning portal](https://developer.apple.com/ios/manage/overview/index.action) 提交公钥后换取, 后续证书在使用时会验证本地私钥 58 | 59 | #### 如何对代码进行签名 60 | 61 | 在 xcode 中, 使用描述文件(provision profile 包含调试者证书, 授权设备清单, 应用ID), 在 `Build Settings` 中选择存于 `Keychain Access` 中的证书文件设置调试和发布任务时的代码签名 62 | 63 | #### 我生成的私钥如何共享给团队成员 64 | 65 | 在 `Keychain Access` 中找到导入的证书, 右击导出为包含私钥的 Personal Information Exchange(.p12)文件(导出时可以创建密码), 团队成员再导入 `p12` 证书后就完整包含了证书和私钥 66 | 67 | ### 各流程中证书的需求情况 68 | 69 | #### 模拟器调试 70 | 71 | 不需要 72 | 73 | #### 真机调试 74 | 75 | - 描述文件(Provisioning Profiles) 76 | 77 | - 开发者证书(ios_development.cer) 78 | 79 | #### 打包和发布 80 | 81 | - 描述文件(Provisioning Profiles) 82 | 83 | - 可用于发布的开发者证书(ios_distribution.cer) 84 | 85 | #### 消息推送后端服务 86 | 87 | - apns 证书 88 | 89 | ### 开发中常见的证书及相关文件介绍 90 | 91 | #### CSR(certificate request) 文件 92 | 93 | 用于换取证书的公钥文件, 实际是在本地基于 `RSA` 加密得到配对的密钥, 私钥存于 `Keychain Access` 用于签名, 公钥作为换取证书的凭证 94 | 95 | ##### 生成方法 96 | 97 | - OSX 系统自带的 **Keychain Access** 98 | 99 | + 选择 "Request a Certificate From a Certificate Authority…" 100 | 101 | + 输入 email 等信息后保存为 `.certSigningRequest` 文件 102 | 103 | - 命令行下使用 **openssl** 生成 104 | 105 | ```bash 106 | $ openssl genrsa -out private.key 2048 107 | $ openssl req -new -sha256 -key private.key -out my.certSigningRequest 108 | ``` 109 | 110 | #### 开发者证书 111 | 112 | 由 apple 官方颁发, 用来证明开发者资格的证书文件, 分开发(ios_development.cer)和发布(ios_distribution.cer)两种 113 | 114 | `cer` 证书跟开发机(私钥)绑定只能在拥有私钥的机器上使用, 如果要迁移机器需要导出为 `p12` 文件 115 | 116 | ##### 生成方法 117 | 118 | 在 [开发者中心](https://developer.apple.com/devcenter/ios/index.action) "certificates" 面板中添加 `certificate` 并上传刚刚生成的 `CSR` 文件, 获取 `ios_development.cer` 119 | 120 | #### apns(Apple Push Notification Service) 证书 121 | 122 | 用于服务端消息推送, 类似 ssl 证书使用, 和 App 端的开发打包没有关系 123 | 124 | ##### 生成方法 125 | 126 | 在 [开发者中心](https://developer.apple.com/devcenter/ios/index.action) "Identifiers" 面板中添加 `App ID` 并上传刚刚生成的 `CSR` 文件, 获取 `aps_production.cer` 127 | 128 | #### p12(Personal Information Exchange) 证书 129 | 130 | `p12` 证书实际是包含了 `cer` 证书及私钥信息, 可以分发给团队成员 131 | 132 | ##### 生成方法 133 | 134 | 在 **Keychain Access** 中找到已经导入的 `cer` 证书, 点右键导出为 `p12` 格式 135 | 136 | #### 描述文件(Provisioning Profiles) 137 | 138 | 包含 `certificate` `appID` `devices id` 的文件用于在 xcode 调试打包时提供授权的配置信息 139 | 140 | ##### 生成方法 141 | 142 | - 在 [开发者中心](https://developer.apple.com/devcenter/ios/index.action) "Provisioning Profiles" 面板中添加 `iOS Provisioning Profiles` 并上传刚刚生成的 `CSR` 文件, 获取 `.mobileprovision` 文件 143 | 144 | - 在 xcode 登录开发者帐号后可以连接开发者中心获取 145 | 146 | ### 附录1: 开发准备相关的网址 147 | 148 | > 开发者中心 149 | > https://developer.apple.com/devcenter/ios/index.action 150 | > 151 | > iOS 描述管理(配置证书、描述文件、推送服务) 152 | > https://developer.apple.com/ios/manage/overview/index.action 153 | > 154 | > 切换团队(在 web 界面上死活没有找到) 155 | > https://developer.apple.com/account/selectTeam.action 156 | > 157 | > iOS 上架 Appstore 158 | > http://itunesconnect.apple.com/ 159 | 160 | ## 几种开发者帐号区别 161 | 162 | > 详见: https://developer.apple.com/programs/start/ios/ 163 | 164 | - [个人(individual)](https://developer.apple.com/programs/ios/) **$99**/year 165 | - [公司(company)](https://developer.apple.com/programs/ios/) **$99**/year 166 | - [企业(enterprise)](https://developer.apple.com/programs/ios/enterprise/) **$299**/year 167 | - [大学(University)](https://developer.apple.com/programs/start/university/) **free** 168 | 169 | ### 关键区别 170 | 171 | - 个人帐号可以真机调试, 发布 appstore, 每年 最多为 100台设备分发 172 | - 公司帐号和个人帐号类似, 只有这两种帐号可以发布 appstore, 主要特权是可以添加多个开发者子账号, 但只允许主账号提交, 发布等操作, 在协同开发时比较灵活, 可以各自管理授权设备等 173 | - 企业帐号**无法用于 appstore 发布**, 但可以不通过 appstore 发布任意 iphone 都可以安装的应用 174 | - 大学帐号不能发布 appstore, 主要拥有真机调试的权限 175 | 176 | ## 真机调试流程 177 | 178 | ### 基本概念 179 | 180 | 真机调试指 mac 连上 iphone, xcode 可以直接以这台 iphone 设备为 build target, 能在 iphone 里执行编译结果 181 | 182 | ### 条件和流程 183 | 184 | 分为拥有独立开发者帐号(也包括公司帐号或企业帐号成员)和共享开发者帐号两种情况 185 | 186 | #### 拥有独立开发者帐号 187 | 188 | - 1. 在 [provisioning portal](https://developer.apple.com/ios/manage/overview/index.action) 新建应用, 配置授权设备等 189 | - 2. 开发机上导入证书 190 | - 3. 在 xcode 上登录开发者帐号, 不需要准备描述文件, xcode 会自动生成(如果是公司帐号可以自动生成 `iOS Team Provisioning Profile`) 191 | 192 | #### 共享开发者帐号 193 | 194 | 如果无法在 xcode 登录一个开发者帐号, 也可以通过他人对你手机和应用 id 的授权, 得到 `.mobileprovision` 描述文件再导入其含私钥的证书(`p12`) 即可, 具体步骤如下: 195 | 196 | - 1. 获得手机的 `udid` (可以连上 mac, 在 itunes 中查看) 197 | - 2. 告知对方 `udid` (用以设备授权) 和 应用 id 198 | - 3. 得到对方生成的证书和描述文件后, 先导入 `p12` 证书, 再双击 `mobileprovision` 文件 199 | - 4. 连接手机, 在 xcode 中选择 build target 为已连接的手机 200 | 201 | > 对刚入门的个人开发者而言, 可以在淘宝搜 `iOS真机调试` 花几元购买一份授权, 包含(`p12` 证书 和 `.mobileprovision` 描述文件) 202 | 203 | ## 内测发布流程 204 | 205 | ### 基本概念 206 | 207 | 当 App 开发进行到一定程度, 需要更多的人参与测试, 需要谋求一种方式方便应用能安装进更多的设备中 208 | 209 | ### 实现条件 210 | 211 | 进行内测发布主要的关键点是: 212 | 213 | - 1. 是如何将应用打包为 `.ipa` 214 | 215 | xcode6 以后, 个人/公司帐号无法对应用打包为 `.ipa`, 要么用 xcode5 打包要么拥有企业帐号级别的授权 216 | 217 | - 2. 设备需不需要授权 218 | 219 | 个人/公司帐号权限只有在 `TestFlight` / 越狱渠道下完成不授权安装; 企业帐号授权可以在 `ad-hoc` / `in-house` 渠道下分发, 完成不授权设备安装 220 | 221 | ### 几种常见的分发途径 222 | 223 | - ad-hoc 224 | 225 | 打包时必须在登录企业帐号(或其成员)并已导入证书和描述文件的情况下, 任何用户(未授权)都可以在手机上用浏览器访问一个 url(例: itms-services://?action=download-manifest&url=https://example.com/manifest.plist) 完成安装 226 | 227 | 最大的问题是安装量有 100 的上限, 无法作为一个量很大的分发渠道 228 | 229 | - in-house 230 | 231 | 针对企业内部用户进行分发, 相比 `ad-hoc` 无安装量上限 232 | 233 | > iOS 8.1.3 开始不能企业证书 Iresign 方式重新签名的应用无法安装 234 | > https://support.apple.com/en-us/HT204245 235 | 236 | - TestFlight 237 | 238 | 仅支持 **iOS8.0** 以上, 不需要对设备 `udid` 进行授权, 适合个人 / 公司开发者, 在应用发布前可以开启 TestFlight Beta 测试并添加测试者的 iTunes Connect 帐号, 需要待测用户拥有 iTunes Connect 帐号并在设备安装 `TestFlight` 客户端 239 | 240 | 这种方式非常便于推送应用更新和收集测试信息 241 | 242 | - 导出 ipa 包, 越狱安装 243 | 244 | 如果测试设备都越狱了, 这种方式非常灵活简单, 只有能导出 ipa 包就能通过 [itools](http://www.itools.cn/) 等第三方工具安装 245 | 246 | ### 附录2: 常见分发渠道及工具地址 247 | 248 | > fir-第三方应用托管平台 249 | > http://fir.im/ 250 | > 251 | > TestFlight 252 | > https://developer.apple.com/testflight/ 253 | > 254 | > Agile-百度内部 ios 分发测试平台 255 | > http://agile.baidu.com 256 | > 257 | > fir-分发相关工具 258 | > http://fir.im/dev/tools 259 | > 260 | > itools 261 | > http://www.itools.cn/ 262 | 263 | ## Appstore 上架流程 264 | 265 | @TODO 266 | 267 | ### 附录3: App store最新审核标准(2015.3) 268 | 269 | > [App store最新审核标准(2015.3) 中文翻译](Appstore最新审核标准_2015-3.md) 270 | 271 | > [App store最新审核标准(2015.3) 英文原版](https://developer.apple.com/app-store/review/guidelines) 272 | --------------------------------------------------------------------------------