• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何了解我是否已经为应用内购买付款

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:03:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在制作一个应用,其中有书籍,书籍有音频和视频服务。

客户希望应用内购买。

以下是应用内的工作方式。

如果用户想购买这本书,用户将购买这本书,一旦交易完成,将自动下载 zip 文件(从我为书添加图像、视频、音频的服务器)。

一旦我有 zip,我会在下载完成后解压缩它。

对我来说,问题是如何确定用户 xyz 之前是否购买过这本书。

例如今天用户 A 为图书 B 付款。如何获取用户 A 购买图书的信息?

如果我有用户注册系统,我可以通过我的系统的用户 ID 来识别用户。

有人说,把书的 id 保存在 NSUserDefaults 中,但担心如果我删除应用并重新安装,我应该免费下载书 B。

我只是想知道,我怎样才能跟踪哪个用户下载了哪本书。

我正在为 iOS 6 和 7 制作应用程序



Best Answer-推荐答案


编辑:

您的应用通过调用 SKPaymentQueue 的 restoreCompletedTransactions 方法来启动该流程。这会向 App Store 发送一个请求,以恢复您应用的所有已完成交易。如果您的应用为其支付请求的 applicationUsername 属性设置了一个值,如“检测不规则事件”中所述,请使用 restoreCompletedTransactionsWithApplicationUsername: 方法在恢复交易时提供相同的信息。 App Store 会为之前完成的每笔交易生成一个新交易。恢复的交易具有对原始交易的引用:SKPaymentTransaction 的实例具有 originalTransaction 属性,并且收据中的条目具有 Original Transaction Identifier 字段。 您的事务队列观察器被调用,状态为 SKPaymentTransactionStateRestored ,用于每个恢复的事务,如“等待 App Store 处理事务”中所述。您此时采取的操作取决于您应用的设计。

  • 如果您的应用使用应用收据并且没有 Apple 托管 内容,不需要此代码,因为您的应用无法恢复 已完成的交易。立即完成所有恢复的交易。
  • 如果您的应用使用应用收据并包含 Apple 托管的内容,请让 用户在开始之前选择要恢复的产品 恢复过程。在恢复过程中,重新下载 用户选择的内容并立即完成任何其他交易

.

NSMutableArray *productIDsToRestore = <# From the user #>;
SKPaymentTransaction *transaction = <# Current transaction #>;

if ([productIDsToRestore containsObject:transaction.transactionIdentifier]) {
    // Re-download the Apple-hosted content, then finish the transaction
    // and remove the product identifier from the array of product IDs.
} else {
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}

Source

关于ios - 如何了解我是否已经为应用内购买付款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730534/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap