打包iOS App并上架到TestFlight测试

开发者账号

首先需要注册一个开发者账号,不然什么都免谈。在手机Apple Developer上注册给钱就行了,个人开发者一年688元。

打包App

App开发好后,就可以通过XCode打包。打包前选好版本号,不要跟以前提交的一样,重复的Version和Build是无法提交的。当然第一次打包就不可能会重复了。

在菜单栏选择Product,然后选Archive进行打包:

打包完成,会弹出以下对话框,就可以把应用上传到App Store Connect了。

上面这个对话框可以按下面的方式打开:

ios-build-and-testflight.open-archive-list

上传

打包完后,点击Distribute App进行上传:

ios-build-and-testflight.distribute-method ios-build-and-testflight.distribute-way ios-build-and-testflight.distribute-option ios-build-and-testflight.distribute-sign

大概两三分钟,就上传完成了:

ios-build-and-testflight.distribute-uploaded

遇到的一些问题

上传后,App Store Connect还会有检验,比如我第一次上传就遇到以下问题:

因为我引用了一些库,它带有一些权限相关的接口,即使我实际没用上,但还是需要在Info.plist上添加相关说明。

<key>NSPhotoLibraryUsageDescription</key>
<string>This App no need</string>
<key>NSHealthShareUsageDescription</key>
<string>This App no need</string>
<key>NSHealthUpdateUsageDescription</key>
<string>This App no need</string>

参考: NSPhotoLibraryUsageDescription key must be present in Info.plist to use camera roll

同时打开通知推送,但实际不用。

解决以上问题并重新打包即可。

App Store Connect查看

上传成功后,可以登陆Connect查看:http://appstoreconnect.apple.com/apps

等待一段时间后,可能会出现下面的问题,这个小问题,只要在页面上填一下信息就好:

点击管理:

ios-build-and-testflight.connect-warn1 ios-build-and-testflight.connect-warn2 ios-build-and-testflight.connect-warn3 ios-build-and-testflight.connect-warn4

接着就是添加内测和外测群组。然后提交审核。内测不需要审核,外测需要:

ios-build-and-testflight.connect-reviewing

完成审核,就可以让外测人员测试了。

本文转载于网络 如有侵权请联系删除

