苹果开发者账号维护指导手册
iOS的应用想要打包发布,其中一个很关键的环节就是要经过相应的苹果开发者账号生成根证书以及绑定单个应用的bundleId的provision frofile。将这两个证书安装到本地,才能对工程进行相应的配置,然后archive。苹果的开发者账号又分成企业账号、公司账号和个人开发者账号三种。
一、企业账号
1.1 账号申请
企业账号的申请具体步骤如下:
- 打开苹果开发者网页,选择Account,注册Apple ID。

- 填写注册信息注:注册企业账号,邮箱最好是企业邮箱,就是带企业域名的邮箱

- 地区选择China,填写好验证码,点击Continue后,你注册的邮箱会收到验证码,填上继续就OK了。注:可能会出现填对了验证码照样验证失败,应该是苹果服务器的原因,可以选择稍后再尝试。

1.2 开通开发者权限
-
注册、登录后,进入https://developer.apple.com/programs/enterprise/ (英文版) 或 https://developer.apple.com/programs/enterprise/cn (中文版)
-
然后,就进入到这个页面了,点击enorll

- 进入到下一个页面,点击”Start Your Enrollment”

申请企业账号需要邓白氏编码,如果你们公司已经申请过公司(Company)账号的话,那就不用再申请邓白氏编码了,如果没有的话,就需要申请邓白氏编码。关于申请邓白氏码,本文末尾会特别说明。
- 有了邓白氏编码后,进入下一步:

- 点击continue:


注:红色框就填申请来的邓白氏编码,蓝色框选择公司人数的时候要选100+,绿色框内填写公司官网时需要注意一下,网站必须支持国外访问
- 填写完信息后,下一步,进入确认信息界面,确认后提交,然后你的Apple ID 对应的邮箱就会收到邮件

接下来就是等待审核了,审核期间Apple 审核人员可能会给你们打电话,确认相关事宜。注意:申请企业账号的用途一定要说是供内部使用,否则不可能通过,选择人数的时候要选择100+,即使没有那么多人,她问的时候就说公司的下个目标是在其他城市开分公司, 到时候人数就会超过100。
1.3 成员管理
企业账号允许多个开发者进行协作开发,可设置多个Apple ID,分2种管理级别。可以正常使用的企业账号登录后如下图所示:

选择上图中的两个“people”中的任何一个,进入用户管理:

由图可以看到,企业账号下的协作开发者分3类:Team Agent、Admins和Members。实际使用中,agent可以邀请项目的打包发布人员成为协作开发者。
1.3.1 邀请成员
点击上图中邀请,进入邀请成为协作开发者界面:

可以在Invite as Admins下面的输入框填入需要admin权限的协作开发者Apple ID,在Invite as Members下的输入框中填入需要一般权限的写作开发者Apple ID。填好后点击Invite按钮,苹果就会发送邀请邮件到相关AppleID对应的邮箱。邮件大概如下:

收到该邮件的用户点击邮件中的View invitation,登录自己的账号,Accept 此邀请即可成为邀请的企业账号的一个协作开发者。
此时登入自己的开发者账号,即可看到如下效果:

1.3.2 Apple Developer Program Team Roles
- Team Agent Available to developers enrolled as an individual or an organization The person who completes enrollment automatically becomes the Team Agent. There can only be one Team Agent.
- Admin Available only to developers enrolled as an organization Admins serve as a secondary contact for teams and have many of the same responsibilities as Team Agents.
- Member Available only to developers enrolled as an organization Members have access to membership benefits, but have limited responsibilities.
各种角色权限的范围如下图所示:

1.4 证书生成
开发者证书分为两种类型:Development Certificate(开发证书)和Production Certificate(发布证书),一定要分别申请两次,有些网上的说明只是建议说分别申请,实际是必须分别申请,否则在真机调试和发布的时候会碰到一些问题。完整的证书生成过程分四步:从苹果电脑上申请CSR文件、生成根证书,添加应用id以及生成provision profile。 以下为生产环境为例,测试环境的证书生产与生产环境类似。只是在注册AppID的时候需要绑定可测试手机的UDID。
1.4.1 从苹果电脑上申请CSR文件
- 打开电脑中的钥匙串访问
一般是在Launchpad中的“其他”文件夹中就能看到,如图:

