独立开发 7 天从 0 到 App Store 排行前 10 的经验分享,以最近上架的 Avatar 为例

背景

在 App Store 上架至今,个人独立开发基于 iPhone、iPad、Watch、TV、macOS 上架总共也有 10 多个 App 了,时间跨度有 4 年。一直遵循最小可用加持续迭代的原则,取得了大部分 App 排行不错的成绩,获得了经常被 Today 推荐的机会,也有独立的 Story 故事。

这篇文章主要是从 High level 的视角给广大独立的小伙伴分享下自己的一些经验,希望对大家有所启发。

App 介绍

Avatar, 今天的主角,从开发到首次上架,一个人花了 1 周时间的一款小众二次元卡通类 App,基于苹果原生面部识别技术,类似自定义 Facemoji 的效果。整体技术难度中等,本文重心在于介绍整个流程。

从零开始

这款 App 的 Idea 来自近期在 YouTube 比较热的基于 Deepfake 一些视频,这里在 B 站搬了一个原版视频可供参考 https://www.bilibili.com/video/BV1Mv411i7Bv/ 。研究了下使用 Deepfake 的制作流程,突发奇想是否可用利用 iPhone / iPad Pro 的面部识别技术做一个类似 Facemoji 的效果,主题是二次元的角色符合 B 站风格。这里有使用这个 App 录制的简单的视频,https://www.bilibili.com/video/BV1UZ4y1K7pW

整个产品从 0 到上榜需要三个阶段:

    1. 设计开发
    1. 发布上架
    1. 宣传工作

从准备到上架 - 1.设计开发

作为独立,首先要积累一个产品所需要的各方面动手能力,大家可用根据自己的能力和时间规划产品的计划,以下是 Avata 开发的时间进度:

  • 第1天

面部识别:这个如果记得没错,应该是基于苹果 iOS 11/12 开放不久的技术。这个对代码非常娴熟的小伙伴应该不难,首先去苹果官方的 开发者网站 看看,如果官网没有 Demo 可用从互联网搜索下是否有相关的教程或者可运行的代码作为参考。

  • 第 2 天

卡通制作:因为是基于二次元卡通形象,这部分主要是借助互联网的力量搜索到不少的素材,下来就是需要使用熟练的图形软件来将各个面部零件对应面部识别,我个人比较熟练的是 Photoshop。因为需要大量的切图和分层工作量,首次上架定了 5 个卡通模型。

  • 第 3 天

界面设计及综合调试:为了快速上架,并没有在 UI/UX 部分过于纠结,可用看到目前的界面基于大家最熟悉的 App Store Today 的风格,首版因为只有 5 个模型,所以也没有使用 Table 等复杂空间,直接静态,界面总共 4-5 个 ViewController 就可以搞定,没有做任何特效。

从准备到上架 - 2. 发布上架

  • 第 4 - 6 天

提交版本:根据多年的经验,这一步一定要越早做越好,越早做越好,越早做越好!
建议首发版本 TestFlight 和 正式版同时提交,这两个审核流程是并行的。如果 TestFlight 先通过审核,可用发给小伙伴帮忙测试。如果正式版一次通过,那么恭喜你!

回到 Avatar,因为使用了摄像头及面部识别,审核遇到了隐私的问题。一开始偷懒我使用了已经上架的模版,这次设计面部数据,苹果的隐私审核异常的严格,所以要做要反复英文沟通和修改程序描述并重新提交的准备。因为时差的原因,苹果审核团队一般都在北京时间的凌晨开始干活,来回几次用了 3 天时间。

遇到了 Metadata Rejected,可以重新提交一次版本,如果第 3 天的 TestFlight 正常通过,那么这一版可以简单修复小伙伴们测试出来的 Bug。

这里有个 Tips,建议先在 Resolution Center 回复完成后,再提交新的版本。另外,如果你觉得可能遇到审核团队使用你的 App 会遇到问题,可用预先录好操作的视频,写在每个版本的 App Review Information 里面。

宣传工作

  • 第 7 天

