TestFlight的使用--再也不用担心环境打错了

一、前言

在iOS开发过程中,难免会遇到各种Bug。因此你会去解决所有的Bug,然后提交到AppStore。但是,有的人也许会遇到这种情况:上架发布之后下载最新的包,发现访问的环境错误。仔细查看,原来是上传的包里面的环境打错了(正式环境、日常环境、预发环境,打的不是正式环境)。这种问题很尴尬,因为测试工程师在测试的时候使用的包的确没问题,所以这不是测试的锅,只能是开发人员的锅。经过我的测试,打好的用于上传到AppStore的release包是无法安装到测试机器上的。所以在你上传到AppStore之后提审直到发布,你才能直到你发布的包是否正确。

那么这个锅怎么甩呢?那就是使用TestFlight!

二、开始

在你的程序没有发布(release)到AppStore的时候,你可以使用TestFlight去邀请用户测试你的app,进而收集有用的反馈信息。

你可以仅仅通过测试者的email来邀请多达2000测试人员进行测试你还未发布的程序。

既然这么实用,那就来看看如何使用。

首先,你需要用手机安装TestFlight这个app。

首先安装并打开该App,你会发现界面如下:

下面的Apple ID就是当前安装该App的设备所登录的Apple ID。接下来,我们就可以进行测试了。这样你就对手机配置好了TestFlight(其实就是安装了个工具软件)。

接着,登录itunesconnect,创建或者查看已经存在的app页面:

你会发现有个TestFlight的选项,点击进入:

关闭弹窗之后你会发现界面如下:

这里的构建版本就是你正常上架AppStore的时候打包上传的包。点击所有测试员可以查看能够用TestFlight进行测试的人员。测试人员的添加在用户和职能中添加:

点击用户和职能中的TestFlight Beta版测试人员:

这里又分为内部和外部测试员,内部测试员从iTunes Connect用户里面添加,也就是内部开发人员。外部测试人员是可以不在iTunes Connect用户里面添加的。点击外部测试人员:

你可以按照上面的内容填写,然后添加测试人员。你也可以直接在testFlight处新建群组,然后添加外部测试人员。

然后在TestFlight处添加构建版本:

构建完版本之后,你所邀请的测试人员就会收到一封邮件:

点击View in TestFlight之后,你会发现里面有个大写的一串字母,此时打开你手机上的TestFilght,点击Redeem,然后输入看到的那一串大写字母,输入点击return即可安装测试版的app。

到这里你就可以进行测试了。

这里需要注意以下几点:

1、如果你遇到说缺少出口合规证明的问题,你可以在打包之前在Info.plist添加ITSAppUsesNonExemptEncryption并设置为NO:

这样再次打包,然后即可测试。

还有一种方法会让你避免出口合规证明的问题,那就是你还是按照正常的逻辑提交app,然后直接提交审核,这个时候再添加测试用户的时候便不会遇到这种问题了。个人比较推荐后者,因为你如果觉得你的app没有bug,你就可以打包提交审核,不过这时要设置手动发布。这样当你提交审核之后(app状态变成正在等待审核状态),测试人员便可以直接去通过TestFlight安装测试版,如果测试通过,我们就不用再次提交审核了。如果测试不通过,你可以取消该版本的审核,然后修改测试发现的Bug,修改之后再次提交。

三、总结

这里只是简单的介绍了一下TestFlight的使用,具体的内容还要自己去尝试,例如你可以设置测试信息,告诉测试人员需要测试的东西:

整个流程还是很方便的。

如果有疑问随时留言沟通。

时间: 2024-08-12 05:51:46

TestFlight的使用--再也不用担心环境打错了的相关文章

Xcode7的发布后的crash跟踪,轻松定位崩溃代码 Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS

Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BAD_ACCESS一直是很多开发者的噩梦,因为这个错误很不直观,出现后往往要花很长时间才能定位到错误.苹果这次带来了革命性的提升. 在项目的Scheme中Diagnostics下,选中enable address sanitizer(注意选中后Xcode会重新编译整个项目). 这样设置后,如果再出现类

Matlab命令合集 妈妈再也不用担心我不会用matlab了

