SwiftUI:应用上架

原创:知识点总结性文章
创作不易,请珍惜,之后会持续更新,不断完善
个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈哈,这些文章记录了我的IOS成长历程,希望能与大家一起进步
温馨提示:由于简书不支持目录跳转,大家可通过command + F 输入目录标题后迅速寻找到你所需要的内容

目录

  • 一、应用上架流程
    • 1、财务、税务信息设置
    • 2、团队开发者
    • 3、应用程序创建
    • 4、从 Xcode 中上传应用至 Connect
    • 5、在 Connect 中确认上传版本
  • 二、应用提交审核的流程及注意事项
    • 1、应用基本信息
    • 2、应用版本迭代信息
    • 3、应用更新发布
    • 4、内购审核
    • 5、常见被拒原因
  • 三、应用上架后的数据监测及维护
    • 1、核心数据
    • 2、销售来源
    • 3、基本销售指标
    • 4、自定义数据指标
    • 5、财务报表

十八、应用上架流程

程序开发完成后,若你想让其他人也能用到,首先要做的便是完成应用上架流程。值得注意的是,虽然应用开发的全过程不需要任何付费,且可以将应用直接安装在至多 100 台设备上用于测试,但应用上架至 App Store 应用商店是需要支付每年 99 美元的 Apple Developer 费用的。在应用程序上架过程中,你需要用到两个网站,分别是:

  • App Store Connect下文简称 Connect。它负责管理应用在商店中展示的所有信息、填写税务报表、设置价格、查看销量信息等。
  • Apple Developer下文简称 Developer。负责管理开发者账号、访问与账号挂钩的 CloudKit Dashboard、申请 TSI 开发者协助请求、管理账户签名等。

本文将以上架一个空白应用为例,介绍应用上架所需的步骤及操作要点。值得注意的是,空白应用或功能不完善的应用是无法通过应用商店审核的,至于审核的注意事项会在下一节讨论。

1、财务、税务信息设置

无论是免费及付费应用,都必须签订一些协约、税务、财务信息等才可以正常使用。打开 Connect 网站,点击「Agreements, Tax, and Banking」选项来进行设置。

进入该界面后会出现下图页面,该页面具备四个子标签页。你需要依次点选这四个标签页,并根据下文描述进行设置。

协议 Agreements

协议部分包含两个开发者直接与 Apple 签订的分发协约,依次点击「免费 Free 及付费 Paid」两个协议,确保二者状态均处于激活 Active 状态。

税务 Tax

税务部分有四种信息需要填写,无论你是否计划在除中国外的其他地区销售,这几个税务信息都必须提交。四个表单中三个只需要填写开发者姓名即可提交,唯独美国的保税表单 W-8BEN 稍微复杂些,按照个人真实信息填写即可。

银行 Banking

银行信息是你的收入来源,所有应用程序销售会在销售后的次月自动结算到该账户中。这里面的 Account Number 是汇款用的账户号码,Transit Number 填写银行及支行号即可。默认结算方式是美元,Apple 默认的结算方式是美元,它会把你的所有收入都以美元的形式进行结算,然后通过 Bank Account Currency 中的设置,自动转换为当地货币。例如,你使用的是人民币账户,这里应该选择 CNY。通常情况下,新应用上架的结算期较长,通常是应用卖出后 3 个月结算。日后会逐渐缩短至 1 个月结算,比如 3 月 1 号时会自动结算 1 月的全部销售。若你想知道具体结算时间,可以打开 Connect 网站的「Payments and Financial Reports」界面,查看右上角的「Expected Payment Date」即可。

联系人 Contacts

联系人是涉及授权等事务时,涉事方联系你的主要途径,如实填写并在信息变动时更新即可。


2、团队开发者

如果你是团队开发者,比如一人、两人或多人合作,可以考虑切换开发者账户的性质,从个人型切换到组织型。在 Developer 网站中切换到「Membership」会员标签页,会看到右下角有一个「Need to edit this information」选项。点击该选项后,Apple 会提示你切换账户性质需要提供 DUNS 码,如下图所示。

