去年我凑了几个朋友做本地商家的会员工具,一开始图快用H5封装成了IPA包,想先找几百个种子用户内测改bug,本来想直接走AppStore上架,一问才知道软著要办,审核要等,少则半个月多则一两个月,我们几个小创业者哪等得及,就想着先做IPA签名内测,谁知道第一步就踩了坑:装完APP点图标,直接提示未信任开发者,跟着教程去设备管理里点信任,弹出来的就是苹果签名证书信任失败,当时我整个人都懵了,对着网上的教程折腾了快一个小时,还是不行。
那时候我连苹果签名的基本逻辑都搞不懂,只知道打包出来的IPA必须签名才能装到苹果手机上。后来问了一个做开发的朋友才知道,我贪便宜找的免费企业签名,用的是早就被苹果标记过的共享证书,早就被吊销了,当然信任失败,折腾手机根本没用,问题出在证书本身。
摸清楚第一次踩坑的原因之后,我开始一点点梳理自己的内测流程。现在我的流程走得特别顺:H5封装完IPA包,先整理好安装包,根据种子用户的数量选签名方式,一百人以内的小范围测试用超级签名,几百上千人的测试就转TF签名,不管用哪种,P12证书我都自己存在云盘和本地双备份,从来不假手他人乱共享。
说到设备管理,我真的踩过太多坑了。最早用免费企业签名的时候,企业证书不需要绑定设备UDID,当时觉得太方便了,随便用户装,多少设备都能加,结果麻烦全在后面:每一个用户装完都要来问我,为什么打开提示未信任,我还要一个个发教程,告诉他们打开设置,点通用,找VPN与设备管理,找到对应的描述文件点信任,新iOS改了位置之后,好多用户找十分钟都找不到,我那时候半个月的时间,一半的精力都用来解答设备管理的问题,根本没空改产品。
后来换了超级签名,才算消停一点。超级签名用的是个人苹果开发者账号的内测权限,每个个人账号最多可以绑100台设备,原理就是提前把用户设备的UDID录到账号里,然后用对应的P12证书签名,装完之后用户直接就能打开,根本不需要去设备管理里手动信任,省了太多事。我自己就申请了一个个人苹果开发者账号,一年也就六百多块钱,比乱七八糟的签名服务费划算多了。
超级签名也不是没有问题,就是要用户提供UDID,好多普通用户根本不知道UDID是什么,我还要做教程教他们怎么查,加新设备还要重新签名打包,稍微麻烦一点,小范围测的时候一百台以内,折腾一下也能接受。我用超级签名那会,一开始找的共享签名池,就是好多APP共用一堆证书和账号,结果用了半个月就掉签了,一百多台设备全部用不了,当时二十多个种子用户直接卸载走了,给我心疼坏了。
那次掉签之后我才搞明白P12证书管理的重要性。P12证书就是我们从苹果开发者后台导出的开发证书,必须带私钥才能用,很多服务商为了省成本,一个P12证书给几十个上百个APP共用,只要其中一个APP违规,苹果直接封证书,所有签过的APP全部掉签,谁都用不了。我第一次导出P12的时候,不知道要勾选私钥选项,导出来给服务商,人家说证书根本用不了,我又重新登后台,重新在钥匙串里导出,折腾了一下午才弄对。
现在我自己管理P12,导出的时候一定会确认带上私钥,密码单独存在密码管理器里,从来不会把自己的P12共享给别的APP用,一个证书最多签两个我的测试包,绝不多签,就怕被苹果检测到共享,连累我的证书被封。导出之后我还会自己拿测试机装一遍试,确认能正常打开能信任,再存到双备份里,就怕导出错了耽误事。
后来种子用户超过一百人,我就转了TF签名,也就是TestFlight签名,用到现在快一年了,最大的感受就是稳定省心,真的比我之前用的所有签名都稳。TF是苹果官方出的内测渠道,本身就是苹果允许的,只要你的包不违规,基本不会掉签,也不会出现证书信任失败的问题。我转TF之后,就再也没遇到过批量掉签的情况,用户装的时候只要点开我发的链接,跳转到TestFlight就能下载,根本不用找UDID,也不用去设备管理弄信任,对用户太友好了,我现在客服都不用天天解答签名的问题,省出来的时间全都用来改产品对接商家。
TF也不是没有小问题,比如每个内测链接有效期是90天,到期之后要重新上传一下包,其实也就几分钟的事,更新版本也一样,重新打包上传,审核一般一天内就过了。我有一次打包的时候证书错了,审核卡了三天,后来重新导出正确的P12重新上传,当天就过了,都是很小的问题,不影响使用。
说到苹果签名证书信任失败,我现在遇到这种问题,半分钟就能定位解决。首先,要是用户弹信任失败,先让用户把APP删掉,检查一下描述文件是不是还在,要是描述文件没了,基本就是证书掉签了,不用折腾用户手机,直接重新发新的签名包就行,要是描述文件还在,删了APP重下一遍基本就能解决,90%的信任失败都是证书端的问题,不是用户手机的问题。
做了快一年的内测,我也攒了不少防掉签的技巧,核心就是尽量不碰共享证书,尽量用官方渠道,稳定比便宜重要。第一,P12证书绝对不共享,自己的证书自己用,哪怕找服务商签名,也要求用自己的证书,不要用服务商的共享证书,贪便宜几块钱一个月的签名,掉一次签损失的用户都不止这个钱。第二,H5封装的时候不要加违规代码,很多人做封装喜欢加跳转过审的代码,哪怕是内测,苹果也能检测到,一旦检测到直接封证书,所以我封装都是用干净的代码,什么额外的东西都不加,从来没因为这个出过问题。第三,能上TF就尽量不要用企业签名和共享超级签名,TF是苹果官方的,只要你不违规,基本不会掉签,我用了快一年,就没掉过,省心程度真的没法比。第四,苹果开发者账号能自己申请就自己申请,不要一直用别人的账号,自己的账号自己管理,密码和证书都存在自己这里,别人拿不走,也不会随便给你停掉,我自己的个人账号用了快两年,从来没出过问题。第五,证书一定要双备份,本地存一份,加密云盘存一份,密码单独记,要是证书丢了,重新申请又要折腾好几天,耽误内测进度。
现在我内测已经做了快一年,改了三百多版bug,种子用户反馈都不错,软著也办下来了,正在准备包上架AppStore,回头看一开始走IPA签名内测这一步真的选对了,要是一开始等上架再测,不知道要走多少弯路,浪费多少时间。
我作为一个小创业者,一开始真的什么都不懂,从H5封装到IPA签名,从找设备管理到处理证书信任失败,踩了无数坑,走了好多弯路,现在才摸出来一套适合小团队的内测流程,真的感慨很多。其实签名这块,说白了就是稳定第一,我们小团队没有那么多精力天天处理掉签、处理用户信任失败的问题,能把这块省省心,把精力放在产品上,比什么都重要。我之前也贪过便宜,找过几十块钱一年的签名,结果掉签找不到人,用户跑了一堆,后来才明白,靠谱的签名,能稳定用,比什么都强。现在我这边不管是小范围测试还是大规模内测,都用这套方法,一百台以内用自己账号的超级签名,一百台以上转TF,P12自己管,证书不共享,基本上很少出问题,就算出了证书信任失败,几分钟就能解决,根本不用慌,能安安稳稳做产品,比什么都强。