ios - 收据验证失败时最好的方法是什么?

标签 ios in-app-purchase storekit

<分区>

当 OSX 上的收据验证失败时,我指的是应用程序收据,Apple 表示以代码 173 退出,这将强制加载 iTunes 并从 Apple 下载收据。如果由于某种原因收据失败(用户取消 iTunes 密码请求、用户没有互联网等),应用程序将不会加载。

但对于 iOS 来说,情况就不同了。没有 exit(173)。 iOS 的最佳方法是什么?当应用程序加载时,它会尝试验证收据,收据不存在,然后我们使用请求新的收据

SKReceiptRefreshRequest *refreshReceiptRequest = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:@{}];

现在呢?有两种情况:请求失败(没有网络,没有收据等)或者请求成功,有收据但收据无效(可能是某种盗版企图(?))。开发者应该怎么做,退出应用?

如果应用内购买的验证失败并且商品是非消耗品,您只需禁用该商品,直到您可以验证或用户进行恢复购买,但如果应用收据验证失败,您正在谈论整个应用程序。

最好的方法是什么?

最佳答案

来自Apple Receipt Validation Programming Guide -

Refresh the Receipt If Validation Fails in iOS

If validation fails in iOS, use the SKReceiptRefreshRequest class to refresh the receipt.

Do not try to terminate the app. At your option, you may give the user a grace period or restrict functionality inside your app.

所以它没有确切说明您应该做什么,但看起来您可以显示消息和/或禁用功能 - 我猜这可能包括不提供任何功能 - 禁用所有用户界面元素

关于ios - 收据验证失败时最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23962594/

相关文章:

ios - 应用内购买 - 可用产品没有 localizedTitle、localizedDescription

iOS 应用程序每次启动时都要求输入密码

ios - 降级应用内级别返回错误

iOS IAP - 如何区分 "restoring done, but not purchased before"状态

ios - 如何在uitextfield中设置文本的有限宽度

ios - 用于 GoogleMaps 的 ionic 构建 ios - 命令的错误代码 65

ios - 在 IOS 中创建事件时,日历事件添加了多次

带有额外信息的 Android 应用内购买

android - 当用户使用其他帐户登录时,如何防止激活应用内订阅?

ios - 决定使用核心数据或 NSUserDefaults