我做普通APP测试已经快三年了,这几年接过大大小小上百个内测应用安装包,从正式上架到各种内测分发方式都摸了个遍,前段时间刚好接到一款带iMessage扩展功能的应用测试需求,用的就是支持iMessage应用的企业签名,整体体验下来感慨很多,正好把我这些年的真实使用经验整理出来,给其他测试同行和中小开发者做个参考。

先从我最熟悉的安装流程说起,不同授权渠道的安装步骤差别其实很大,我平时拿到最多的就是企业签名的ipa包,常规安装步骤分两种:一种是开发者把安装包发给我,我用爱思助手、PP助手这类第三方工具直接导入手机安装,另一种更常见,就是开发者给我一个下载链接,我直接用iOS自带的Safari浏览器打开,点击安装按钮就能自动下载安装到桌面,这次测的支持iMessage扩展的企业签名包,安装步骤和普通原生应用没任何区别,没有额外的配置步骤,这点比我预想的省心很多。

安装完成之后,大部分没上架AppStore的应用都不能直接打开,必须做证书信任操作,这里我也踩过不少坑,iOS不同版本的信任路径还不一样,iOS15及之前版本是打开设置→通用→描述文件与设备管理,就能找到对应开发者的证书描述文件,iOS16之后苹果把这个入口改到了设置→通用→VPN与设备管理,很多刚接触内测的测试者经常找不到入口,白忙活半天。 找到对应的描述文件之后,点击“信任XXX开发者”选项,确认系统弹框的信任提示就完成了,操作其实不难,就是入口改了之后很多人不清楚。 我之前碰到过装完iMessage扩展应用,主应用能打开但是扩展找不到的情况,后来发现是描述文件没信任完全,重新信任之后重启手机就正常了,要是操作完还是用不了,重启手机基本能解决九成的缓存问题。

说到证书就不得不提P12证书,我刚入行的时候以为P12就是个普通的安装文件,后来测多了才明白,P12是整个苹果应用签名的核心,它是开发者从苹果开发者平台导出的、包含了证书和私钥的加密文件,不管是企业签名还是上架AppStore,本质上都是用P12给应用签名,让iOS系统认可这个应用的合法性。 P12也分很多种,不同账号导出的P12权限不一样,企业开发者账号导出的P12才能做企业签名,而且P12需要提前配置好应用对应的权限,比如你要做带iMessage扩展的应用,就必须在生成P12的时候开通iMessage扩展的权限,不然签出来的应用主应用能用,扩展功能就是用不了,我之前就碰到过一次,用没开通权限的共享P12签iMessage应用,折腾了大半天都没法调用扩展,后来换成配置好权限的专属P12重新签名,一次就成功了,所以P12的权限配置直接决定了应用的功能能不能正常用,这点真的很重要。 另外P12的共享情况也直接影响签名稳定性,一个P12签几百个应用和一个P12只给一个应用用,稳定性差的不是一点半点,苹果的检测机制很容易发现共享P12的异常流量,进而吊销证书,导致应用失效。

接下来说说我碰到最多的应用失效问题,这么多年我总结了一套完整的处理方式,碰到失效先别慌,第一步先判断失效原因:如果是刚安装就弹未受信任,那基本就是没做证书信任操作,按之前说的步骤去设置里信任就好;如果是之前能用,突然打不开弹证书失效提示,那就是签名掉了,证书被苹果吊销了,不同授权渠道的处理方式不一样:如果是通用企业签名,大部分没有补签服务,只能找开发者重新签名后重新安装,本地数据如果没有备份就会丢失;如果是专属企业签名,现在大部分服务商都提供自动补签服务,不需要卸载重装,开发者在后台补签完成后,等个三五分钟重新打开应用就能用,本地数据完全不会丢,非常省心;如果是TF内测的应用,失效一般是内测过期(苹果官方TF内测有效期只有90天)或者内测名额用完了,处理方式就是开发者重新提交TF版本,测试者重新下载即可;如果是H5封装的应用,失效要么是签名掉了,要么是封装的网页地址变更或者服务器出问题,签名掉了重新签名,地址问题更新安装包就能解决;如果是AppStore上架的应用,基本很少失效,除非开发者主动下架或者应用违规被苹果下架,这种情况就只能等开发者重新审核上架了。 我之前测那款iMessage应用的时候,有一次碰到扩展功能突然失效,排查下来就是证书权限掉了,开发者重新用配置好权限的P12补签之后,十分钟就恢复正常了,完全没影响测试进度。

接下来聊聊我用过的所有授权渠道的真实感受,也重点说说怎么用才能流畅稳定,这些都是我踩坑踩出来的经验。

