【发布时间】:2018-08-13 10:59:46
【问题描述】:
我对我们的应用内购买流程有疑问,因为它被 Apple 拒绝了。
因为我们不知道用户是否有有效的订阅,所以我们必须先获取收据,这会导致 iTunes Store 密码提示(这是我们在非生产环境中正确理解的正常行为)。然后进行验证,并根据结果显示自动续订订阅页面或传递请求的操作。
我们的流程是:
- 获取收据
- 验证收据
- 如果
- 有效:通过请求的操作;
- 无效:显示用户可以在其中进行购买的自动续订订阅页面。
现在,Apple 在拒绝中表示他们看不到自动续订订阅页面。相反,他们从 iTunes Store 获得了密码提示。
正如我们正确理解的那样,密码提示是非生产环境中的正常行为,但苹果似乎并不期望这种行为。我们获取收据的方式没有任何改变。
我们使用SwiftyStoreKit 来轻松处理。这是我们的代码:
SwiftyStoreKit.fetchReceipt(forceRefresh: false) { result in
switch result {
case .success(let receiptData):
let encryptedReceipt = receiptData.base64EncodedString(options: [])
Log.info("Fetch receipt success")
//further code to send the receipt to our server
case .error(let error):
observer.send(error: error.localizedDescription)
}
}
我们的流程是否不正确,或者我们如何在不获取收据的情况下验证用户是否拥有有效订阅?我们在这里有点困惑。有人可以在这里给我们任何建议吗?
【问题讨论】:
标签: ios in-app-purchase receipt-validation