在你的代码中添加以下内容:
// 注意:这段代码只适用于 iOS 设备,不能在模拟器上测试!
// 开始从App Store恢复所有未完成的交易
AppStore.sync()
// 告诉我们,我们正在等待恢复完成
showActivityIndicator()
// 设置一个定时器在恢复交易时停止等待
var timer = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { _ in
hideActivityIndicator()
}
// 监听交易恢复的通知,并在收到通知时更新用户状态
NotificationCenter.default.addObserver(forName: .IAPServiceRestoreSuccessfulNotification, object: nil, queue: OperationQueue.main) { _ in
// 恢复购买成功!更新用户状态...
// 取消定时器
timer.invalidate()
// 隐藏加载程序符号
hideActivityIndicator()
}
// 监听恢复购买失败的通知
NotificationCenter.default.addObserver(forName: .IAPServiceRestoreFailedNotification, object: nil, queue: OperationQueue.main) { _ in
// 恢复购买失败!
// 取消定时器
timer.invalidate()
// 隐藏加载程序符号
hideActivityIndicator()
// 显示错误消息
showAlert()
}
这里假设你使用了自己的 IAPService 类,并将其通知命名为 .IAPServiceRestoreSuccessfulNotification
和 .IAPServiceRestoreFailedNotification
。这些名称可以根据你的代码和需要进行更改。