StoreKit 2:.subscriptionStatusTask 滞后以及如何在此期间显示 ProgressView?

问题描述 投票:0回答:1

我目前正在我的应用程序的主视图上使用 .subscriptionStatusTask。到目前为止,我在 Xcode 中进行的测试似乎一切都运行良好。然而,当我将其弹出到 TestFlight 时,我注意到在我“购买”订阅和 .subscriptionStatusTask 在注意到更改后启动之间出现了一些“滞后”。换句话说,我的应用程序需要几秒钟的时间才能知道它是“专业版”而不是初始的非订阅版本(我设置了一个已发布的变量来指示专业版或非专业版)。所以我的问题是:

  1. 这是正常行为吗?应该有一点延迟吗?
  2. 我是否应该在成功购买后立即将已发布的 var 设置为 true?注意:我正在使用 .manageSubscriptionSheet;因此,如果用户从那里重新订阅或升级其订阅,似乎没有办法设置此变量。
  3. 有没有办法在 .subscriptionStatusTask 加载/思考时以某种方式设置 ProgressView?由于它是一个修饰符,并且我在闭包中设置了已发布的“pro”变量,因此我似乎无法真正使其正常工作。我尝试在 .subscriptionStatusTask 启动时将进度视图状态类型标志设置为 true,但我似乎找不到正确重置该标志的方法,以便它知道它已完成并且进度视图消失。

想法?有建议吗?

ios swiftui in-app-purchase subscription storekit
1个回答
0
投票

我决定使用 async/await 并调用两个函数...一个用于完成大部分工作以检查哪个订阅处于活动状态(或没有),另一个用于重置 ProgressView 的标志。当 ProgressView 处于活动状态且框架为 maxWidth/maxHeight 为 .infinity 且背景为 .white.opacity(0.25) 时,我在主视图上使用了 .overlay。目前,这似乎对我有用。根据我的逻辑,如果用户没有网络连接并想要离线工作,我可能还必须考虑如何工作。不过,如果我遇到麻烦,那是另一篇文章了。我仍然不知道为什么 .subscriptionStatusTask 存在如此大的滞后,但我想我应该发布我所做的事情,以防其他人试图为其代码找到解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.