跳至内容
Google海外App的制作与发布(3)

Google海外App的制作与发布(3)

应用MVP开发完成后,我们就会进入到测试工作阶段,过程中还需要补全相关上线资料。

1.内部测试账号准备

实际测试订阅过程中,大陆的Google账号受限太多,比如:

  1. 我实际只能测试Google登录,这个不受限
  2. 但你的App是无法发布到大陆的Google Play Store,所以应用商店你看不到
  3. 同理,你的订阅商品也看不到,导致你无法拉取到那些你设置好的年度或者月度付费产品方案
  4. 此外,因为没有海外/香港的Google支付账户,你无法测试付款购买这个动作

其中第3个问题坑了我很久,实际过程中发现不是代码问题,而是因为订阅产品不支持中国大陆,所以登录google play商店的账号如果是“中国”的,则无法获取订阅产品,在“订阅商品”的上架地区中补充“香港”。

1.1 单纯Google香港账号行么?

一开始我计划配置一个香港的Google账号,但由于手机号、支付信息等的缺失,经常所属地区IP漂移等问题,所以单纯的创建账号仍是无法解决上面提到的2、3、4几种情况。

然后我查询了很多网上的资料,好像需要这么干:

  • 补全这个Google账号的支付资料,固定其所属地区,比如就固定在香港,那么是可以解决2、3这两个问题的
  • 绑定香港的银行卡,确保可以支付。这样可以解决4这个问题。

你有没有觉得“支付资料”和“银行卡”绑定这两不是一个事么? 理论上是,其实有点区别,别着急我一步步细说我的踩坑和解决过程。

1.2 海外手机号+银行卡的尝试

为了搞定属地和支付,我想自己搞一张“海外手机号”+一个“海外的银行卡”,结果失败了~

  • 海外手机号只能开esim用,国内手机不支持,所以要搞esim写实体卡。这个在网上可以买到,但是最终钱白花了,因为esim拿不到;
  • esim参考了一些网上资料,找的giffgaff,买的最便宜的那档套餐,地址填的英国的一个随便的地址,以为电子sim卡么,应该不需要邮寄,但实际错了,他需要一个激活码,而那个激活码在实体卡背面,那个卡让我寄到了大英博物馆…
  • 海外银行卡也尝试了几家都没开成,主要还是限制在了香港地址、电话、身份之类的上面;

1.3 咸鱼和Google Play礼品卡

最后,我是通过咸鱼解决了2、3两个问题,但第4个问题不行:

  • 咸鱼上搜“港区礼品卡”,然后和卖家聊说想解决港区属地问题,一般20元,他会让你绑定一张香港信用卡,然后再解绑,之后你的港区Google账号就会固定属地为香港;这样的话2、3两个问题就解决了,之后你在自己的App里就可以看到订阅产品;
  • 但你只是能看到,当你想测试购买的时候,因为你已经解绑了信用卡,所以你的余额是不够的,你还是买不了,我继续尝试了再买一张“港区礼品卡”,但无法充值(大概最低面额50元,这个钱又白花了),Google的监测手段会要你提供更多证明你香港身份的信息,所以问题4的解决还是需要你有一张香港本地银行卡。

1.4 你还需要一部国际版手机

最终安装APK依赖Google环境和Google Play商店, 国内的手机基本都锁了这个,所以还是去咸鱼买一部国际版的手机,一般500以内就可以搞定。最好买全新未开封的(上过当)。

2.内部测试

前面的测试准备完了后,内部测试其实比较简单。内部测试可以理解为就是开发团队自测或者找一两个好友帮忙测试。

  • 在Google Play Console中创建内部测试轨道(Internal Testing Track)
  • 上传App Bundle(.aab)或APK到内部测试轨道。
  • 填写版本说明(Release Notes),描述本次测试的重点改动
  • 把参与测试的人员加到人员列表里
  • 发布后,测试者会收到邮件通知,可通过链接下载安装
  • 这个阶段尽量把所有问题都解决掉,再进入后面的封闭测试

3.许可测试和支付卡