如果找不到的话可以直接在Finder里搜索“钥匙串访问”。
- 选择菜单钥匙串访问-证书助理-从证书颁发机构请求证书(打开钥匙串访问后在左上角的位置)

- 输入你的Email地址和常用名称,email地址和那一个开发者账号

- 选择保存到磁盘(Saves to Disk),建议保存到桌面.

1.4.2 生成根证书
进入企业账号,在首页选择Certificates, Identifiers & Profiles。打开后选择Certificates下面的Production,效果如下图:

这幅图所展示的就是该企业账号下所有的生产证书。其中后面标了iOS Distribution的表示的是生产根证书。
一般情况下,一个企业账号应该保证只有一个生产根证书。(注,一个企业账号最多只允许同时存在两个生产根证书,只有第一个证书快要到期,需要考虑替换证书的时候,才允许有两个证书共存)
选择右上方的“+”,可以进入添加证书:

如果要生成生产根证书,选择图中红框标注的项;要生成生产推送证书,选择图中绿框标注的项;要生成测试根证书,选择图中蓝框标注的项;要生成测试推送证书,则选择紫框标注的项。
这里,只重点介绍生产根证书的制作。测试根证书与生产根证书制作步骤类似,而推送证书只是在根证书的基础上多了跟应用挂钩,所以均不再做解释。
选择上图中的红框标注项,continue,进入下一步:(注:这里的红框不可选,是因为账号下已经有两个生产根证书的缘故。)

这里是生成csr文件的说明,忽略,直接continue。

如图所示点击choose file,选择之前保存在桌面的CSR文件,Cenerate,根证书就生成好了。
这时,可以直接Download该证书,双击安装到电脑。
安装后在钥匙串可以看到该证书:

如需要将该证书共享给其他开发者使用,还需要将证书导出.p12文件。具体步骤如下:
- 将上图证书展开的信息折叠。点击证书右击,选择“导出XXXXXX”。

- 弹出的导出选项上填写导出证书名,选择存储路径,选择文件格式为“个人信息交换(.p12)”后选择存储。

- 设置证书P12文件密码,点击“好”保存。

至此,根证书生成完成。
1.4.3 添加应用id
有了根证书后,下一步应该做的就是注册自己的应用。这里以bunlderId为com.myteam.test来说明。
进入Certificates, Identifiers & Profiles后选择“App IDs”

选择右上角的“+”按钮,进入App ID添加:


如上面两张图所示,分别填写app的名称和Bundle ID,勾选需要的Application Services后点continue,进入下图:

确认没有问题后,点Generate,再选择Done。添加App ID结束。添加完成后的效果如下:

注:Application Services一般情况下使用Push Notifications就好, 如果游戏类应用的话需要勾选Game Center,使用钱包功能的需要包含Wallet,以此类推。另外,如果添加App ID时Application Services勾选不对也可以通过Edit再编辑。
1.4.4 生成provision profile
provision profile是跟应用一一对应起来的,所以一定要注册过App ID后才能生成对应的provision profile来。
- 进入provision profile的Distribution目录 在Certificates, Identifiers & Profiles页面选择“Provisioning Profiles”下的“Distribution”,如图所示:

- 选择右上角的“+”按钮,进入Add iOS Provisioning Profiles页面: 选择Distribution 下的 “In House”后 continue。

- 进入Select App ID页面。 点击如下图中紫框,选择之前添加的test(XXXXXX.com.myteam.test)的app,continue。

- 进入Select certificates页面,如下图示,选择之前添加好的根证书,continue。

- 进入Name this Profile and generate页面,如下图示,在标注红色下划线的文本框内填入profile的名字,如此出使用“test”。

填写完成后,点击“Generate”按钮。
- 进入profile查看页,如下图。