通俗来说就是安利自己的 App,如果有自己的自媒体那么很方便,可以来 Indiehackers 分享和宣传你的产品,或者其他相关的社交媒体都是很不错的选择。

分类选择可以根据自己的 App 类型,看一下相应的榜单其他 App 的排名情况,选择自己的首要分类,这个也很重要。

关于价格,首次上架如果收费可以设置 1 元,如果免费那更好,不过要注意差评。苹果的 App Store 里面有两个 New Apps We Love 和 This Week's Favourites,如果有幸被任何一个推荐,那么恭喜你!

另外,一些简单的 ASO 关键字也是很有必要的,但是切记不要刷榜,不要刷榜,不要刷榜,这个短期的行为会对你的 App 整个生命周期乃至开发者账号下面其他 App 有很大的影响,甚至会有被下架或者封号的风险。

后续迭代

接下来的几天,迭代持续的功能多更新几次数,对排名会有很大帮助。上架后的版本更新,建议先走 TestFlight 确认没有重大 Bug 再提交正式版本,可以先选择 Manually release this version。

Avatar 在第 1 周上架最高是娱乐分类第 7 名的排行,截止写稿为止第 2 周已经是第 2 名的最高成绩。

PS:App Store 的 New Apps We Love 和 This Week's Favourites 暂时没有被推荐过。

总结尾巴

对于已经独立或者正在考虑独立的小伙伴,其实开发一个 App 并不难,但是上榜和被推荐确实需要有一些“运气”的成分。

希望以上个人的一些小小的经验可以抛砖引玉,对大家有所帮助。后续沟通大家可以在贴内留言,或者以下其他方式联系到我:

Sep 9, 2020

Satellite X Station – Portable Navigation System (EN)

Github: https://github.com/woointeractive/SatelliteXStation

Satellite X Station

Portable Navigation System, a smart device for Satellite X.

Table of contents

1. Features and Screenshots:

Device:

  • Search satellites automaticly
  • Display active satellites
  • Display current location with longitude and latitude
  • Display current speed and altitude
  • Display date and time in UTC timezone from satellites
  • Bluetooth mode (transfer data to App)

App:

  • Display longitude and latitude
  • Display compass with magnetic heading
  • Display pressure
  • Display altitude, relative altitude
  • Display pitch, roll, yaw
  • Display map view, following with heading
  • Display location with city and country
  • GPS & BDS (Bei Dou) navigation system supported

2. Board and Parts:

  • Arduino Uno or Nano
  • Optional Shield: Uno with Arduino Sensor Shield v5, Nano with I/O Shield
  • Bluetooth with CC2541 (VCC, GND, TX, RX)
  • OLED Screen 128x64 IIC(I2C) with SSD1306 (VCC, GND, SDA, SCL)
  • Touch button with TTP223, change deivce between on-device and bluetooth working mode (VCC, GND, IO)
  • Lithium battery (3.7v, 4000+mah)
  • GPS/BDS module with active antenna (VCC, GND, TX, RX)
  • Type-C lithium battery charger with TP4056 (OUT+, OUT-, B+, B-)

3. Design Pictures:

  • Arduino Uno

  • Arduino Nano

4. Pin Table:

Arduino Uno / Nano Pin Part Pin Part Name
VCC VCC Bluetooth
GND GND Bluetooth
RX TX Bluetooth
TX RX Bluetooth
VCC VCC OLED
GND GND OLED
A4 SDA OLED
A5 SCL OLED
3.3v 3.3v GPS/BDS
GND GND GPS/BDS
D10 TX GPS/BDS
D11 RX GPS/BDS
D12 IO Touch
VCC VCC Touch
GND GND Touch
VCC OUT+ Charger
GND OUT- Charger
Charger Pin Battery Pin
B+ VCC
B- GND

5. Video:

https://youtu.be/aKguFKC3hpo

6. Drivers:

  • macOS - Serial port driver for Sierra (10.12) and High Sierra (10.13)

7. Firmwares:

Steps:

  1. Unzip the firmware file
  2. Download Ardukit (macOS) and select .hex file to flash into Arduino board

