iOS开发如何做外部测试

2019-01-05

iOS开发如何做外部测试

我们做APP开发的,开发出来的APP还未上线,又要想给别人用一下,该怎么做?实际上这是我们每个做APP开发的人都会遇到的,但是并不是每个人都清楚怎么做,有哪些方式。今天我们就来讲一讲。

在将iOS的APP如何给别人使用和测试前,先说一下安卓APP开发是怎么做的。安卓端是很简单的,你只要先生成一个证书文件keystone,然后用这个文件给apk签名,就可以将apk发给任意一个人安装使用了。这很简单,也很方便。可是iOS的就没那么容易了。我们还是从最简单的开发人员如何用真机测试开始说起。

真机调试

我们有了一个想法,并开始写代码,模拟器调试很方便,要在iPhone上看效果怎么办了。你直接将iPhone连上电脑是不行的。现在的情况至少你需要一个Apple ID,在Xcode上登录你的账号,在调试前Xcode会自动帮你初始化一些东西,然后就可以将APP安装到你的iPhone上了。在以前,你这个AppleID不能是普通的账号,必须是付了前的开发者账号才行。现在苹果放宽限制了。

这种方式的做法是你的手机必须连上你的电脑,在Xcode上选择你的iPhone来调试,Xcode会自动帮你注册设备的UDID。如果你没办法把iPhone连接到电脑上呢?或者不方便把iPhone连接到电脑上,毕竟如果是老板的手机的话,不方便那种做的。那我们需要一种把安装包提供给别人安装,或者一个地址给别人安装的方式。

adhoc 方式

我们将项目archive后,在导出(现在Xcode叫distribution)的时候,有个选项是adhoc,就是专门来做这个的。我们可以将APP导出成一个IPA,然后把这个IPA丢给别人,对方可以通过将iPhone连接到电脑,打开iTunes,通过iTunes来安装这个IPA到手机上。这还是有点麻烦,普遍做法都是放到一个网页上,别人通过这个网页来安装这个IPA。我一般都是借助第三方来做这步,例如蒲公英网站就是专门做种业务的。把你的IPA上传到蒲公英上,还会生成网址二维码,很方便分发。

但是这个IPA并不是每个人都可以安装的,能安装的前提是他/她的手机必须先注册过,即他/她的手机的UDID必须先注册到苹果的网站上,最终在打包IPA的时候苹果会把这些UDID写入证书里,只有注册过的手机才能安装成功。

如何注册手机UDID呢?最简单的方法是将手机连接到开发电脑,Xcode会自动帮你注册这个设备。但是并这很不方便,因为别人的手机你不能预先拿到的。当然还有别的方法,例如你放手机拥有这连接电脑,在iTunes上可以看到那部手机的UDID,让他把UDID发给你。这样的操作成本也很高。还是借助别人第三方来做这个事情比较好。蒲公英在这方面做得不错,他们专门做了个网站来帮你获取UDID。网站地址是:https://www.pgyer.com/udid。我一般都是把这个网址发给对方,对方按照网址的做法就可以获取到他手机的UDID,通过微信发给我。然后我到itunesconnect网站上,把这个UDID注册好。有一点特别需要的是,你注册好UDID后,要重新导出IPA。之前已经导出的IPA还是不能装的,要重新打包和导出IPA。并且要特别注意,在导出IPA之前,要把本地的profiles文件先删掉,让Xcode去苹果服务器同步最新的已注册设备列表。profiles文件一般是存放在 /Users/用户名/Library/MobileDevice/Provisioning Profiles 这个目录下。将这个目录下的文件都删掉,在下次打包导出的时候,会自动重新下载最新的。

adhoc方式还是有UDID这个前提,还是不是很方便,有没有不需要任何登记,直接给个安装地址,就能安装的呢?还是有的,下面介绍。

Enterprise(企业级证书)方式

有一种证书叫企业级开发证书,这种证书跟普通的开发者证书不一样。企业级开发证书是299美刀每年,普通的开发证书是99刀每年。而且不要跟99刀每年的开发证书里面的企业开发者混淆。在99刀每年的开发证书里,分个人开发者和企业开发者两种,企业开发者要提交的资料多一些。企业级开发证书是专门用户处理APP不需要上架App Store的情况。也就是说你用这个证书开发的APP,可以不经过Apple审核,不上App Store,自己发布,别人就能安装。

