我正在将订阅模型集成到我的 Unity 应用程序中,并希望在 Apple 沙盒环境中使用测试卡来测试其功能。
我正在使用 UnityPurchasing 插件。启动时,将执行以下代码:
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
builder.AddProduct("vip", ProductType.Subscription);
UnityPurchasing.Initialize(this, builder);
但是,我遇到了一个问题,如以下日志所示:
Unavailable product vip-vip
UnityEngine.Purchasing.PurchasingManager:HasAvailableProductsToPurchase(Boolean)
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
UnityEngine.Purchasing.AppleStoreImpl:OnProductsRetrieved(String)
UnityEngine.Purchasing.Extension.UnityUtil:Update()
Purchasing failed to initialize. Reason: NoProductsAvailable.
Samples.Purchasing.Core.BuyingSubscription.BuyingSubscription:OnInitializeFailed(InitializationFailureReason, String)
我主要关心的是为什么产品“vip”被解释为“vip-vip”,这是问题的根源吗?
这是我到目前为止所做的:
使用电子邮件“admin”创建一个 Apple 帐户。 注意:我使用两个电子邮件地址 - “admin”用于具有管理员权限的帐户,“inapptester”用于 App Store Connect 中的沙盒测试。 “admin”无法添加到沙箱测试人员中。
建立一个名为“vip”的应用程序和应用内购买(IAP),此阶段仅提供价格和地区等基本信息。我还没有添加屏幕截图或其他详细信息。
在 App Store Connect 中向沙盒用户添加了“inapptester”电子邮件。
添加“admin”电子邮件作为内部测试人员,向 TestFlight 发送邀请并接受。
在“管理”设备上从 TestFlight 下载构建版本,启动它,并尝试 IAP,但它们不起作用。
进入设备上的“设置”->“应用程序商店”,我在其中找到了一个带有“管理员”电子邮件的“沙盒”字段。
将沙盒电子邮件更改为“inappTester”。
进行此更改后再次进入应用程序。 IAP 不起作用。
删除了应用程序并直接通过 Xcode 上传了新版本 - IAP 不起作用。
我没有额外注册任何东西,也没有发送它以供批准(这可能是问题所在吗?)。我的目标纯粹是内部测试。我做错了什么?
这真的很简单。问题出在文书工作上,而不是在编程上。 Apple 并没有真正告诉我们这一点(可能会有错误消息,但 Unity 似乎没有正确显示它)。您只需前往 https://appstoreconnect.apple.com/agreements/#/ 并同意销售付费应用程序的条款。
他们会要求提供更多信息,例如护照和税务信息以及其他详细信息。之后,需要几天时间才能获得批准。
然后,您的应用内购买将开始工作。即使没有 TestFlight,仅使用 Xcode 中的构建也会发生这种情况。