首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取苹果订阅中`SKProduct`的时长

获取苹果订阅中`SKProduct`的时长
EN

Stack Overflow用户
提问于 2020-08-04 21:58:58
回答 1查看 135关注 0票数 1

我的应用程序的后端需要两件事以及收据验证,以确保用户可以访问订阅。一个subscriptionStartTimestamp和一个subscriptionDuration。我想知道SKProduct是否提供了类似的东西,我偶然发现了SKProduct.subscriptionPeriod,它包含一个numberOfUnits和一个unit。这个单元可以是daymonth或其他东西。

然后,我突然想到了另一个问题:“苹果总是认为一个月30天吗?”,“闰年呢?”如何找到SKProductsubscriptionDuration

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 21:58:58

我找到this了。

根据上面提到的答案,我设计了一个函数,它接受一个SKProduct并返回订阅的持续时间。

代码语言:javascript
复制
private func subscriptionDuration(product: SKProduct) -> TimeInterval {

    let currentDate = Date()
        
    guard let subscriptionPeriod = product.subscriptionPeriod else {
        return 0
    }
    
    let numberOfUnits = subscriptionPeriod.numberOfUnits
    let unit = subscriptionPeriod.unit
    
    var calendarComponent: Calendar.Component? = nil
    
    switch unit {
        
    case .day:
        calendarComponent = .day
        
    case .month:
        calendarComponent = .month
        
    case .week:
        calendarComponent = .weekOfYear
        
    case .year:
        calendarComponent = .year
        
    default:
        break
        
    }
    
    guard let component = calendarComponent else {
        return 0
    }
    
    let calendar = Calendar(identifier: .iso8601)
    
    guard let newDate = calendar.date(byAdding: component, value: numberOfUnits, to: currentDate) else {
        return 0
    }
    
    return newDate.timeIntervalSince1970 - currentDate.timeIntervalSince1970
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63248523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档