App介绍

今年7月,我做了一款手机APP。

它能够显示时间和一句随机诗词,点击屏幕或者等待一小时,诗词内容会自动刷新,让你的手机变成一个优雅的桌面摆件。

在装饰桌面的同时,能够潜移默化地陶冶文学情操。

image.png

为什么要做这个 App 呢,因为现有的桌面摆件类 App 普遍存在三个问题:

  • App中掺杂广告,甚至存在应用内付费策略
  • 仅支持竖屏设备,而无法横屏显示
  • 每日金句类型居多,鸡汤类的文本太庸俗

而这个 App 界面清爽简洁,打开即用,毫无操作门槛。

image.png

App 名称叫“羲和”,起这个名字有两个原因:

  • 羲和是我在学校学生报社工作时的刊物名称,神话中指的是的太阳女神,本身有美好的寓意
  • 为了考虑上架国内的安卓应用分发市场,早已为此名称申请软著,虽然后续没有用上

现在,苹果手机的用户在 App Store 上搜索“羲和”,就能安装此应用。

image.png

除此之外,本文还想分享一下,我是如何将这款 App 放上苹果应用商店的。

应用准备

这款应用本身定位是多移动端适配,因此采用了跨平台的 Flutter 进行开发。

如果要上架 App Store,首先需要有一台 MacOS 的电脑,因为需要用到 Xcode 这个官方指定编辑器。

首先需要在 Mac 上,检查 Flutter 是否支持 iOS,用以下命令:

flutter doctor

正常情况下,默认是不支持的,需要额外安装iOS平台的第三方依赖管理工具 cocoapods,执行

sudo gem install cocoapods

安装好之后,可以启动一个手机模拟器:

open -a Simulator

运行代码,它会自动在模拟器中构建应用,可以进行功能测试。

flutter run

准备签名

要发布应用,首先要注册成为 Apple 的开发者,年费是¥688/年,申请后约两个工作日审核通过。

之后,去开发者后台创建应用:

后台地址:https://developer.apple.com/account

下面先在Identifiers里面注册一个应用,填写基本介绍和标识符,这个标识符类似于Android里面的包名,用来在系统中区分不同的App。

我这里以 Android 的规则习惯来命名,后面的Bundle ID同理。

image.png

下面还要选取应用所需要的权限,比如我这款应用需要联网在线获取诗词,就把 Network 的能力勾选上。

image.png

在用途中,选择App Store Connect用来进行分发。

image.png

设置完之后,可以得到一个.mobileprovision文件,这个文件包括了应用信息和签名信息。

提交应用

在 Flutter 中,可以生成 ios 的工程文件 .xcodeproj,下面用 Xcode 打开这个文件。

image.png

Targets->Signing 中,取消勾选自动管理签名,将上一步得到的.mobileprovision文件手动进行导入。

image.png

之后,点击Product->Archive,可以将应用编译并上传。

image.png

上传前,需要核对网页中设置的Bundle Identifier 和本应用的 SKU (唯一识别码),完全匹配才能继续上传。

image.png

上传成功后,会出现以下反馈。

image.png

编辑应用信息

上传成功后,就可以在管理后台看到应用的版本信息了。

除此之外,还要设置应用的详细描述、发布地区、应用预览图、隐私政策地址等信息。

隐私政策是需要有一个 Url 链接进行访问,我直接让 AI 根据我的项目内容,生成了一个静态网页,挂在了 Github Page 上,将链接填入。

完成后,点击上传提交,就可以等待审核。

image.png

审核反馈

第一轮花了约两个工作日反馈了结果:

image.png

他说,我的应用存在两个问题不能被接收:

  • 问题一:在年龄分级那里,勾选了:家长控制年龄验证,但实际的 App 时,没有发现这些功能。
  • 问题二:上传的 iPad 截图被发现是 iPhone 截图拉伸或伪装成 iPad 的。

这两个问题都挺好解决的,首先是解决问题一。

在年龄分级中,一开始我误解为国内的青少年保护,顺手点了,而它们实际上是需要具体功能去支撑的,把它们改成就可以了。

image.png

再解决问题二,这个问题纯属我偷懒了,因为ipad上的应用缩略图有尺寸显示,我只有iphone上的截图,于是就改了下分辨率,强行拉伸下就上传了,结果审核很在意这一点。

解决方式也很简单,直接用模拟器截图就行:

用下面的命令,查看可用设备

xcrun simctl list devices

找到一台ipad的模拟器,运行:

xcrun simctl boot 5DFE3EBE-9EE3-4B97-9EFF-B1EB854F7ECF
open -a Simulator

在该模拟器上运行App:

flutter run -d "iPad Air 11-inch (M3)"

模拟器自带截屏功能,默认的截屏图像会保存在桌面。

image.png

修改完这两点之后,还要用英文回应一下审核,有点像在学术上的rebuttal😂

image.png

让 AI 帮我拟了一下措辞,写得像模像样的。

image.png

一天时间不到,新的审核结果下来了,审核通过,应用可以分发了。

总结

App Store 的应用上架经历还是轻松愉快的。

国内主流应用市场现在已经完全不允许个人开发者上传应用,并且需要严格审查软著,备案等信息。

早些年,个人开发者还被允许上传应用时,某个主流平台拒绝了我的App,给出的理由竟然是“因为你的应用没有在其它平台上架,所以我们也不能批准你上架”。

App Store 虽然收费贵了点,但至少还保留了个人开发者应用上传分发的渠道。

iPhone用户们,还有哪些场景是现有App无法满足的?欢迎留言交流。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