什么情况下会用到这种证书呢,我想一种情况是企业内部的APP,因为一些问题,不需要上App Store,自己内部人士使用,采用这种方式是很好的。还有一种用法就是用作beta测试。我们开发出来的APP,需要进行多人的beta测试,可以用企业级证书来打包发布,然后把安装网址发给用户,用户就可以安装使用了。真的很方便。这种方式还是挺流行的,特别是大公司内部,都是使用这种方式来做测试,当测试完成之后,再用普通开发证书打包,提交到App Store审核,完美。

那这种方式有没有什么弊端?当然是有的,例如用企业级开发证书打包的APP,无法使用推送通知,还有一些跟App Store相关的功能。如果你是内部使用的APP,还无法使用App Store来更新APP,只有你们自己实现APP更新的功能。还有一个缺点,一般来说用企业级开发证书打包APP,使用的BundleID跟正式要发布到App Store的BundleID是不一样的(普通做法都是在正式的bundleID后面加Enterprise后者.enterprise),这样安装到手机上就是两个不同的APP了。对应普通用户来说,你不知道怎么给他解释这个。如果企业版和正式版都用同一个BundleID,也有不好的地方。另外还有一个缺点,就是安装企业版APP的时候,需要先信任一个证书。而且是要到设置里面自己点击信任,操作有点难度,而且很多人不敢怎么信任这些。。

另外,如果你只是用企业级开发证书来打包测试的,那么要经常在企业级开发证书和普通开发证书之前切换,你用持续集成环境打包的话,还要专门设置企业版打包,我以前用Jenkins做个这个设置,挺烦,折腾了不少精力,也专门写过这方面的文章。

现在还有很多企业是用这种方式来做beta测试的。

TestFlight,公开链接

大公司可以申请企业级开发证书,他们不在乎那点钱。企业级开发证书打包可以随时打包随时发布,那真是比较理想的beta测试方式。但是小公司怎么办呢,小公司没那么多财力和精力做这个事情。苹果也提供了TestFlight的方式。 TestFlight最早是一个独立的公司,后来被苹果公司收购了,并整合到了iTunesconnect上。早期我们怎么用TestFlight来做beta测试呢?从iTunesconnect上可以看到,有一个内部测试和外部测试分类。内部测试,就是你可以邀请一些人(通过他们的Apple ID)来加入iTunesconnect,让他们作为内部测试人员。你只需要将你的APP上传到iTunesconnect,然后你刚刚上传的版本,加入到内部测试中,内部测试人员就可以收到邮件,邮件里会教他们如何使用TestFlight来安装测试。这种方似乎有缺陷,因为必须邀请他们加入iTunesconnect才行,显示这是针对公司内部人员的。

而外部测试的话,不需要邀请,但是需要获取他们的邮件地址。并且你的APP版本需要先提交审核人员审核,审核通过了才能通过邮件发给相关人员。后来有第三方公司专门做这个的,不再需要用户是邮件了。你只需在审核过后,导入他们提供的文件就可以愉快的发布任何用户测试了。这种方式我自己没有试过,但是我通过这种方式安装过别人的APP。如果可以省略掉手机用户的邮件这步,真是一个大进步。

不过好消息是,现在苹果已经提供了一种叫公开链接的方式,不再需要手机用户的邮件来做beta测试了。当然审核是省略不了,你仍然需要上传你构建的APP,然后建一个小组,在这个组里选中你刚构建的版本,提交审核。审核过后,会有一个叫公开连接的按钮,点击之后,会生成一个连接地址,你可以把这个链接地址发给任何人,他们打开这个链接后,会有教他们怎安装使用(当让还是通过TestFlight)。

现在我看淘宝和京东已经采用这种方式在做beta测试了。这种方式优点很明显:用户是通过苹果官方方式安装的,他们比较信任这个,比那种企业版要额外信任的方式要好。还有这种方式跟正式版是没有任何区别的,推送什么的都是正常可以用的。当然缺点就是每个版本都需要苹果先审核,有点慢,不够快捷(也许这不算缺点,因为这是必要的)。

我觉得公开链接这种方式是最好的beta测试方式,值得每个iOS开发负责人去使用。


如果你觉得这篇文章有用,请打赏小钱喝杯咖啡^_^ 打赏

Category: 技术 Tagged: iOS开发 beta测试 TestFlight 公开链接

comments

Page 1 of 1