8. App Download:

  • Satellite X (Available on App Store, for iPhone, iPad)

Satellite X Station – GPS/北斗卫星 智能便携导航系统

1. 功能和截图:

设备功能:

  • 开机自动搜索卫星功能
  • 显示有效卫星数量
  • 显示当前地理位置的经纬度
  • 显示当前设备移动速度
  • 显示卫星的 UTC 时间
  • 切换蓝牙模式,使用 iPhone App 显示数据

App 功能:

  • 显示当前地理位置的经纬度
  • 显示指南针功能
  • 显示当前地理位置大气压
  • 显示当前地理位置海拔高度,以及高度实时变化
  • 显示设备俯仰角、偏航角,以及翻滚角数据
  • 显示当前地理位置地图,并跟随设备自动移动方向及坐标
  • 显示当前地理位置城市及国家信息
  • 支持外接蓝牙 GPS 和 北斗卫星 导航定位设备数据

2. 主板和部件:

  • Arduino Uno 或者 Nano 任意主板一块
  • 可选版:Uno 的扩展版 Arduino Sensor Shield v5,或者 Nano 扩展版 I/O Shield
  • 主控为德州仪器 CC2541 的蓝牙 4.x 模块,包括四个端口 (VCC, GND, TX, RX)
  • 主控为 SSD1306 的 OLED 液晶屏幕,分辨率为128x64,通讯为IIC(I2C),包括四个端口 (VCC, GND, SDA, SCL)
  • 主控为 TTP223 的 触摸开关,用来操作设备的功能切换,比如切换设备本身和 iPhone App 蓝牙模式,包括三个端口 (VCC, GND, IO)
  • 锂电池模块,带保护板 (3.7v, 4000+mah)
  • GPS/北斗卫星 双模兼容模块,带外接有源天线,包括四个端口的兼容设备都兼容 (VCC, GND, TX, RX)
  • 主控为 TP4056 的 Type-C 锂电池充电/放电一体模块, 包括四个端口 (OUT+, OUT-, B+, B-)

3. 设计线路:

  • Arduino Uno 接线图 (此处省略充电模块如需要请参考 4. 接线表格)

  • Arduino Nano 接线图 (此处省略充电模块如需要请参考 4. 接线表格)

4. 接线表格:

Arduino Uno 或 Nano 针脚 模块针脚 模块名称
VCC VCC Bluetooth
GND GND Bluetooth
RX TX Bluetooth
TX RX Bluetooth
VCC VCC OLED
GND GND OLED
A4 SDA OLED
A5 SCL OLED
3.3v 3.3v GPS/BDS
GND GND GPS/BDS
D10 TX GPS/BDS
D11 RX GPS/BDS
D12 IO Touch
VCC VCC Touch
GND GND Touch
VCC OUT+ Charger
GND OUT- Charger
Charger Pin Battery Pin
B+ VCC
B- GND

5. 安装视频:

https://www.bilibili.com/video/BV1KV41167cU/

6. 驱动程序:

  • macOS 驱动 - - 如果你是 macOS 这两个版本 Sierra (10.12) 或 High Sierra (10.13) 的系统如果 USB 链接主板没有发现端口,则需要安装这个驱动。

7. 固件程序:

刷机步骤:

  1. 解压固件的 zip 文件
  2. 下载 Ardukit (macOS) 选择第一步解压的 .hex 文件刷入对应的 Arduino 版即可

8. App 下载:

9. Github:

英文版的 Github: https://github.com/woointeractive/SatelliteXStation

Pixel Weather – Personal Weather Station (EN)

Github: https://github.com/woointeractive/PersonalWeatherStation

PersonalWeatherStation

Personal Weather Station with Arduino, a smart device for Pixel Weather v4.x.

Table of contents

1. Features and Screenshots:

  • Temperature and humidity
  • Clcok with temperature and humidity
  • Pomodoro Timer
  • Game

