记一次苹果应用市场上架过程以及踩过的坑

黄鹏宇 408 2023-01-21

IMG_2121IMG_2126
应用商店预览地址:https://apps.apple.com/cn/app/aceword/id1665061271

一、大致介绍

整个上架前前后后花了快一个月时间,终于赶在除夕审核通过,顺利上架。
本篇博客记录这次苹果应用商城上架的大致流程,以及踩过的坑。希望对你们有帮助。
我们使用flutter进行开发,对于iOS版本进行少部分修改,就可以直接提交,下面是关键流程。

二、关键流程

1. 注册公司账号

1.1 邓白氏编码(D-U-N-S编号)

这个是企业身份标识,注册Apple公司主体账号必须先申请这个。大概花了5天?直接在苹果开发者官网申请。
https://developer.apple.com/enroll/duns-lookup/#!/search 底部
image-1674453771671

1.2 个人账号迁移

最开始打算用个人账号,迁移至公司主体,但是这个过程特别慢。下面这一步卡了一个多月。于是只好新注册一个公司账号,损失688😭。
image-1674453487536

2. 内购

2.1 银行账户、报税单

填写银行账户的表单中,只有 CNAPS 代码稍微麻烦些,可以去百度上搜一下。
报税单的话,可以参考这个文章:https://blog.csdn.net/joinclear/article/details/107641680

2.2 创建商品

商品分为两大类,四小类。

大类
App 内购买项目 消耗型项目 非消耗型项目
订阅 自动续期订阅 非自动续期订阅

需要注意的点是,

  1. 这个产品ID不能修改,即使删掉该商品,也不能复用。
    image-1674454323269
  2. 价格不能随意输,只能使用内置价格表,但是即使对于下图,4个$0.99,他们对应的人民币也不一样。可以点击其他货币查看。
    image-1674454503817

2.3 支付的前后端设计

2.3.1 iOS端

我们使用flutter的第三方包in_app_purchase,调起内购,完成支付后,会得到一个PurchaseVerificationData,拿着这个凭证发给后端。
https://pub.dev/packages/in_app_purchase

2.3.2 java后端

我们后端用的java,收到前端发来的支付凭证后,向苹果服务器验证。

请求:

  • method: POST
  • url: https://buy.itunes.apple.com/verifyReceipt
  • data: {"receipt-data":"支付凭证","password":"密钥"}

注意点:

  1. 该验证只能验证凭证是否valid,并且可多次验证,所以需要自行处理逻辑。
  2. 前后端通信时,须携带产品id,因为苹果那边返回的是最近所有的交易明细,跟当前凭证无关。
    image-1674457463820

3. 审核时需要注意的问题

3.1 预览图

预览图须至少包含四个尺寸。

3.2 第三方登录

如果提供比如微信登录这种第三方登录,则需要同时提供Apple登录,否则会审核失败。

3.3 Apple登录按钮的文案

只有两种文案可以选择,市面上大部分app放的是Apple的logo图标。
我们最开始用的使用Apple ID登录,被拒审了~只能如下文案(不确定):

  1. 通过Apple登录
  2. 通过Apple继续

NzoyoZodB2

3.4 审核时效

第一次提交,我们通常是凌晨2-3点发布,会在第二天下午4点左右,由“正在等待审核”,变为“正在审核”,并且基本在5点左右会出结果。

3.5 ipv6的问题

服务器要开启ipv6的支持。

4. 其他流程

4.1 微信登录与跳转

我们使用flutter的第三方包fluwx,进行微信登录与微信支付。
https://pub.dev/packages/fluwx
iOS的微信登录需要获取universal link
效果为使用Safari访问https://link.aceword.xyz,即可跳转到app。
注意点:
苹果审核时,他们的手机上没有安装微信的话,需要隐藏 ”使用微信登录“按钮。

4.2 Apple登录

使用sign_in_with_apple进行ios端的苹果登录。最终只能获得用户的email及name。
https://pub.dev/packages/sign_in_with_apple

篇幅原因,写的不太详细,大家对哪一部分感兴趣可以留言交流。