我是一名做了六年的独立iOS开发者,前两年帮本地一个医疗创业团队做了一款面向私立诊所的慢病随访管理App,从那之后才算真正摸透了苹果签名的各种门道,尤其是针对医疗健康类App的使用场景,踩过的坑一箩筐,今天就实打实说说这些经验。
最开始的时候,团队刚起步,合作的诊所不到十家,用户都是诊所内部的医护,一共才不到三百人,核心功能需要记录患者的病史和随访数据,涉及很多隐私内容,暂时不想公开到AppStore给所有人下载,加上创业初期医疗相关的资质还没办齐全,试了两次AppStore上架都被拒了,原因很明确,缺少《医疗机构执业许可证》,在线问诊功能不符合苹果的规范要求。 那怎么办? 总不能项目停在这里,所以我们把目光放到了苹果签名上,刚好苹果企业签名用于医疗健康这种内部分发场景,本来就是适配的。
最先搞懂的是P12证书,之前我只做上架,根本没接触过这个。 第一次给签名商发文件,我傻乎乎发了个cer格式的证书过去,对方说不对,要带私钥的P12文件。 后来才弄明白,如果你自己有苹果开发者账号,要生成可用的签名证书,得在钥匙串访问里生成请求文件,上传到开发者后台生成证书之后,回到钥匙串找到对应的证书,展开能看到关联的私钥,必须同时选中证书和私钥,右键导出才能得到可用的P12,导出的时候还要设置密码,这个密码也要一并给签名商。 P12本质就是把证书和私钥打包加密的文件,没有私钥根本签不了IPA包,我第一次就是漏了导出私钥,折腾了大半天,这是最基础的坑。 还有一点要提醒,如果是自己提供P12,一定要保管好文件和密码,别随便泄露出去,我有个同行朋友,自己企业账号生成的P12存在共享网盘里忘了设权限,被陌生人拿去签了违规App,没几天证书就被苹果吊销,整个企业账号直接废掉,损失了大几千块的账号成本,这个坑我记到现在。
那段时间问了不下十家不同渠道的签名商,也摸清楚了现在市面的真实价格,没有什么虚的,都是实打实问来的。 共享企业签名,就是几十上百个App共用同一个P12证书,一般价格是50到150块一个月,年付的话大概500到1200块,还有那种十几二十块一个月的,我也问过,基本都是割韭菜,用不了几天就掉。 然后是独立企业签名,就是一个P12证书只签你这一个App,价格一般是300到800块一个月,年付大概2500到6000块,不同签名商的价格差主要在证书的稳定性,大商家的证书资源稳定,价格会高一点。 然后是超级签名,按绑定的设备数量收费,一般一台设备5到12块,一年内掉签免费补,100台设备就是五六百到一千多,适合小批量内测。 TF签名的话,一般是包1000次安装大概800到1500块,超出安装量按1到2块钱一次算,也有全包一个版本的,一千多块,只要不超过苹果默认的一万次安装限制就能用。 这些都是现在市面的真实行情,没有什么水分,我当时对比了快一周才弄清楚。
很多刚接触签名的朋友搞不懂设备签名原理,其实说穿了很简单,苹果的iOS系统是闭源的,所有能安装的应用必须有苹果认可的合法签名,而设备签名就是利用苹果给开发者开放的测试设备权限,把用户设备的唯一识别码也就是UDID,提前绑定到开发者账号的设备列表里,告诉苹果这是我的测试设备,我要给这个设备装我的测试应用,苹果验证通过之后,设备就能正常安装打开了。
说白了UDID绑定就是这个核心,不管你是做开发真机调试,还是做超级签名,本质都是绑定UDID。 我第一次用超级签名做内测的时候,就遇到了麻烦,我们的用户很多是年龄比较大的诊所医生,对手机操作不熟练,超级签名需要用户先点链接获取UDID,才能生成对应的安装包,好多医生点半天跳不出来,要么就是弹一堆权限不知道怎么开,折腾了一下午才装好二十多个,当时真的头大,所以后来我们才换成了不需要UDID绑定的企业签名,对用户来说真的友好太多,扫个二维码直接下载安装,没有额外步骤,适合医疗类App的用户群体。
苹果的证书分发机制其实分好几种,我们常用的不经过AppStore的分发,就是三种:第一种是企业开发者账号的企业分发,也就是我们说的企业签名,企业账号一年299美元,本来就是给企业做内部应用分发用的,没有设备数量限制,也不需要绑定UDID,签完就能分发,所以适合我们这种几百个内部用户的场景。 第二种是AdHoc分发,也就是超级签名用的分发方式,用个人或者公司的99美元开发者账号,每个账号最多绑定100台设备,用户多的话就拼多个账号,所以成本会按设备涨。 第三种就是TestFlight的官方分发,也就是大家说的TF签名,是苹果官方提供的内测分发渠道,本身就是苹果认可的,所以稳定度最高。
说到这里,不得不提H5封装,我们团队初期为了赶进度,省开发成本,本来打算把已经做好的公众号H5直接封装成IPA,也就是H5封装,套个壳就能用,不用重新写原生,确实省了好多时间。 封装完生成未签名的IPA包之后,再做IPA签名,流程和原生IPA签名其实没区别,只要改好Bundle ID,配置正确,就能正常签名安装。 但H5封装的App大家都知道,很难过AppStore的审核,苹果认定套壳应用不符合上架要求,所以我们从一开始就没指望H5封装能上架,直接做签名分发,刚好适配我们的需求。
说到IPA签名,其实不管是企业签名、超级签名还是TF签名,本质都是给开发好或者封装好的未签名IPA包加上合法的苹果签名,没有签名的IPA包,iOS设备根本不可能安装,哪怕你扔进去也打不开,这是苹果系统的机制决定的。 我之前还帮一个朋友弄过,他自己从开发工具导出IPA,忘了改Bundle ID,结果签完之后一直提示安装失败,折腾了半天才找到问题,所以IPA签名之前,配置检查真的很重要。
最开始我不懂,贪便宜选了一个80块一个月的共享企业签名,用了不到六天就掉签了,掉签是什么? 就是苹果吊销了证书的授权,所有装了这个App的设备都打不开,一点就弹“未受信任的企业开发者”,根本用不了。 那时候我们已经给五十多个医生装好了,刚好赶上月底录入随访数据,所有医生都反映App打不开,我和团队的人一个个打电话通知,一个个教重新下载,折腾了整整两天,好多医生都抱怨,差点影响了和合作诊所的关系。 我去找签名商,人家说共享签名掉签是常事,补签要排队,等了一天多才给补上,那时候我真的后悔,为什么要贪这几十块的便宜。
掉签补签这个事,真的是签名里最头疼的,尤其是医疗健康类App,一刻都不能断,医生要录数据,患者要查随访提醒,掉签一天耽误的事都不止几百块。 后来我换了独立企业签名,就是一个证书只签我们这一个App,没有其他乱七八糟的App混签,苹果很难查到违规,掉签概率低太多,我用了快一年,只掉过一次,还是去年年底苹果大规模清理企业证书,很多证书都被吊销了,签名商提前给我打了招呼,当天就给换了新的证书补签,我们通知用户重新下载,半天就搞定了,没耽误什么事。
后来我也试过TF签名,其实TF签名真的很稳定,是苹果官方的,基本不会掉签,只要你不违规,App能一直用,而且用户安装也很方便,不需要绑定UDID,点链接跳转到TestFlight下载就行,比超级签名简单。 缺点就是TF需要过苹果的审核,虽然比AppStore上架松一点,但医疗类还是会卡资质,我们提交了三次才过,而且苹果规定一个TF版本最多只能有一万次安装,超过了就要重新打包提审,对于我们几百个用户来说其实够用,但要是以后用户涨了就麻烦,而且三个月之后内测到期还要重新提,所以我们还是把企业签名作为长期的过渡,TF只是用来做新版本的内测。
现在我们的资质已经凑齐了,正在准备重新提交AppStore上架,其实哪怕以后上架了,内测阶段还是需要签名,而且要是新版本审核不通过,还是需要签名先给用户用,苹果签名对于我们这种创业初期的医疗团队来说,真的是过渡阶段最好的选择。
做独立开发这么久,我一直觉得,选签名真的不能只看价格,尤其是医疗类的应用,稳定才是第一位的,选对了渠道,选稳定的独立证书,用起来真的省心很多,一路踩坑过来,这些经验都是实打实花时间花钱试出来的,现在用着顺手,也就不用折腾了,等着资质全了上架就行,现阶段能满足用户的需求,就是最好的选择。