第一个是AppStore上架,这是最正规最稳定的方式,我测过很多正式上线的应用,体验确实最好:直接在AppStore搜索就能下载,更新自动提示,永远不会掉签,所有系统权限都开放,不管是iMessage扩展还是推送、小组件都能完美支持,用户信任度也最高,唯一的缺点就是审核严格,审核周期长,普通内测版本根本没法上架,动不动就会因为内容问题被拒,少则三四天多则十几天才能过审,所以只有正式发布的应用才会走AppStore上架,内测很少用。

第二个是TF内测也就是TestFlight内测,这是苹果官方的内测渠道,现在用的非常多,我测过很多走TF的内测包,整体体验还不错:因为是苹果官方认可的内测方式,所以基本不会掉签,稳定性仅次于AppStore上架,只要权限配置正确,iMessage扩展这类功能也能正常用,分享也方便,开发者给个邀请链接,点一下就能跳转到TestFlight下载,不需要手动做证书信任,比企业签名省事。 缺点也很明显,首先每个应用最多只能有10000个内测名额,大规模测试不够用,其次也要过苹果审核,虽然比AppStore松,但还是需要1-3天的审核时间,而且有效期只有90天,到期必须重新提交,另外测试者必须额外安装TestFlight应用,占用手机存储空间,有时候TestFlight服务器抽风,就算网络很好也下载失败,得等大半天才能恢复,我就碰到过好几次这种情况,耽误测试进度。

第三个是H5封装,就是把移动端网页打包成ipa安装包,再做签名就能安装,我测过不少这种包,一般都是简单的工具类或者展示类应用,优点是开发快,改内容只需要改网页,不需要重新发安装包,更新方便,但是缺点真的很明显:流畅度差,加载慢,很多原生功能调用不了,像iMessage扩展这类功能根本没法实现,就算签名了也用不了,而且稳定性差,网页服务器一出问题整个应用就用不了,安全性也一般,所以我只推荐做临时的简单工具用,复杂应用千万别用H5封装,体验太差。

第四个就是企业签名,也是现在内测用的最多的方式,企业签名分专属授权和通用授权两种,我都用了很多年,感受差别非常大。 通用授权就是共享签名,很多开发者共用一个企业证书的P12,价格非常便宜,几块钱几十块就能签一个,我刚入行的时候图便宜用过不少,体验真的很差,最大的问题就是不稳定,三天两头掉签,有时候今天装完明天就打不开,而且一个证书签几百个应用,什么类型的应用都有,只要有一个违规应用被苹果查到,整个证书的所有应用都会失效,而且大部分通用签名的P12都不会配置iMessage这类扩展权限,根本签不了带扩展的应用,所以通用授权只适合用个一两天就扔掉的临时测试包,长期用绝对不行。

专属授权企业签名就是一个开发者或者一个应用用独立的P12证书,不和其他开发者共享,我现在测长期内测包基本都用这种,这次测的支持iMessage扩展的应用就是用的专属授权,体验真的好很多:首先稳定性高很多,因为是独享P12,没有其他违规应用影响,苹果很难检测到异常,掉签概率非常低,我这个包用了三个多月了,一次都没掉过,非常稳定。 其次专属授权可以自定义配置P12的权限,iMessage扩展、推送、小组件这些都能正常开通,所以装完之后所有功能都能用,我现在测试的时候,发消息可以直接在iMessage扩展栏调用应用功能,发贴纸、传内容都很流畅,和上架AppStore的应用没有任何区别,完全满足测试需求。 而且现在大部分专属签名都有自动补签服务,就算真的掉签也不用卸载重装,不会丢测试数据,省了很多麻烦。 当然专属授权价格比通用授权高,但是对于长期测试来说真的物有所值,总比三天两头掉签重装丢数据强。

我这些年总结出来的企业签名流畅稳定用法其实很简单:第一优先选专属授权,不要用共享的通用授权,独享P12是稳定的基础;第二不要贪便宜用免费签名,免费签名基本都是共享的,不仅容易掉,还有安全风险;第三应用本身要合规,违规内容不管什么签名都会被苹果吊销;第四安装尽量用官方链接Safari直接下载,不要用乱七八糟的第三方工具,减少出问题的概率。

总的来说,不同的需求适合不同的授权方式,正式发布选AppStore上架,正规小规模内测选TF内测,临时测试选通用授权签名,长期内测或者带特殊功能的应用选专属授权企业签名,只要选对了,就算是企业签名也能稳定支持iMessage应用,体验不输官方渠道,这就是我作为普通测试者这么多年的真实体验。