You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Mac App Store应用的首次下载日期?解决现有方法的问题

获取Mac App Store应用的首次下载/购买日期

你之前用Documents文件夹创建日期的方法不可靠,因为该文件夹属于应用沙盒内容,用户删除后重新生成时,创建日期会被更新,无法反映真实的首次下载时间。

正确的方案是读取App Store收据中的original_purchase_date字段,这个字段记录的是Apple服务器上的首次购买/下载日期,不受用户删除应用文件、重装操作的影响,完全与账号绑定。

实现代码(Swift 5+)

import Foundation

func getOriginalPurchaseDate() -> Date? {
    // 获取App Store收据的本地路径
    guard let receiptURL = Bundle.main.appStoreReceiptURL,
          FileManager.default.fileExists(atPath: receiptURL.path) else {
        // 收据不存在:可能应用非App Store下载,或用户禁用了收据功能
        return nil
    }
    
    do {
        // 读取收据数据并解析为plist字典
        let receiptData = try Data(contentsOf: receiptURL)
        guard let receiptDict = try PropertyListSerialization.propertyList(from: receiptData, options: [], format: nil) as? [String: Any] else {
            return nil
        }
        
        // 提取首次购买日期字符串
        guard let originalPurchaseDateStr = receiptDict["original_purchase_date"] as? String else {
            return nil
        }
        
        // 按照Apple收据的固定日期格式解析
        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss VV"
        
        return dateFormatter.date(from: originalPurchaseDateStr)
    } catch {
        print("解析收据失败: \(error.localizedDescription)")
        return nil
    }
}

// 使用示例
if let purchaseDate = getOriginalPurchaseDate() {
    // 格式化显示日期
    let displayFormatter = DateFormatter()
    displayFormatter.dateStyle = .long
    displayFormatter.timeStyle = .long
    print("应用首次购买日期: \(displayFormatter.string(from: purchaseDate))")
} else {
    print("无法获取首次购买日期")
}

关键说明

  • 可靠性:original_purchase_date是Apple官方记录的首次购买时间,无论用户重装应用、删除沙盒文件,只要使用同一购买账号,该日期不会改变。
  • 适用范围:仅对从Mac App Store下载的应用有效,企业分发或其他非App Store渠道的应用没有此收据。
  • 异常处理:需处理收据不存在的情况,比如用户未通过App Store安装应用,或系统禁用了收据存储。

内容的提问来源于stack exchange,提问作者spogra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:01:08