这个工作其实就是为了测试购买时不实际扣款,我是在封闭测试时需要,所以提前配置下

  • 许可测试(License Testing)不在「Testing(测试)」菜单里,而是在 ** 账号全局设置(Account details)** 里,和内部 / 封闭 / 开放测试完全是两个入口
    • 专门用来 免费测谷歌内购 / 订阅,不扣钱
    • Play Console 左侧 → 设置 Settings-》>账户详情 Account details->下滑找到:许可测试 License testing->输入你的 Gmail 邮箱 → 保存 (✅ 加完这个白名单✅ 等 15~30 分钟谷歌同步)
    • 如果之前内部测试把人加到过邮件列表,那这里默认已经有了。许可响应选RESPOND_NORMALLY(正常响应),这意味着 Google Play 会像对待普通用户一样处理请求
  • 之后再点订阅:
    • 直接弹出两张官方测试卡
    • 选「永远通过」
    • 0 元、不扣钱、无限次测试订阅

4.应用信息补全

这个也是封闭测试前要完成的,内容很多。位置在Google Play>监控和改进>政策和计划>应用内容。

image.png

4.1 隐私政策

Google Play>监控和改进>政策和计划>应用内容

关于隐私政策我们可以用google site page来帮我们。

如果你想页面漂亮点,有些模板可以参考:https://www.privacypolicies.com/templates/android-app-privacy-policy/

创建:

  • 访问: 登录 sites.google.com
  • 创建: 点击右下角的 “+”(空白页面)。
  • 标题: 页面标题写 [你的应用名] Privacy Policy
  • 正文: 添加一个“文本框”,把你隐私政策文字全部粘贴进去。
  • 发布: * 点击右上角的 “发布 (Publish)”
      • 站点地址: 输入一个简单的名字(如 myapp-privacy-policy)。
    • 谁可以查看: 务必确保设置为 “公开 (Public)”
  • 获取链接: 点击发布成功后的“复制已发布网站链接”,这就是你要填入 Google Play Console 的那个链接。

必需内容

  • 数据收集说明
  • 数据使用说明
  • 数据存储说明
  • 用户权利说明
  • 联系方式

4.2 广告

选项:包含广告 / 不包含广告 ( 哪怕只放了测试广告,也要选 “是,我的应用包含广告”。) 若选「包含」:

  • 勾选广告类型(AdMob、第三方 SDK、自家广告)
  • 确认符合儿童广告政策(如果面向 13 岁以下)
  • 保存

4.3 应用访问权限(审核用)

1.基本填写

  • 用途:给 Google 审核人员提供测试账号 / 密码 / 访问码,确保能完整测试所有功能(含付费 / 会员 / 后台)
  • 操作:应用内容 → 应用访问权限 → 填写:账号、密码、说明(如 “测试账号,全功能可用”)→ 保存
    • 如果你的应用有登录功能(包括 Google 登录),你必须给 Google 审核员提供一个测试账号和密码
    • 如果全功能开放,选“所有功能均可在无需特定访问权限的情况下使用”;如果有登录墙,选“我的应用中的全部或部分功能有使用限制”(只要有登录就选这个), 然后会让填写最多五条说明。

目前我的app:登录界面提供了两种方式,一种是输入手机号(但没有短信验证,直接可以进入),另一种是google登录。进去后所有功能都是开放的,广告也可见,只有购买remove ads的订阅后才会去除广告,所以是这种情况

这种情况对审核来说反而非常有优势!因为提供了一个**“低门槛入口”**(手机号直接登录),这大大降低了审核员因为 Google 登录失败而拒审的概率。

2.五条说明

