Swift 中用户的 appStoreReceiptURL 是静态的吗?
Is a user's appStoreReceiptURL static in Swift?
我正在查看状态调查,以便随时查看我的用户的订阅(自动续订)状态。过程很简单:如果您有用户的收据数据字符串,您可以将其发送到 Apple(服务器端),他们将 return 解密 JSON 收据。这是我在购买自动续订订阅时获取收据数据的代码:
if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
FileManager.default.fileExists(atPath: appStoreReceiptURL.path) {
do {
let receiptData = try Data(contentsOf: appStoreReceiptURL, options: .alwaysMapped)
print(receiptData)
//Encrypted receipt data
let receiptString = receiptData.base64EncodedString(options: [])
} }
当我反复测试沙盒用户在我的应用程序中购买不同的订阅时,我看到收据数据字符串发生了变化,但不清楚旧字符串在提供给 Apple 时是否会产生最新的交易历史记录服务器。
考虑以下情况:如果订阅用户在不在应用程序上时取消订阅,获得新的 phone,然后下载我的应用程序,以确定他们的订阅状态是否可以使用收据数据从他们第一次购买旧 phone 的字符串来确定他们当前的订阅状态?
我的问题:我是否需要不断更新数据库中用户收据数据字符串的值,以便在几个月后查看他们的订阅状态?在不同的设备上怎么样?
获取订阅状态更新的最佳方式是将所有收据存储在数据库中,后端服务应连接到苹果服务器以获取最新更新。
任何订阅操作(取消、延长、降级、升级)都应该从后端完成。以下是这样做的好处
- 将参考唯一的电子邮件 ID 提供订阅。
- 如果任何用户更改设备,订阅访问将根据唯一的电子邮件 ID 进行处理。
- 防止欺诈访问多个用户的订阅。
在沙盒中,它可以让您经常购买订阅,因为根据您在 "In app purchase" 中选择的持续时间在 minutes/hours 中重复和取消订阅过程。
收据中的初始元数据不会更改,直到客户取消定期订阅。因此,您可以保存并使用该收据进行进一步更新。
我正在查看状态调查,以便随时查看我的用户的订阅(自动续订)状态。过程很简单:如果您有用户的收据数据字符串,您可以将其发送到 Apple(服务器端),他们将 return 解密 JSON 收据。这是我在购买自动续订订阅时获取收据数据的代码:
if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
FileManager.default.fileExists(atPath: appStoreReceiptURL.path) {
do {
let receiptData = try Data(contentsOf: appStoreReceiptURL, options: .alwaysMapped)
print(receiptData)
//Encrypted receipt data
let receiptString = receiptData.base64EncodedString(options: [])
} }
当我反复测试沙盒用户在我的应用程序中购买不同的订阅时,我看到收据数据字符串发生了变化,但不清楚旧字符串在提供给 Apple 时是否会产生最新的交易历史记录服务器。
考虑以下情况:如果订阅用户在不在应用程序上时取消订阅,获得新的 phone,然后下载我的应用程序,以确定他们的订阅状态是否可以使用收据数据从他们第一次购买旧 phone 的字符串来确定他们当前的订阅状态?
我的问题:我是否需要不断更新数据库中用户收据数据字符串的值,以便在几个月后查看他们的订阅状态?在不同的设备上怎么样?
获取订阅状态更新的最佳方式是将所有收据存储在数据库中,后端服务应连接到苹果服务器以获取最新更新。
任何订阅操作(取消、延长、降级、升级)都应该从后端完成。以下是这样做的好处
- 将参考唯一的电子邮件 ID 提供订阅。
- 如果任何用户更改设备,订阅访问将根据唯一的电子邮件 ID 进行处理。
- 防止欺诈访问多个用户的订阅。
在沙盒中,它可以让您经常购买订阅,因为根据您在 "In app purchase" 中选择的持续时间在 minutes/hours 中重复和取消订阅过程。
收据中的初始元数据不会更改,直到客户取消定期订阅。因此,您可以保存并使用该收据进行进一步更新。