You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

真机环境下In-App Subscription测试异常求助

真机环境下In-App Subscription测试异常求助

兄弟,我之前测试iOS内购订阅的时候,完完全全踩过和你一模一样的坑!太懂这种明明步骤都按文档来,但就是卡壳的憋屈感了,给你分享几个我当时排查出来的关键点,你挨个试试:

  • 先把沙盒账号的登录入口搞对!
    你提到在「Settings -> Developer」里登录,这是错的!iOS 14及以上的系统,沙盒账号的正确添加入口是「设置」-「App Store」拉到最底部的「Sandbox Account」,在这里添加你在App Store Connect里创建的专用沙盒测试账号(注意:这个账号绝对不能用来登录设备的普通App Store或iCloud,只能专门用于内购测试)。而且测试前,一定要把设备上原本登录的个人Apple ID从App Store里退掉,不然内购流程会优先用个人账号,直接跳过沙盒登录的步骤。

  • 检查App Store Connect的配置是否到位
    别光看自己的代码,先去App Store Connect里确认:

    • 你的App ID已经开启了「In-App Purchase」功能
    • 你创建的订阅项目状态是「已批准」或「准备提交」(哪怕是测试用的订阅,也得等苹果的初步审核通过,状态不对的话真机上是无法正常触发沙盒交易的)
    • 你的测试设备的UDID已经添加到了App Store Connect的「测试设备」列表里
  • Xcode和代码的小细节排查

    • 打开Xcode的「Signing & Capabilities」,确认已经添加了「In-App Purchase」的Capability,并且团队选择的是你在App Store Connect里对应的开发团队
    • 触发内购前,完全退出App再重新打开,有时候后台缓存会导致沙盒环境不生效
    • 重点看Xcode控制台的错误日志!交易失败时会返回具体的错误码,比如SKErrorClientInvalid(账号权限问题)、SKErrorPaymentInvalid(产品配置问题),根据错误码定位问题比瞎猜高效多了
  • 最后几个玄学但有用的操作

    • 重启你的测试设备,iOS的沙盒环境偶尔会有状态缓存,重启后大概率能重置
    • 换一个全新的沙盒测试账号试试,有时候旧账号因为多次测试被苹果临时限制了

我当时就是把个人Apple ID从App Store退掉,然后在正确的沙盒入口添加了测试账号,重启设备后就正常弹出沙盒登录窗口了,你先试试这几步!

内容来源于stack exchange

火山引擎 最新活动