直接在此处download,将profile文件下载到本机,然后双击安装到电脑即可用来打包应用。
1.5 证书维护
Apple 企业账号的证书制作一般开发人员都能胜任。但是维护就相对比较复杂了。这里涉及到最主要的问题是Apple对企业账号的使用限制。
首先区别于个人开发者账号和公司开发者账号,企业账号具有如下特点:
- 价格比个人账号和公司账号更贵,为 299$/年
- 不可以提交应用到 App Store 商店
- 可以将签名后的应用在任何 iOS 设备上安装,且没有安装数量的限制
其中,正是由于第3条的特点,给开发者在测试和分发 App 时,带来了极大的便利。所以,一般开发者申请使用苹果企业账号(或苹果企业签名),也是为了这个特点。
但是,因为苹果对于 App 的安装有着非常严格的限制,所以苹果对企业账号的使用也给出了种种严格的条款,详见:Apple Developer - Terms and Agreements 。其中,最重要的条款是:
使用企业账号签名后的应用,只可以用于企业内部员工安装,不可以公开下载。
因为这些条件的限制,苹果的企业账号使用上也是有诸多限制。比如,企业根证书的有效期只有3年,而每个应用的provision profile的有效期仅1年。一旦发布的企业应用,根证书或者provision profile中任何一个过了有效期,便可导致该应用彻底无法启动。
所以证书维护,其实涉及以下方面: provision profile 替换 、根证书替换 以及 防止账号被封。
1.5.1 provision profile 替换
provision profile过期后,已经安装的使用该pofile的应用将无法启动。所以要保证应用的正常使用就要按照如下方法来做好提前替换的工作。
- provision profile的有效期最多为1年(注:小于1年的情况实际是系统根证书的有效期不足1年导致的,即,如果根证书的有效期只有半年,此时依赖此根证书生成的provision profile 文件有效期也只有半年)。
- 应用的开发者和企业账号的管理者,均要谨记app使用的provision profile文件有效期准确时间。
- 提前(建议预留一个月的时间)规划好替换证书的版本,且该版本要要求强制升级。
tips: 防止忘记provision profile的过期时间的比较实用的方法是,将证书命名加上过期时间,如下图所示:

图中标注的20170506和20180620就是分别表示证书的过期时间。这样每次打包前,确认证书等配置时,就能清楚看到profile的过期时间。
1.5.2 根证书替换
根证书的有效期比profile要长很多。但是也正因为长,反而容易被忽略。 而根证书一旦过期,所有使用该证书的应用将全部不可用。只能重新发布新的证书的包替换。 应用的开发者因为只留神在自己的应用上,且根证书的有效期会限制profile的有效期,所以开发者一般比较容易忽略根证书。
所以对于根证书的替换,建议如下操作:
-
账号的持有者需要谨记证书的有效期。
-
在证书到期前提前(建议至少一两个月)创建新的证书,以及涉及的所有应用的provision profile。
-
联系各个应用开发者,将新的根证书的P12文件和新的profile文件交给应用开发者,提醒他们规划替换证书的版本。
-
同样提醒他们,这个版本应该在证书到期前一个月上线,而且必须是强制升级。
有一个比较实用的方法就是管理员自己有一个专业的证书存储目录。里面分文件夹存储各个应用的根证书和provision profile文件,文件夹的命名加上证书过期时间,如下图:

1.5.3 防止账号被封
很多开发者在违背了苹果对企业账号的限制条款后,导致企业账号被封,从而造成了不小的损失。所以,为了应用的正常使用建议做到如下几点:
- 尽量不要将应用公开上传到蒲公英等平台发布;
- 不要将应用的安装链接公开,做到只在企业内部安装使用;
- p12 证书文件和 Provisioning Profile 文件不要随意导入导出,最好做到专人专机;
- 开发者账号千万不能外借;
- 不要将 p12 证书文件和 Provisioning Profiles 文件上传到第三方打包平台;
- 测试的时候最好在企业内部网络进行,如果需要连接 Internet 的话,请注意网络环境不要发生太大的变化;
- 网络电话VOIP、积分墙、游戏充值平台等类型的 App 都很容易被苹果封号;
- 尽量将应用发布到App Store
1.5.4 一些异常情况
- 账号下已经存在两个根证书,且都有绑定应用。
- provision profile 已经过期
- 证书被误删
- 账号到期未及时续费