DUNS 码的全称是 Data Universal Numbering System,即企业信息识别码。你可以把这一串编码当作是企业的身份证。这个企业可以是任何性质的企业,比如个体 Sole Partnership 、合伙制 General Partnership、公司 Cooperative 等等,企业的注册地也没有限制。

你也许会说,我压根没有企业,这也没关系,此处的企业指的是一个用于商业行为的识别单位,目的是以某个团体的身份进行商业活动,不需要非得是大公司才能注册。注册 DUNS 的方法很简单,打开 Dun & Bradstreet 网站按要求填写并提交资料即可。这里它认证的信息基本是各国来自权威机构的工商注册信息,这些证明一般具备所在国或所在地的抬头信息,比如我在加拿大 BC 省,用到的就是抬头为「BC Business Registry」的信息。

在提交完 DUNS 注册信息后的大概一个星期左右,会有相关工作人员电话和你确认。确认信息完成后,你会在 48 小时内收到 DUNS 的 9 位数字,将这个数字填写在 Apple Developer 网站即可完成个人账号到组织账号的变更。若你想查看自己的 DUNS 账号对应的信息,登陆 Dun & Bradstreet 网站即可。

当然,无需注册组织账号,Apple 的个人账号也完全能用于应用分发。其主要区别在于你想以什么身份运营你的应用程序,到底是个人还是一个商标主体来运营。个人的优势在于注册方便,商标主体或组织常给人一种可信度更高的感觉,且后期扩充人员方便些。除此之外,企业本身具备不受人为因素影响等优势,这就要看你自己对该应用和后期规划的定位了。


3、应用程序创建

做好前期准备工作后,接下来便可以在 App Store Connect 创建一个应用。此处的创建与在 Xcode 中创建一个包含代码的应用项目不同,在 Connect 中创建的应用指的是一个用于管理上架应用的管理单位。在 Connect 中,你可以设置应用的价格、更新日志、宣传文案、宣传视频等信息。打开 Connect 网站,选择下方的「My Apps」选项。

点击「Apps」文字右侧的「加号」按钮,并选择「New App」来创建新应用。

在弹出的菜单中,填写分发平台、应用名称、主要语言、Bundle ID 等信息。其中主要语言 Primray Language 指的是应用在默认情况下显示的语言。比如你的应用不支持法语,但支持中文和英文。若设置英文为主体语言,则在法国区售卖的应用会以英文来显示。

上图中的 Bundle ID 部分,指的是你应用程序的唯一身份证。通常情况下,若 Apple 的自动身份管理系统正常工作了,你会在上图中的 Bundle ID 位置看到当前已创建的所有 Xcode 项目的 Bundle ID,选择对应该应用的 ID 即可。如下图所示 Xcode 中的 Bundle Identifier 应该与 Connect 中的 Bundle ID 完全相同。

但还有些情况,Apple 的自动身份管理系统坏掉了(很常见),那么你在 Connect 中会找不到应用对应的 Bundle ID,如下图所示。遇到这种在下拉列表中找不到 Bundle ID 的情况也不必惊慌,手动创建一个就可以。手动创建的步骤如下:

弹出的界面如下,使用默认的 App IDs 选项,并点击右侧的「Continue」下一步。

通常来说,独立开发者需要的是一个应用类型的 ID,如下图所示,选择默认的 App 并点击下一步。

在弹出的页面中,Description 处随意填写一个你能辨识的名称即可,在右侧的 Bundle ID 部分,选择 Explicit,并从 Xcode 项目中将 Bundle Identifier 复制到这里。本例中 Xcode 的 Bundle Identifier 是「me.xiejiapei.ThreeGoodThings」,完整复制后如下图所示。

手动创建完 ID 后,你便可以在 Connect 中的应用创建列表看到新创建的 Bundle ID 了。选择该 Bundle ID 并选择「Done」完成即可。如果还是没找到 Xcode 项目的 Bundle ID,建议登出 Connect 后重新登录,Apple 的 App Store Connect 不是即时的,以自动或手动创建的 ID 往往需要耐心等待几分钟至几小时才能刷新出来。以上步骤完成后如下图所示,说明「三件好事」这个应用的 Connect 版本创建成功。


4、从 Xcode 中上传应用至 Connect