我这里只写了1条 操作名称: Test Account & Subscription Info 用户名: 13800000000 密码: `No password required 说明内容: 这里其实就是说明下要点,帮助Google审核员快速进到你的系统。

4.4 内容分级

第一部分:基本信息

  • 电子邮件地址: 填写你的联系邮箱。
  • 类别: 选择 “实用工具、效率、通信或其他” (Utility, Productivity, Communication, or Other)。

第二部分:分级问卷(核心选项)

  1. 已下载应用 (Downloaded App)
  • 问题: 应用是否包含作为应用包一部分下载的任何与分级相关的内容(例如:性、暴力、语言)?
  • 选择:否
  • 理由: 你的代码和图片资源中没有色情、血腥或脏话。
  1. 用户内容共享 (User Content Sharing)
  • 问题: 该应用是否以本机方式允许用户通过语音通信、文字或分享图片或音频与其他用户交互或交换内容?
  • 选择:否
  • 理由: 你没有社交功能,用户之间不能互相发消息。
  1. 联机内容 (Online Content)
  • 问题: 应用是否显示或推荐不由应用包本身提供的内容(如网页、动态内容)?
  • 选择:否
  • 理由: 虽然你有广告和 Google 登录,但这些属于“第三方插件”,不属于应用主动向用户分发“非受控网络内容”。
  1. 推广或销售有年龄限制的产品或活动
  • 问题: 应用是否推广或销售酒精、烟草、枪支或博彩?
  • 选择:否
  1. 其他 (Miscellaneous)
  • 应用是否允许用户购买数字商品?
    • 选择:是(因为你有“Remove Ads”订阅)。
  • 应用是否包含搜索引擎或浏览器?
    • 选择:否

第三部分:关于“健康/饮食”的敏感点(重要)

如果问卷中出现类似“是否包含针对饮食失调或过度节食的建议”:

  • 务必选“否”。 你的应用只是卡路里计算工具,不提供任何极端的医疗或减肥建议。

💡 关键提醒:为什么选了“是(购买功能)”后,分级不会太高?

  • 内购: 勾选“购买数字商品”不会让你的分级变高,只会让商店显示“包含应用内购买”标签。
  • 广告: 只要你的广告设置(AdMob)限制了不展示成人/敏感内容,你的分级通常会落在 3+12+

⚠️ 与你之前设置的“18+”冲突吗?不冲突。

  • 内容分级(IARC): 是根据应用内容(暴力、色情等)来定的,通常工具类会得到最低分级(3+)。
  • 目标受众(Target Audience): 是你主动选择的营销范围(18+)。

最终效果: 你的 App 在商店里会显示“分级 3+”,但 Google 会根据你的受众设置,只把 App 展示给 18 岁以上的用户。这对于避开未成年人合规审查是最完美的组合。

操作: 填完问卷后,点击 “保存” -> “计算分级” -> “应用分级”。搞定!


4.5 目标受众群体和内容

这一部分是 Google Play 政策最严苛的地方(涉及 COPPA 和 GDPR 法律)。由于你之前已经决定避开青少年合规的麻烦,请务必按照以下“成人向自保策略”填写:


  1. 目标年龄段 (Target Age Group)
  • 勾选: 18 岁以上。(同时勾选”如果用户被 Google 判定为未成年人,则限制其使用我的应用(可选)“)
  • 注意: 不要勾选任何 18 岁以下的选项(如 13-15 或 16-17)。
  • 理由: 只要涉及未成年人,你就必须证明你的广告、隐私政策、甚至 UI 设计完全符合儿童保护法。只选 18+ 可以大幅简化审核。
  1. 应用详情 (App Details)
  • 问题: 您的应用是否可能吸引儿童? (Could your store listing unintentionally appeal to children?)
    • 选择: 否 (No)
    • 填写技巧: 虽然你的 UI 可能比较简洁或有可爱的图标,但在 Google 的逻辑里,选“否”意味着你承认这个 App 的功能(计算卡路里、管理饮食)是为成年人设计的。
      • 如果你选“是”,Google 会强制在你的商店页面加上一个“Not designed for children”的丑标签,甚至可能要求你重新提交所有素材。
    • 风险提示: 如果你的 App 名字叫“小猪卡路里”或者全是卡通动物,Google 可能会驳回你的“否”选项。只要APP看起来是一个正常的健康工具,选“否”就没问题。

3. 广告 (Ads)

问题: 您的应用是否包含广告?

  • 选择: 是 (Yes)
  • 子问题: 广告是否符合 Google 的家庭政策?
  • 回答逻辑: 因为你已经选了受众是 18+,你只需要确保你的 AdMob 广告设置中没有极其违规的内容。

💡 为什么这么选最安全?

如果你选了 18 岁以下,你需要面对:

  1. 中性年龄校验壁垒: 你得在 App 启动时加一个“生年月日”转盘,且不能默认年龄。
  2. SDK 限制: 你必须证明你用的所有 SDK(包括广告和统计)都是“儿童安全版本”。
  3. 数据收集: 收集 Email 必须经过家长同意。

通过只选 18+,你直接“跳级”通过了这些复杂的考核。

⚠️ 最后的“连贯性”检查:

  1. 隐私政策: 确认里面写了 “Intended for use by individuals aged 18 and older”。
  2. 内容分级: 虽然内容分级可能是 3+,但这代表内容“健康”,不代表受众必须是“儿童”。

4.6 数据安全

第一阶段:数据收集与共享 (Data Collection & Sharing)

在开始问卷时,请按以下逻辑勾选:

  1. 您的应用是否会收集或分享任何受支持的用户数据类型?

    • 选择:是 (Yes)
  2. 您的应用收集的所有用户数据在传输过程中是否都会经过加密?

    • 选择:是 (Yes)(即使是本地应用,调用 Google SDK 或登录时也是加密传输的)。
  3. 您的应用支持以下哪些账号创建方法?请选择所有适用选项

    • 选择:用户名和其他身份验证方法 (Username and other authentication methods)、OAuth
    • 点击oauth 后,出现:添加一个链接,让用户可通过该链接要求删除账号和相关数据:网址填什么?(低成本方案)
      • 在你的隐私政策网页中添加一个锚点(推荐)。 如果你已经有了一个隐私政策网页(Privacy Policy),在里面加一段关于“Account Deletion”的说明,然后把链接填进去。例如: https://yourwebsite.com/privacy#deletion
  4. 您是否为用户提供了一种请求删除其数据的方法?

    • 选择:是 (Yes)(建议在个人中心加一个“注销账号”或“删除本地数据”的按钮,这是目前的硬性合规要求)。

第二阶段:选择数据类型 (Data Types)

你需要勾选以下几项(千万不要多选):

  1. 个人信息 (Personal Info):

    • 勾选 “用户 ID (User IDs)”(因为你有手机号登录/Google 登录,这属于用户标识符)。
  2. 健康与健身 (Health and Fitness):

    • 勾选:是(因为你让用户填了身高、体重、卡路里数据)。
  3. 应用活动 (App Activity):

    • 勾选 “应用内互动 (In-app interactions)”(如果你用了 Firebase 等统计工具)。
  4. 应用信息和性能 (App Info and Performance):

    • 勾选 “崩溃日志 (Crash logs)”(基本每个 App 都会收集这个)。
  5. 设备或其他标识符 (Device or Other IDs):

    • 勾选 “设备或其他标识符”(用于广告推荐和订阅校验)。

第三阶段:具体数据用途声明 (Data Usage - 核心细节)

对于你勾选的每一项,Google 会问你:是“收集”还是“共享”?

  1. 用户 ID (User ID)
  • 收集与分享设置

    • 收集 (Collected): 勾选
    • 分享 (Shared): 勾选 (因为你的用户账号信息是自己管理或通过 Google 校验的,不会卖给或分享给第三方)。
  • 处理方式设置

    • 收集的此类数据会受到临时处理 (Ephemeral Processing) 吗?

      • 选择:否
      • 理由: “临时处理”是指数据仅在内存中存在几秒钟,处理完就丢弃。因为你的用户登录后,ID 需要持久保存以维持登录状态和订阅关联,所以不能选“是”。
    • 是否必须收集这些数据?

      • 选择:是(用户无法关闭这项数据收集操作)
      • 理由: 只要用户选择“登录”,为了识别身份和校验订阅,系统就必须记录这个 ID。用户如果不希望被收集,唯一的选择是不登录。
  • 数据用途 (Purposes)

    • 在用途列表中,请勾选以下两项:
      • 应用功能 (App Functionality): 必须勾选。这是应用运行、展示个人数据所必需的。
      • 账号管理 (Account Management): 必须勾选。这是用于用户登录、注销和身份校验的核心用途。
  1. 健康与健身信息 (Health/Fitness)
  • 收集:是
  • 共享:否
  • 处理方式: 数据是否在本地处理?勾选“是” (Processed Locally)

    注意: 这一点极其重要!因为你之前强调是本地存储,勾选此项可以告诉 Google 数据不会上传到你的服务器。

  • 用途: 勾选 “应用功能 (App Functionality)”
  1. 设备或其他标识符 (Device ID)
  • 收集:是
  • 共享:是(因为 AdMob 广告会用到这个 ID)。
  • 用途: 勾选 “广告或营销 (Advertising or Marketing)”“欺诈预防、安全与合规”

💡 避坑指南:

  • 不要勾选“位置信息”: 除非你真的调用了 GPS 权限。计算卡路里不需要位置,误勾选会导致极其严格的隐私审查。
  • 本地存储的文字表述: 如果有说明框,统一口径:“All health-related data (height, weight) is processed and stored locally on the user’s device. No health data is uploaded to external servers.”
  • 关于删除: 如果你的 App 还没有“注销”功能,一定要在隐私政策里写明:用户可以发送邮件到你的邮箱申请删除数据。

完成这些后,点击 “提交”。这部分内容会直接显示在 Google Play 详情页的“数据安全”版块,让用户知道你是一个尊重隐私的开发者。

4.7 广告ID

在 Google Play Console 的“数据安全”问卷中,广告 ID (Advertising ID) 的填法与你是否处于“封闭测试”阶段无关,而与你的代码中是否集成了广告 SDK(如 AdMob)有关。

  1. 核心确认:是否使用了广告 ID?

在数据安全页面的“设备或其他标识符”部分,系统会问你:“您的应用是否使用了广告 ID?”

  • 选择:是 (Yes)
  • 理由: 只要你集成了 AdMob,应用就会调用 Google Play 服务的权限来获取 AAID (Android Advertising ID)。

  1. 详细配置(最关键的一步)

点击进入“设备或其他 ID”的详细说明页,按以下内容填写:

项目选择备注
收集 (Collected)是 (Yes)只要 SDK 读取了 ID,就属于收集。
共享 (Shared)是 (Yes)必须选是。AdMob 会将此 ID 发送给广告联盟。
临时处理否 (No)广告系统通常会记录此 ID 用于频率控制。
是否必须收集选“用户无法关闭”。(虽然用户在手机设置里可以重置 ID,但在应用层面这是自动收集的)。

  1. 选择用途 (Purposes)

请务必勾选以下两项:

  • 广告或营销 (Advertising or Marketing): 声明该 ID 用于展示广告和衡量效果。
  • 欺诈防范、安全和法规遵从: 声明该 ID 用于检测无效点击和维护账号安全。

  1. 封闭测试阶段的特别说明

很多开发者在测试阶段会犹豫,担心还没开始放广告。请记住:

  • 代码即事实: 审核机器人扫描的是你的 AAB 包。如果包里有 AdMob 的类,你却填了“否”,会被判定为声明不实。
  • 一劳永逸: 现在填好了,等以后你从“封闭测试”转为“正式发布”时,就不需要重新修改这部分繁琐的问卷了。

4.8 政府应用、金融产品和服务

核心选择:选“否 (No)”

4.9 健康类应用(本产品相关)

第一步:声明身份

系统会问你该应用属于哪种健康应用:

  • 选择: 如果你只是提供卡路里计算和饮食建议,选择 “健身和营养 (Fitness and Nutrition)” 或类似选项。
  • 注意: 绝对不要选择“医疗设备”或“疾病诊断”,除非你拿到了医疗器械认证。

第二步:隐私披露

在这一部分,Google 会要求你确认:

  • 隐私政策: 确保你的隐私政策中包含了对身高、体重、饮食数据处理的描述。
  • 数据用途: 确认这些数据仅用于提供计算功能(即你之前在“数据安全”里填写的逻辑)。

第三步:健康声明 (Health Declaration)

你可能需要勾选一个确认框,声明你的应用:

  • 不是医疗建议: 你必须确认你的应用仅供参考,不用于诊断或治疗疾病。
  • 建议做法: 在 App 的“关于”页面或注册流程中加一句:“本应用提供的建议不作为医疗诊断依据,请在做出重大饮食调整前咨询医生。”

5.封闭测试人员准备

Google有一个新的政策,如果你的开发者账号是 2023 年 11 月 13 日之后注册的,封闭测试是 强制要求。部分早期老账号可以申请豁免,但会逐步过渡。

所谓封闭测试就是APP在正式发布前,必须先完成至少 14 天的封闭测试,且需要 至少 12 名测试者 提交反馈。

这种可以去一些微信群、咸鱼上找找,我当时是用的Fiverr找的海外测试,大概港币150左右。

5.1 Fiverr购买服务

  • Fiverr上就搜“12 Tester”就可以找到,可以找一些成交多的,然后和他聊就行。
  • 购买服务后他可能会给你个测试人员的csv,你导入到你的测试人员中即可。
  • 过程中有什么问题都可以问卖家
  • 但我过程中发现Google Play Console中一直显示只有一个人下载,过了48小时也是这样,与他沟通说是Google自己的问题,好在最终也确实不影响测试结果
  • 如果提前接入Firebase realtime analysis可能就能看到实时测试数据了,但我没接入
  • 好像每天至少有 2-3 名 测试人员保持活跃就可以

5.2 测试人员加入流程

  1. 在 Google Play Console 创建封闭测试群组

    • 左侧菜单 → 测试(Testing) → 封闭测试(Closed Testing) → 创建新的测试群组
    • 填写测试群组名称(例如 “Beta Test - Round 1”)。
    • 选择需要测试的轨道版本(必须已上传 AAB 并发布)。
  2. 添加测试人员

    • 点击 添加测试人员
    • 选择 通过 Google Group 管理(推荐)或 手动输入邮箱
    • 如果使用 Google Group:创建一个 Google Group(如 [email protected]),将测试者邮箱添加为群组成员,然后在 Play Console 中绑定该 Group。
  3. 获取测试链接

    • 创建完成后,Play Console 会生成一个 测试加入链接(例如 https://play.google.com/apps/testing/com.example.app)。
    • 将此链接分享给测试人员,他们点击后使用自己的 Google 账号加入测试,然后可下载测试版应用。
  4. 测试人员需完成的操作

    • 点击链接 → 同意测试协议 → 成为测试者。
    • 在 Google Play 商店中搜索应用(或通过链接直接跳转)→ 下载测试版。
    • 正常使用应用 → 截图或在应用中提交反馈(如果有反馈渠道)。

6.封闭测试

测试的过程就不说了,基本上跟着节奏走就可以。测试结束后,如果你是购买的测试服务,他们会发给你一个详细的测试报告文件,上面包括了问题、测试用例、以及提交正式申请时的问题和答案

  1. 测试满 14 天后,在 Play Console 中检查 测试是否满足要求
    • 测试人员数量 ≥ 20
    • 测试持续天数 ≥ 14
    • 有合理的反馈记录
  2. 点击 申请发布(Promote to production) 或直接创建正式发布版本。
    • 按照测试团队提供的测试报告文件回复即可。
  3. 如果 Google 要求提供测试证明,可以收集:
    • 测试人员列表(邮箱)
    • 测试天数截图
    • 反馈截图或汇总
  4. 如果申请发布被拒绝
    • 常见原因
      • 测试期间没有足够的活跃行为。
      • 测试人员中有内部开发团队成员(违反规则)。
      • 应用存在严重 Bug 未修复。
    • 解决办法:延长测试期至 21-30 天,确保每天有活跃反馈,修复所有已报告的 Bug。