相关文章

  • 一周技术学习笔记(第62期)-CQRS是”有点不同“的读写分离

    对数据的操作一共就四种。 图自https://time.geekbang.org/dailylesson/detail/100056986 我们把这四种操作,又划分为两类,读和写。为了提升对数据库的性能,我们又做了读写分离。上面这个图是我们最为熟悉的读写分离场景了,另外我们也熟悉了这样的方法有两个不好地方。1、写库有单点故障问题。2、数据库同步有延迟。TIP:读写分离,更主要是为了减少读操作的压力。有了数据库层面的”归纳“:CRUD->读、写,那么在应用层面我们可以做点啥呢。可以继续”归纳“:CRUD->读、写->查询、命令。这里将查询和命令分开,也就是我们要说的CQRS(CommandQueryResponsibilitySegregation)模型,命令与查询职责分离。图自https://time.geekbang.org/dailylesson/detail/100056986 这样,我们在应用层面就可以抽象成如下模样。图自https://time.geekbang.org/dailylesson/detail/100056986 到这里,估计你看出来了,没错,

  • 又一招,让超算唾手可得

    在业界呼唤超强算力的时代,腾讯云计算产品重磅推出全新高性能计算集群HCC,充分满足您在云上部署大规模高性能计算软件、高性能AI分布式训练集群等需求。超强算力,唾手可得。互动福利知乎搜索关注「腾讯云服务器」机构号及话题并赞同/喜欢/收藏任意内容11.2018:00将从关注用户中抽取300名用户赠送腾讯云十周年微信红包封面投稿腾讯云服务器长期征集原创内容。稿件一经征用即可获得最高千元代金券奖励。公众号后台回复“投稿”即可查看。推荐阅读产品|开启APIEasy模式,试试APIInspector活动|前方高能:全年底价,来就对了活动|轻量限定套餐发售,这次@老用户

  • 解决 Elasticsearch type 不一致导致写入数据失败

    在Elasticsearch7.x以前的版本中,当ESClient写数据的时候报了如下错误:2020-03-1310:00:41.076ERROR9---[ReportESThread0].g.c.c.AbstractElasticsearchReportClient:item:2634ef87-ec48-4d38-899f-508ba8b69b9c,errorReason:Rejectingmappingupdateto[journal_test]asthefinalmappingwouldhavemorethan1type:[default,doc]意思就是说你写入的数据的中的type与你创建索引时指定type不一致。比如我创建时"_type":"_doc",而写入时为"_type":"default"。因此,有两种办法,要么修改写入数据时的type,要么修改当前索引的type。不过在最新的7.x没有该问题了,因为官方已经把type功能移除了。考虑到更改写入时候的type就得重启应用,会影响用户使用。所

  • 使用Codable归档Swift对象

    UserDefaults非常适合存储简单的设置,例如整数和布尔值,但是当涉及复杂数据时——例如自定义Swift类型——我们需要做更多的工作。我们可以使用以下简单的User数据结构:structUser{ varfirstName:String varlastName:String }复制它有两个字符串,但并不特殊——它们只是一段文本。整数,布尔值(真或假)和Double也是如此。这些值的数组和字典也很容易想到:一个字符串,然后是另一个,然后是第三个,依此类推。当使用这样的数据时,Swift为我们提供了一个很棒的协议,称为Codable:一种专门用于存档和取消存档数据的协议,这是一种“将对象转换为纯文本然后再次转换”的奇特方式。我们将在未来的项目中更多地研究Codable,但是目前我们的需求很简单:我们想要归档一个自定义类型,以便可以将其放入UserDefaults中,然后在从UserDefaults中返回时将其取消存档。当使用仅具有简单属性的类型(字符串,整数,布尔值,字符串数组等)时,支持归档和取消归档的唯一需要做的就是向Codable添加一致性,如下所示:structUser:Co

  • 为 React 预览版的未来做准备

    为了与React生态系统的合作伙伴分享即将到来的变化,我们正在建立正式的预览通道,我们希望这个过程能帮助我们对React的变化更有自信,并让开发者有机会尝试实验性的功能。 这篇文章将与框架、库或者开发者工具的开发者相关。主要使用React来构建面向用户的应用程序的开发人员不需要担心我们的预览通道。React依赖于蓬勃发展的开源社区来提交bug报告,pull请求和 提交 RFC。为了鼓励反馈,我们有时会分享包含未发布特性的React的特殊版本。由于React的真实来源是我们的 公共 GitHub 库,你可以构建一个包含最新变化的React副本。但是,对于开发人员来说,从npm安装React非常容易,因此我们有时会将预览版发布到npm注册表。最近的一个例子是16.7alpha版本,其中包括了早期版本的HookAPI。我们想让开发人员更容易地测试React的预览版,因此我们使用了三个独立的发布通道来正式确定我们的流程。发布通道 这篇文章中的信息也可以在我们的发布通道文档页面找到。每当发布过程发生变化时,我们都会更新该文档。React的每个发布通道都是针对不同的用例设计的:- Latest是稳

  • Java线程池「异常处理」正确姿势:有病就得治

    假设我们有一个线程池,由于程序需要,我们向该线程池中提交了好多好多任务,但是这些任务都没有对异常进行trycatch处理,并且运行的时候都抛出了异常。这会对线程池的运行带来什么影响? 正确答案是:没有影响。这可不是好事情。 想一下,如果是你开发了一个线程池供开发者使用,你会不会对这种情况做处理?想想也是肯定的,不然你提供给别人使用的东西就是有问题的,欠考虑的。而且java线程池的主要开发人员是大名鼎鼎的DougLea,你觉得他开发的代码怎么会允许出现这种问题? 这个问题很棘手,因为它躺在角落里,程序正常运行的时候,它并不会出来作祟。问题分析接下来我们来看一下java中的线程池是如何运行我们提交的任务的,详细流程比较复杂,这里我们不关注,我们只关注任务执行的部分。java中的线程池用的是ThreadPoolExecutor,真正执行代码的部分是runWorker方法:finalvoidrunWorker(Workerw)可以看到,程序会捕获包括Error在内的所有异常,并且在程序最后,将出现过的异常和当前任务传递给afterExecute方法。 而ThreadPoolExecutor中的

  • 企业安全体系架构分析:开发安全架构之可用性架构

    上一期大概讲述了安全体系架构的概述以及管理层面的安全体系架构,这一期来讲讲业务在设计时制定安全架构的落地实施。一、确定业务接口因为业务的特殊性,业务接口可能不止是web层面的,有些业务为了保证传输速率甚至有可能是udp协议传输,也有些业务走的是socket协议,首先就是要确定你的业务接口走的是什么协议,以下以TCP-HTTP协议为主,其他协议的架构安全会在后期叙述。二、业务逻辑设计通过上面步骤确定好了业务接口后,需要按照业务的逻辑去设计架构(以下均为http接口设计架构),举例,某业务分为以下几点,API接口与客户对接,静态资源展示企业信息,管理接口对应企业内部人员审核等工作,客户接口对应客户的管理工作。在资金并不充足的情况下(不投入厂商安全设备),那么对应的架构应该如何设计呢?逻辑架构图(可用性部分):首先要有代理服务器,保证应用服务器不会直接暴露在公网上。其次要有日志服务器,汇总应用日志与攻击日志,防御服务器可以自己组建,各种脚本的匹配来确定请求是否合法。由互联网访问的请求首先经过代理服务器,这么做的好处在于会保护应用服务器的真实IP与端口,举个例子,应用服务器对外接口是443,那

  • Python 2.7即将停止维护,3.X炫酷新特性你都了解吗?

    导读:从3.0到3.8,Python3已经更新了一波又一波,但似乎我们用起来和2.7没有太大区别?以前该怎么写2.7的代码现在就怎么写,只不过少数表达方式变了而已。在这篇文章中,作者介绍了3.0以来真正Amazing的新函数与新方法,也许这些方法我们都不太熟,但它们确实在实践中非常重要。作者:VinkoKodžoman来源:机器之心(ID:almosthuman2014)编译参与:GeekAI、思源许多人在了解到Python2.7即将停止维护后,都开始将他们的Python版本从2切换到3。截止到5月19号上午10点,Python2.7将终结于……在这一段时间中,很多优秀开源项目与库已经停止了对2.7的支持。例如到今年1月份,NumPy将停止支持Python2;到今年年末,Ipython、Cython和Pandas等等都将陆续停止支持Python2。虽然我们都往3.X迁移,但许多人编写的Python3代码仍然看起来像Python2一样,只不过加入了一些括号或改了些API。在本文中,作者将展示一些令人激动的Python3.X新特性。这些特性或方法都是Python3各个版本中新加的,它们相比

  • Leetcode-Medium 5. Longest Palindromic Substring

    题目描述给定一个字符串s,找到s中最长的回文子串。你可以假设s长度最长为1000。Example1:Input:"babad" Output:"bab" Note:"aba"isalsoavalidanswer.复制Example2:Input:"cbbd" Output:"bb"复制思路假如输入的字符串长度就是1 那么这个字符串的最长回文串就是它自己,长度就是1假如字符串长度为2,它要是回文串的化,就需要两个字符是相等的。 即:s[i]==s[j]且i-j=1(此处假定i是较大索引位置)那么对于i-j>1的情况下呢?是不是只要满足下面的条件就可以了: 即:s[i]==s[j]&&s[i-1]==s[j+1] 参考链接:https://juejin.im/post/5aa51c49f265da23870e748d代码实现classSolution(object): deflongestPalindrome(self,s): ans='' max_

  • iOS运用runtime全局修改UILabel的默认字体

    iOS运用runtime全局修改UILabel的默认字体一、需求背景介绍        在项目比较成熟的基础上,遇到了这样一个需求,应用中需要引入新的字体,需要更换所有Label的默认字体,但是同时,对于一些特殊设置了字体的label又不需要更换。乍看起来,这个问题确实十分棘手,首先项目比较大,一个一个设置所有使用到的label的font工作量是巨大的,并且在许多动态展示的界面中,可能会漏掉一些label,产生bug。其次,项目中的label来源并不唯一,有用代码创建的,有xib和storyBoard中的,这也将浪费很大的精力。这种情况下,我们可能会有下面两种处理方式。二、处理方式1、使用框架        创建我们自己的BaseLabel类,在其中进行默认字体的设置,并且并不影响在使用过程中特殊设置字体的label,这种方式可以满足我们的需求,但是并不适于我们的场景,项目已经成熟,重建一个label基类,来让所有的UILabel都换成它的工作量不会比重新设置所有label字体的工作量小太多。但这也是有优势的,至少如果下次再换字体,我们就不用麻烦了。2、使用runtime替换UILab

  • 专栏:011:Elasticsearch 的使用

    001.jpg用理工科思维看待这个世界 系列爬虫专栏 崇尚的学习思维是:输入,输出平衡,且平衡点不断攀升。 希望我眼中的世界,是个温暖纯真的世界. 今天的主题是:elasticsearch的使用 0:框架序号内容说明01概念--02安装及配置--03使用--04实战--05总结及说明--1:概念Elasticsearch Elasticsearch是一个实时分布式搜索和分析引擎。特点 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理PB级结构化或非结构化数据索引index(数据库) Elasticsearch中存储数据的行为。文档type(表)对比RelationDB->Databases->tables->rows->columns Elasticsearch->Indices->Types->Documents->Fields复制2:安装windows平台为例 下载Elasticsearch官网解压安装下载JAVA官网安装配置JAVA环境变量环境变量新建系统变量JAVA_HOM

  • IT行业(新生)面试的套路及变迁

    离开印度了,那话题也就重归IT行业吧。今天重点聊聊一个面试的话题,面试的套路问题。我把重点放在刚毕业或者毕业不久以后的学生上,会显得更合适一些。 大家都知道面试很重要,找工作需要面试。但是其实面试和面试不一样,套路和套路很不同。而且随着新公司的诞生,套路也有了不同的变化,我在这里想简单揭一下各大公司的底,希望大家能从里面得到一些收获。面试套路里面最开始流行的两派是精英派和平民派,前者以CISCO和ORACLE为代表,后者主要是微软。这两派里面面试的目的其实都差不多,给公司招来可以发展的人才。哪怕需要培养无所谓。精英派的理论特别的简单:龙生龙凤生凤,老鼠的儿子只能去打洞。面试招人看出身,主要是大学本科出身,你要是常青藤出来的,或者是斯坦福什么鬼的,出身好肯定不错,来吧来吧大家欢迎你,面试如放水。你要是二三流学校出来的,对不起,我们连面试都不给你,除非你做出了惊天地泣鬼神的牛13的事情。当然要是你现在没有做出来,就取江湖上混几年,混好了,再来秀你的肌肉。Cisco放弃这个套路有一段时间了,但是Oracle至今还是做着它的春秋美梦。简单一点来说,对于新毕业的学生,只有有限的一些学校,Orac

  • springBoot--原理分析

    起步依赖分析 分析spring-boot-starter-parent 按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-starter-parent的pom.xml,xml配置如下(只摘抄了部分重点配置): <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.5.RELEASE</version> <relativePath>../../spring-boot-dependencies</relativePath> </parent>复制 按住Ctrl点击pom.xml中的spring-boot-starter-dependencies,跳转到了spring-boot-starter-dependencies的pom

  • Unity-2D像素晶格化消融

    效果展示: ShaderLab Shader功能:图像变白+根据顶点的y值作透明裁剪; 才是可操作属性: IsDead:控制像素变白,片元着色阶段IsDead小于0将颜色改为白色; Percent:透明剔除分界线,也是图片展示百分比;在顶点计算阶段,记录Percent-vertex.y值,传入片元着色器,直接裁剪; Revert:反转percent结果;(粒子显示效果和图片遮挡效果正好相反) 调整shader中Percent得到如下结果: 使用该shader创建两个材质,spriterenderer和ParticalSystemRenderer分别使用,ParticalSystem勾选Revert; 完整shader: Shader"PixelDisappear" { Properties { _MainTex("Texture",2D)="white"{} _IsDead("IsDead",float)=1 _Percent("Percent",Range(-8,10))=0 _Revert("Revert",float)=1 } SubShader { Tags{"Rende

  • LoadRunner IP欺骗使用

  • 极光推送Jpush(v3)服务端PHP版本的api脚本类

    原文地址:http://www.dodobook.net/php/780   关于极光推送的上一篇文章已经说明了,此处就不多说了。使用v3版本的原因是v2使用到2014年年底就停止了。点击查看上一篇的地址http://www.dodobook.net/php/777欢迎移步浏览。 昨天才开始拿到极光推送的SDK下载文档。下载地址http://docs.jpush.cn/display/dev/Server-SDKs看了半天也看出眉目。安装example的方法试了,各种报错。还需要vendor/autoload.phpcomposer的支持。 后来查找各种方法能实现了。但是感觉好庞大的一个包。且想封装成为一个类,几次尝试都失败。想想v2版本一个文件实现多好啊。 自己太笨了,网上找找到相关的文档。自己稍加改动,终于实现,一个类就在后端调用了。直接上代码:     //极光推送的类//文档见:http://docs.jpush.cn/display/dev/Push-API-v3 /***使用示例   $pus

  • [原创]手把手教你写网络爬虫(9):待续...

     

  • url在线编码和解码

    在工作中,经常遇到encode之后的url。想查看里面的某个参数的时候,很不直观。今天在网上搜了一下对url在线编码和解码的网站。对我来说,使用起来很方便。而且这个网站里面,不仅仅有对url的编码和解码,还有很多实用的功能。 分享给大家: 网址:http://www.convertstring.com/zh_CN/EncodeDecode/UrlDecode 原创文章,转载请注明: 转载自成长的企鹅 本文链接地址: url在线编码和解码 关于我:成长的企鹅简介 ----------------------更多博文请关注http://www.xinghaixu.com-----------------------

  • Android

    1.查找Activity中override方法:右击-Generate...(com+n)-OverrideMethods...   2.调用otherActivity:  MyAppmyApp;@Override publicbooleanonTouchEvent(MotionEventevent){ Log.i("TAG","touch");     myApp.prop="2"; Intentit=newIntent(MainActivity.this,SecondActivity.class); it.putExtra("tag","1"); startActivity(it);  //开启Actitity returnsuper.onTouchEvent(event); }复制 SecondActivity: @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.act

  • elasticsearch 连接、操作记录

    githubsite:https://github.com/foolchild/record-elasticsearch 1.elasticsearch的版本 2.java客户端的变迁 3.具体使用RestHighLevelClient   1.elasticsearch的版本 简单说一下我使用中感受到的变化 5.x支持多种type 6.x只能有一种type 7.x将去除type没有类型的概念了 7.XTransportClient被废弃,只能使用restclient。 在es7中使用默认的_doc作为type,官方说在8.x版本会彻底移除type。 2.java客户端的变迁 2.1transportClient 关于TransportClient,elastic计划在Elasticsearch7.0中弃用TransportClient,并在8.0中完全删除它。这里就不过多记录。 2.2RestLowLevelClient JavaLowLevelRESTClient,低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有

  • git 合并本地代码到分支

    本地代码合并到dev分支 在local分支提交gitadd.gitcommit-m"playbuy" 切换到dev分支gitcheckoutdevgitpull合并分支gitmergelocal(dev合并到hf分支的话,需要加-noff参数,就是禁止先来先合并策略,也不需要下一步骤gitrebase,因为dev和hf属于线上版本,需要保留空的merge版本以知晓合并的节点,而local的则不需要保留) gitrebase移除merge空版本gitpushorigindev   以上只是本人用到的 详细的文章有http://blog.csdn.net/hudashi/article/details/7668798,先留着等有空来研究下

相关推荐

推荐阅读