目前为止,你的手头上有包含代码的 Xcode 项目文件,负责管理的 Connect 对应应用,接下来便需要把 Xcode 的文件上传到 Connect 中,将二者绑定。从 Xcode 中上传的并不是全部的源代码,而是一个叫做 .ipa,即 iOS App Store Package 的应用程序打包文件。

首先打开 Xcode,选择顶部菜单栏中的「Product - Archive」来创建当前版本应用的 .ipa 文件。

值得注意的是,倘若你的「Archive」按钮是灰色的按不下去,请确认当前应用运行对象选择的是一台真实设备,如下图所示。应用程序开发过程中常用到的虚拟机无法创建 .ipa 文件。创建完成后,在弹出的面板中选择「Distribute App」来分发应用。

点击后,选择默认的「App Store Connect」作为分发渠道。

然后点击「Upload」来上传。这里我没有完整截图该步骤,步骤中还包含几个无关痛痒的选项,使用默认值即可。

若你在上文中使用了手动创建 Bundle ID 的方法,则会显示如下图所示的「是否交由 Xcode 自动管理签名」的选项,选择 Automatically 自动即可。

以上步骤完成后,会弹出总结界面。在该界面时,应用其实还没有上传,一定要点下右下角的「Upload」按钮。

点击之后会出现绿色的成功按钮,代表应用已经上传至 Connect 中。倘若此处出现任何红色错误,则代表上传失败,应用程序本身的代码存在问题或设置错误,按照提示搜索即可。


5、在 Connect 中确认上传版本

通常来说,当以上步骤完成后,打开 Connect 界面,你会在如下图所示的 Build 位置看到刚刚上传的 .ipa 文件。下图中左侧的 1.0 代表应用商店中面向用户显示的版本号,Build 则代表该版本号下,应用所对应的 .ipa 文件。

说到这里,就不得不提一下 Connect 中比较坑的通知系统了。倘若你上传完了文件,显示上传成功,但久久没有在 Connect 中刷新出最新上传的 Build 版本,记得查看开发者账号对应的邮件。

如下图所示,当我上传一个默认的空应用时,Xcode 会提示上传成功,但实际上该应用的 .ipa 没有通过 Connect 接收时的预处理流程。这是因为 Xcode 默认的空应用没有应用图标,而这类处理错误只会在邮件中看到,所以记得及时查看邮件。

查看邮件中给出的错误提示 ITMS-90713 后,可以看到描述说缺了图标。补全图标后从 Xcode 中重新上传新版本,如下图所示,提示「completed processing」。

当 Connect 接收到处理完成的 .ipa 时,如下图所示的 Build 选择便会出现「Select a build before you submit your app」按钮。

点击该按钮后,选择版本并完成即可。

此时会弹出应用商店提交的一些法律信息,比如是否使用加密算法,是否使用第三方广告或数据采集的选项,如实填写即可。

至此,应用程序已从 Xcode 中上传至了 App Store Connect 中,以待分发。

为帮助开发者管理待上架及已上架的应用,Apple 推出了 App Store Connect 应用的 iOS 版本。支持查看版本审核状态,用户反馈,销量等常用信息,推荐安装。


十九、应用提交审核的流程及注意事项