2. Board and Parts:

  • Arduino Uno or Nano
  • Optional Shield: Uno with Arduino Sensor Shield v5, Nano with I/O Shield
  • Bluetooth with CC2541 (VCC, GND, TX, RX)
  • OLED 128x64 IIC(I2C) with SSD1306 (VCC, GND, SDA, SCL)
  • Passive Buzzer (3.3v, GND, S or D)
  • DHT11 (VCC, GND, S or D)

3. Design Pictures:

  • Arduino Uno

  • Arduino Nano

4. Pin Table:

Arduino Uno / Nano Pin Part Pin Part Name
VCC VCC Bluetooth
GND GND Bluetooth
RX TX Bluetooth
TX RX Bluetooth
VCC VCC OLED
GND GND OLED
A4 SDA OLED
A5 SCL OLED
3.3v 3.3v Passive Buzzer
GND GND Passive Buzzer
D13 S or D Passive Buzzer
VCC VCC DHT11
GND GND DHT11
D2 S or D DHT11

5. Drivers:

macOS - Serial port driver for Sierra (10.12) and High Sierra (10.13)

6. Firmwares:

HelloWorld - Testing screen and buzzer

v1.0.0 - Include all functions

Steps:

  1. Unzip the firmware file
  2. Download Ardukit (macOS) and select .hex file to flash into Arduino board

7. App Download:

Pixel Weather v4.x (Available on App Store, for iPhone, iPad, Watch)

像素天气 之 个人气象站

不知不觉 像素天气 Pixel Weather 已经更新到 v4.0.0 了,增加了一个重要的功能那就是支持周边硬件,而且是可以 DIY 的。

这次主要介绍下个人气象站硬件的 DIY 过程,下图是硬件成品和 App 中番茄时钟操作的界面。

个人气象站 和 像素天气 4.x

1. 功能和截图

首先来看下本次更新后硬件包括的一些功能

a. 测量模式:主要显示温度和湿度,以及日期信息

b. 时钟模式:主要显示时间,以及温度、湿度和日期信息

c. 番茄模式:番茄时钟功能,可以修改循环的次数(如上面的图片)

d. 游戏模式:包含一个打砖块的小游戏,可以用 App 手柄无线操作


2. 主板和部件

a. Arduino Uno,或者 Nano 主板一块

b. 可选版:Uno 的扩展版 Arduino Sensor Shield v5,或者 Nano 扩展版 I/O Shield

c. 主控为德州仪器 CC2541 的蓝牙 4.x 模块,包括四个端口 VCC, GND, TX, RX

d. 主控为 SSD1306 的 OLED 液晶屏幕,分辨率为128x64,通讯为IIC(I2C),包括四个端口 VCC, GND, SDA, SCL

e. 无源蜂鸣器,包括三个端口 3.3v, GND, S 或 D的数据口

f. 温度传感器 DHT11,包括三个端口 VCC, GND, S 或 D的数据


3. 设计线路

a. Arduino Uno

b. Arduino Nano


4. 接线表格

Arduino Uno / Nano Pin Part Pin Part Name
VCC VCC Bluetooth
GND GND Bluetooth
RX TX Bluetooth
TX RX Bluetooth
VCC VCC OLED
GND GND OLED
A4 SDA OLED
A5 SCL OLED
3.3v 3.3v Passive Buzzer
GND GND Passive Buzzer
D13 S or D Passive Buzzer
VCC VCC DHT11
GND GND DHT11
D2 S or D DHT11


5. 驱动程序

macOS 驱动 - 如果你是 macOS 这两个版本 Sierra (10.12) 或 High Sierra (10.13) 的系统如果 USB 链接主板没有发现端口,则需要安装这个驱动。


6. 固件程序

HelloWorld - 测试屏幕和蜂鸣器是否连接成功

v1.0.0 - 包所有功能的固件

刷机步骤:

1. 解压固件的 zip 文件

2. 下载 Ardukit (macOS) 选择第一步解压的 .hex 文件刷入对应的 Arduino 版即可


7. App 下载

像素天气 Pixel Weather v4.x (支持 iPhone, iPad, Watch)


8. Github

最后附上英文版的 Github 内容介绍地址:

https://github.com/woointeractive/PersonalWeatherStation