ios - 使用 RMStore 获取应用程序的原始购买日期的正确方法是什么?

标签 ios objective-c cocoa-touch app-store rmstore

我正在发布我的应用程序的更新版本,并且我正在从付费过渡到免费增值。为了给现有用户提供无广告体验,我希望跟踪他们最初购买该应用程序的时间。

我正在查看 RMStore,但我不清楚如何测试从收据中读取原始购买日期。我想出了一些我认为应该可以工作的简单代码,但我没有测试它的好方法。

[[RMStore defaultStore] refreshReceiptOnSuccess:^{

    NSURL *url = [RMStore receiptURL];

    NSData *data = [NSData dataWithContentsOfURL:url];

    RMAppReceipt* r =[[RMAppReceipt alloc] initWithASN1Data:data];

    // Cheap and easy conversion to a float...
    //  IRL do a real comparison with the strings...

    if ([[r originalAppVersion] floatValue] < 2.0)
    {
        //  Do something for early-adopters
    }

} failure:^(NSError *error) {
    // Ruh-roh!
}];

我有两个问题:

  1. 我没有有效的收据。获得一个的程序是什么?我需要一个已经上线的应用程序包 ID 吗?哪里有测试收据?

  2. 如果我想将逻辑基于日期而不是版本号,我可以这样做吗? RMAppReciept 上没有 originalPurchaseDate 属性。 (我确实提交了一个 issue on GitHub 。)

最佳答案

What's the correct way to use RMStore to get the original purchase date of an app?

收据中没有此类信息。不过,您可以获得应用内购买的购买日期。 RMStore 通过 RMAppReceiptIAP 对象帮助您解决这个问题。

To give existing users an ad-free experience, I'm looking to track when they've originally purchased the app.

正如@sergio 所建议的,您可以从应用收据中读取原始应用版本。请记住,收据仅适用于 iOS 7。

I don't have a valid receipt. What's the procedure for getting one? Do I need an app bundle ID that's already live? Are there test receipts somewhere?

沙箱环境中的应用程序将有一个测试收据,但您不能操作它的字段。

作为替代方案,您可以配置 RMAppReceipt 或模拟它来测试您的各种工作流程。

If I want to base the logic on dates instead of version numbers, can I do that? There's no originalPurchaseDate property on RMAppReceipt.

不适用于应用收据,因为在应用级别没有这样的字段。

顺便说一句,避免在启动时刷新收据,因为它往往会显示 Apple ID 密码提示。只有在找不到收据或信息丢失时才刷新。

关于ios - 使用 RMStore 获取应用程序的原始购买日期的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648031/

相关文章:

ios - 如何实现 iOS 9 的 UICollectionView 交互移动功能?

ios - 在本地存储 JSON 数据并在 tableView 中呈现时出现问题

ios - 使用 Xcode 7.0.1 升级 El Capitan 后出现 Alamofire Domain=NSPOSIXErrorDomain Code=2 错误

objective-c - -forwardInvocation 用于类方法

ios - UITableView 数据显示在模拟器中,但不显示在实际设备上

objective-c - iCloud 显示套装有什么用?

objective-c - 对 NSSet 中所有对象的属性求和的快速方法?

ios - CS193P 作业 3,提示#5 - 模型是什么?

ios - 在一个流畅的动画中将 UISCrollView 居中并缩放到 1.0

iOS - 如何关闭键盘?