应用程序提交至 [App Store Connect ](http://App Store Connecthttps://appstoreconnect.apple.com)后,下一步便是完善信息并提交审核。审核过程一般由机审和人审两部分组成,所谓机审,指的是 Apple 先跑一遍内部的测试,确保该应用不包含什么恶意插件;接着会由审核专员根据 App Store Review Guideline 的标准来进行人工审核,审核通过的应用即可在全球的应用商店销售。

得益于 Apple 近期对审核流程的优化,绝大多数应用审核会在 24 小时内完成。若同期提交审核的应用过多,偶尔会出现 48 小时或以上的情况。从个人感觉来看,每次审核标准是有所差异的,比如新上架的应用会侧重于审核基本功能的完善度,而后期的审核可能侧重设计、商用、性能、文字说明等其他细节。因此很可能出现第一次审核过了,每隔一段时间卡一个新的审核点的情况,不必担心,按要求改进即可。

通常来说,审核建议都是比较中肯的,按要求改进也是督催应用进步的重要原因之一。若你遇到了紧急情况,比如应用出现恶性 Bug,可以在 这个网站 申请 Expedited Review 加速审核,说明情况后,恶性 Bug 的紧急修复很容易给过。

1、应用基本信息

应用基本信息指的是在 App Store Connect 网站中左侧 General 列表下的信息,它包含应用详情、价格及地区、隐私协议等组成部分。

在上图中通用信息的第一个选项 App Information 中,最重要的莫过于「Name 应用名称」和「Subtitle 副标题」这两个文本框,其代表着应用最主要自然搜索权重的来源。举个例子,用户在应用商店中搜索应用,那么名称代表着最高权重。假设用户搜索「百页签」这三个字,第一个显示出来的便是名称完全匹配的应用。仅次于名称搜索权重的是副标题,副标题处你可以用该应用的一句话文案 Slogan 来阐释应用的用途。

合理设置名称与副标题,能带来的便是仅靠用户搜索、无需额外成本付出的自然流量。当然,新应用的自然流量本身非常低,但会随着时间推进缓慢上涨。比如用户给你的应用打好评,下载量比较大,也会带来对应关键词的搜索权重上升。

通用信息中的第二个重要选项是 Pricing and Availability,即价格和地区。对于没有名气的新应用来说,设置为免费应用往往可以降低用户试用的门槛,若你想将免费应用转化为付费应用,也建议在应用发布一段时间后,积累一定口碑后再考虑转类型。在 App Store 中,免费和付费应用采用了两个完全独立的排名机制,免费区竞争更激烈,付费区竞争不激烈但入手门槛高,这就需要你自行决断了。

除价格外,新出的「Apple Silicon Mac Availability」指的是是否自动登录采用 M1 芯片的 Mac 产品线,建议勾选。对于新应用来说,只要你的应用不过分依赖于 iPhone 等设备的专有硬件,诸如摄像头等,那么开启该选项是增加曝光的好机会。

通用信息中的第三个重要选项是 App Privacy,即应用隐私。这里有两个必填选项,分别是 Privacy Policy URL 隐私协议网址和 Data Types 收集的数据类型。若你没有个人网站,使用各种网站生成器生成一个展示隐私协议的页面也可以,数据类型指的是展示在应用商店中的「隐私标签」,如实填写即可。


2、应用版本迭代信息

应用的基本信息属于填写一次就一劳永逸的范畴,填写完成后便不需要再次操心。而应用每次提交的版本说明,则是一个随时可以变更的信息,如下图所示,Version Information 处指的是最新版本的更新公告。作为独立应用,及时与用户沟通应用进行了哪些很重要,建议重视更新公告的填写。

上图高亮的截图与视频区域也极度重要。举个例子,当用户搜索到你的应用时,优先看到的便是名称及预览图,因此预览图也是对于 Click-Through Rate 下载率的重要指标。举个例子,当自然搜索或广告带来 100 次应用商店界面的访问时,用户需要通过标题、预览图迅速做出是否下载的决策,比如这百次中有 5 个人决定下载,那从商店页面到下载的 CTR 就是 5%。

Apple 对于预览视频的要求是 15-30 秒,个人建议使用真机视频录制来获取预览视频的内容。倘若你没有合适的设备,单纯使用截图也可以。其中预览截图处可以使用以下对应虚拟机来截图。

  • iPhone 6.5'' Display:使用 iPhone Pro Max 虚拟机截图
  • iPhone 5.5'' Display:使用 iPhone 8 Plus 虚拟机截图
  • iPad Pro (3rd Gen) 12.9'' Display:使用 iPad Pro (3rd Gen) 12.9 虚拟机截图
  • iPad Pro (2rd Gen) 12.9'' Display:使用 iPad Pro (3rd Gen) 12.9 虚拟机截图

如下图所示,Description 应用描述指的是完整的介绍。应用描述的部分,注意前两句话突出重点,而后全文内容根据你的个人偏好描述就行。这是因为通常来说商店界面只会显示前两句描述,而展开全文查看的用户相较而言并不多。与 Android 应用不同,App Store 应用商店中的应用描述没有关键词或搜索权重,因此不必在此堆砌关键词,做到表意清晰即可。

上图中的 Keywords 关键词部分是应用自然流量来源中最重要的一部分。关键词指的是你的应用在商店中如何被找到。假设你在制作一款旅游应用,关键词可以填写你认为用户搜索的所有词汇,比如「出行、目的地、名胜古迹」等。


3、应用更新发布

对于应用更新来说,点击 Connect 左上角的加号按钮即可创建一个新版本。如下图所示,此处填写的版本号即为应用商店中显示的更新版本号。假设当前正在销售的版本是 1.2,则此处的最新版可以填写 1.3。

在应用的最新版本提交审核前的页面中,具备 Version Release 和 Phased Released for Automatica Updates 两个选项。若你想让应用审核过之后自动发布到应用商店,勾选「Automatically release this version」即可。

值得一提的是「Released Update over 7-day period using phased released」的选项,它代表着应用会在 7 天的时间内,分阶段推送给不同用户更新。即便更新出了岔子,比如存储异常等恶性情况,最新版本的问题不会立即影响全部用户,开发者还有及时修复的时间,强烈推荐在进行重大更新时勾选并及时注意用户反馈。在以上信息全部填写完成后,点击右上角的「Submit for Review」按钮即可提交应用审核了。


4、内购审核

对于包含应用内购的应用来说,还需要额外填写一个内购的审核。如下图所示,在 In-App Purchases 区域打开 Manage 选项卡,在弹出的菜单中勾选符合应用需求的内购项目。

设置好内购 ID 及价格后,在底部的 Review Information 提供内购页面的虚拟机截图。对于内购触发机制不明确的应用,强烈建议在 Review Notes 这里填写触发内购的操作,便于审核员快速测试该机制。

对于需要内购功能的应用来说,应用内购需要和应用本身一起提交审核,但一旦审核过之后,日后便不需要重复审核内购的信息。如下图所示,过审后的内购会出现「Approved」通过的标识。


5、常见被拒原因

应用审核过程成中,最常见的原因是 Guideline 2.1 Performance: App Completeness,即应用完成度不够。这些应用程序通常过于简单,或者没有广泛的使用价值。比如你开发了一款应用,其只能显示你的个人简历,目的仅仅是作为你的个人展示应用,那它是不会过审的,因为无法为大众提供价值。如果应用存在频繁闪退问题,也会因完成度这一条被拒。

除此之外,常见的拒绝原因还有 Guideline 2.3 Accurate Metadata,即应用元数据不准确。举个例子,许多开发者会给应用起一个超级长的名字,再把小标题打满,以追求搜索关键词的最大曝光。遇到这种情况时,通常会因为 2.3 被拒,理由是元数据中包含太多无关痛痒的信息。

若应用包含内购或订阅 Guideline 3.1.1 In-App Purchase 也很容易被拒绝,它指的是应用内购或订阅信息不完整。举个例子,若采用内购的应用没有提供恢复购买的按钮,则会因此被拒。若采用订阅制的应用没有明确说明订阅价格的单位是月还是天,也会因此被拒。

若你的应用程序采用过于离谱的商业模式,可能触发 Guideline 3.2 Other Business Model Issues 拒绝,它指的是商业模式中存在问题。比如一个掷骰子的应用,里面又是广告、又是订阅、又是内购,而且付费模式与盈利方案纠缠不清,让用户不知道自己买的是什么东西,可能触发此类拒绝。

若应用程序在设计上过分地差,或存在明显抄袭的情况,会触发诸如 Guideline 4.2 Minimum Functionality 的拒绝,它指的是应用程序为满足最基本的设计预期。比如按钮东一个西一个,操作逻辑含混不清等。

隐私方面,若应用程序没有虚假填写隐私的使用与报备说明,则可能触发 Guideline 5.1.1 Data Collection and Storage 拒绝,它指的是没有依据规范进行数据采集和存储。

除了以上条目外,还建议你完整阅读 App Store Review Guidelines,这份规则包含上述提到的所有可能被拒绝的情况,还包含了 App Store 审核团队可能给出的所有拒绝可能及原因,具备极高的参考和学习价值。

App Store 的审核不是为了为难应用本身,毕竟如果你的应用销量好了,对于 Apple 来说能带来切实的利益分成。审核机制存在主要是保障 App Store 中应用的最低水准,确保商店不会被过多低质量的内容所覆盖。虽然被拒绝会让人心中难过,但却也是忠言逆耳利于行。若能及时根据反馈对应用进行调整,你的应用一定会越来越好。


二十、应用上架后的数据监测及维护

应用程序上架后,下一步便是对上架后的销售数据、渠道、闪退情况等信息进行了解与监测。本文将从消费数据和代码闪退报告两个角度为你进行数据监测的讲解。

1、核心数据

打开 App Store Connect 的 「Analytics 数据分析」面板,如下图所示。它包含 8 个最重要的数据,下文会归类讲解。

Crashes 闪退

指的是在用户授权应用自动提交反馈的设备时,应用程序发生 CTD 闪退的次数。CTD 指的是 Crash to desktop,也就是不可恢复的完全闪退回桌面。造成完全闪退的原因很多,比如代码、逻辑、UI、存储等都可能造成此问题。这是最影响用户体验的数值,必须重点关注。

Impression 印象、Product Page Views 商品页浏览、Conversion Rate 转化率、Units 销售数量

指的是三个与用户浏览和下载相关的指标。Impression 指的是你的应用出现在 App Store 中的次数,比如用户搜索别的关键词,你的应用恰好也在其中之一,算作一次印象。当用户实际点击后,进入你的应用产品下载页面,算做一次 Product Page Views 商品页浏览。

Units 指的是应用下载量,即某段时间内用户实际点击「获取」按钮并成功安装的次数。Conversion Rate 转化率指的是销售数量除以印象,即有少个印象最后成功转化成了安装。如果你用上图中的数据做除法,会发计算出的转化率与实际转化率不一致。这是因为 Connect 中显示的转化率使用 Unique Impression 来计算的,即同一台设备上的多次印象只计算一次。

Sales 销售额、Sales per Paying User 用户销售额

销售额指的是这段期间内所销售出的总价格,但这个总价格没有经过 Apple 抽成,因此开发者实际收入会比这个值低。Sales per Paying User 指的是每个用户平均付款额,比如你的应用中包含多种付费方式,不同用户消费额度不同,该值为平均值。

Sessions per Active Device 应用平均启用次数

这个值指的是用户下载应用后,平均使用次数。每次使用若超过 2 秒,则计算做一次使用。如上图中,6.41 指的是下载该应用的用户,平均打开并使用了 6 次该应用。


2、销售来源

App Store 是一个将应用销售往全球的销售渠道,在构思应用时,完全可以将视野放宽,在多地区盈利。如下图所示,App Units by Territory 指的是按地区排列,该应用的头五个销售地区分别是「中国、意大利、美国、英国和沙特阿拉伯」。

除销售地区外,另两个销售的重要指标是 App Units by Source 销售溯源和 App Units by Device 销售设备。销售溯源有助于帮你判断这些安装都是从哪里来的,比如下图中「百页签」这个应用范例,69.6% 的安装来自于应用商店的搜索结果,15.2% 来自网络引流,11.6% 来自应用商店的自然浏览。销售设备常见的有 iPhone、iPad、Desktop 这几种类型,分别对应手机、平板和 Mac 电脑。


3、基本销售指标

除以上这些核心指标数据外,Connect 中的 Analytics 还包含了 Metrics 表单。如下图所示,该表单会明确显示出每日的商品页浏览量 Product Page Views,你也可以在顶部来任意切换其他类型的详细数据显示。

关于销售来源部分,你也可以点击 Sources 标签页查看详情。如下图所示,详细列出了每日各销售来源的信息。

基本数据指标中,还有一个叫做 Retention 留存率的概念。Day 1 Retention 指的是用户第一天下载后,使用该应用的比率。Daily Retention 指的是用户下载多日后,每个日子里决定继续留下使用的比率。


4、自定义数据指标

若你觉得以上 Connect 自动给出的指标不能满足你对数据分析的需求,可以打开 「Trends 趋势面板」,对任何细节和时间段进行自定义显示。Trends 面板不以应用为单位,而是以整个开发者账号为单位。你可以在这个页面中看到全部应用的数据信息,或使用 Filter 筛选想显示的应用、内购类别、销售地等。

值得一提的是下图所示的 Proceeds 标签,它指的是扣除 Apple 分成后,开发者能预期拿到手里的收益。该页面对于想要了解真实收益的开发者特别有用。

在 Trends 标签页中,你可以随时随地在顶部添加精细化筛选的类别,如下图所示。当你筛选出自己日常关注的数据后,可以保存为一个新标签页,以便未来快速查看。


5、财务报表

Connect 中的 「Payments and Financial Reports 财务报表」面板。若你是新开发者,会发现该面板是空的,这个面板会在应用的首次销售之后 3 个月生成报表,它包含了 Apple 扣除分成之后的收入详情。

如下图所示,它包含了「实收,实欠,实付」等信息。以该应用为例,高亮的条目指的是该应用在一月份英国区共售出了 49 份。Apple 分成后应该给开发者的实际收入是 196.69 英镑,课税为 0,实欠开发者 196.69 英镑,折算到开发者银行账户所在地汇率为 1.765,实际应付开发者 376.06 加币。

上文所述的销售数据均可在 App Store Connect 中查询。对于已发布在应用商店的应用,若你需要的是代码级的数据及诊断信息,则需要用到 Xcode 里的管理器 Organizer 工具。打开 Xcode,在顶部菜单栏中选择「Window - Organizer」,如下图所示。

管理器的页面由左中右三部分组成,包含了所有当前已上架应用的信息。其中左上角可以在不同上架的应用中切换,左下可以选择一系列数据及诊断信息面板。诸如用户设备自动发回来的「闪退、磁盘读写、耗能」诊断报告,以及「电池信息、磁盘读写、无响应率、启动时间、内存消耗、滑动异常」这几个数据信息。

如上图所示,你可以在高亮区域切换对应应用在商店中的版本号,以便判断该报告来自哪一次应用更新。当你找到对应闪退报告后,可以直接点击右侧的「Open in Project」按钮。Xcode 会尝试在开发环境中复现错误。

以耗能报告 Energy Report 为例,中间一长串信息指的是在多少台设备上,由于某一类异常而触发较高的耗能。比如下图所示的 CHStrokeGroupingManager 的错误,共计 71 个设备回报该问题。其中 99% 的设备是 iPad,1% 的设备是 iPhone。问题原因是「High CPU Usage」高处理器占用,即 180 秒内 CPU 平均占用率超过 50%。当前所选样本是 iPhone 11 Pro Max,系统为 iOS 14.4.2。

除耗能报告外,你还可以在管理器中看到一系列与应用性能有关的数据。比如下图的电池消耗,这一点对于应用的体验很重要。iPhone 普遍来说电池不如 Android 手机,因此用户对电量消耗更敏感。诸如使用 iPhone 12 mini 的用户,倘若应用过于耗电,用户也能有明显的感知。如下图所示,该应用的 6.1 版本对屏幕消耗的电量是 10.16%,处理器消耗的电量是 2.26%。你还可以在不同版本间对比,来进行针对性优化。

与屏幕耗能类似,频繁的磁盘读写也会无谓地消耗很多电量。对于磁盘读写数据,你可以在 Disk Writes 区域查看详情。如下图所示,在对存储方案进行调整后,新版的读写量大幅度地降低。

应用启动时间由于本身的复杂程度和框架的调用有关。你可以在 Launch Time 页面查看当前应用在用户设备上的平均冷启动时间,如下图所示。

最后值得一提的是内存使用,如下图所示 Peak Memory 指的是峰值内存消耗,Memory at Suspension 指的是应用被墓碑机制放入后台时的内存消耗。Peak Memory 决定了你的应用是否是一个较好的平台公民,比如峰值内存消耗过高时,系统会关闭其它应用的后台。峰值内存同时决定了你的应用是否会因为超出设备可用内存而被强制退出;而 Memory at Suspension 决定了你的应用在其它应用有需求时,是否会被系统优先关闭。


Demo

Demo在我的Github上,欢迎下载。
SwiftUIDemo


参考文献

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容