matlab命令 一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变量名, whos 可以查看变量名细节.3.功能键:功能键 快捷键 说明方向上键 Ctrl+P 返回前一行输入方向下键 Ctrl+N 返回下一行输入方向左键 Ctrl+B 光标向后移一个字符方向右键 Ctrl+F 光标向前移一个字符Ctrl+方向右键 Ctrl+R 光标向右移一个字符Ctrl+方向左键 Ctr

【阿里云产品公测】离线归档OAS,再也不用担心备份空间了

[阿里云产品公测]离线归档OAS,再也不用担心备份空间了 作者:阿里云用户莫须有3i 1 起步  1.1 初识OAS  啥是OAS,请看官方说明: 引用: 开放归档服务(Open Archive Service,简称OAS),致力于提供低成本.高可靠的数据归档服务,适合于大数据的长久归档备份. 低成本.高可靠,长久归档备份,这是它的特色.  1.2 申请开通 当前还处于公测阶段,需要申请,试用期间,免费试用,每个用户可以存储不超过10T的数据,并且文件数量不超过10万个,大伙有什么超大文件,没地

[转帖]再也不用担心学不会K8S!17个K8S初学者必须掌握的知识点

再也不用担心学不会K8S!17个K8S初学者必须掌握的知识点 https://zhuanlan.zhihu.com/p/94656981 Kubernetes是一个可移植.可扩展的开源平台,用于管理容器化的工作负载和服务,有助于声明式配置和自动化.目前,Kubernetes正在以强劲的势头持续发展,其相关的生态也在不断完善.本文中,我们列出了所有Kubernetes入门者对于部署和管理Kubernetes容器不得不关注的17个方面. 1. 设置Kubernetes集群 Kubernetes有多个

妈妈再也不用担心我找不到文件了---find

1.find vs locate 在实际中,我们经常需要查找到一些特定文件,然后进行处理,LINUX提供了locate , find这两个命令用于文件查找. a.locate,非实时查找,非精确查找.linux会定期生成更新文件数据库,而locate将根据文件数据库进行查找.我们可以在使用locate命令前,更新文件数据库,使用updatedb即可.但是updatedb将会花费可能半天时间,SO LONG! b.find , 实时查找,精确查找.根据指定路径,查找标准,进行文件遍历(包括隐藏文件

Swift详解之四-------妈妈再也不用担心我的闭包了

妈妈再也不用担心我的闭包了 注:本文为作者自己总结,过于基础的就不再赘述 ,都是亲自测试的结果.如有错误或者遗漏的地方,欢迎指正,一起学习. swift中闭包是一个很强大的东西,闭包是自包含的函数代码块,可以在代码中被传递和使用.跟C 和 Objective-C 中的代码块(blocks)很相似 .这个大家必须掌握!必须掌握!必须掌握!重要的事情要说三遍 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包.下面我们就来攻克它! 1.闭包函数

利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了

前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体用法: 先买了一个便宜点的编码器: <ignore_js_op> 把刷错的BIOS芯片先拆下来:<ignore_js_op> 把芯片放到编码器上: 再找一台电脑,我的笔记本派上用场了,下载编码器的驱动程序和编码器软件:  <ignore_js_op> <ignore_

android 傻瓜式 MultiDex 插件,从此再也不用担心方法数问题!

ndroid-Easy-MultiDex 项目地址:TangXiaoLv/Android-Easy-MultiDex 简介:Android 傻瓜式 MultiDex 插件,从此再也不用担心方法数问题! 注 1:不想看前半部分的话可以直接跳过到最下面配置部分.注 2:本插件是基于DexKnifePlugin 1.5.6优化改造而来,感谢 ceabie 的无私奉献. 填坑之路 坑 1:65536 ,So easy! 原因:Dalvik 的 invoke-kind 指令集中,method refere

妈妈再也不用担心我js跨域了。。

$.getJSON('http://www.example.com/?aa=bb&callback=?', function(r){ console.log(r) }); //callback=?参数带上,妈妈再也不用担心我跨域了.jquery的getJSON利用的也是JSONP的原理去实现的.