如何获得 iOS 11.2 以下的应用内购买订阅期?

Posted

技术标签:

【中文标题】如何获得 iOS 11.2 以下的应用内购买订阅期?【英文标题】:How can I get in-app purchase subscription period below iOS 11.2? 【发布时间】:2021-07-06 01:47:44 【问题描述】:

我是应用内购买的新手。如何获得低于 ios 11.2 的订阅时间?正如我所见,它可以从 SKProduct 类的 iOS 11.2 中获得。 我的代码是这样的:

var durationNumberString: String? 
    if #available(iOS 11.2, *) 
        guard let nu = product.subscriptionPeriod?.numberOfUnits else  return nil 
        return "\(nu)"
     else 
        return nil
    


var durationUnitString: String? 
    if #available(iOS 11.2, *) 
        guard let unit = product.subscriptionPeriod?.unit else  return nil 
        
        switch unit 
        case .day:
            return "day"
        case .week:
            return "weak"
        case .month:
            return "month"
        case .year:
            return "year"
        @unknown default:
            return ""
        
     else 
        return nil
    

我也想在 iOS 11.2 以下提供 durationNumberStringdurationUnitString 值。

【问题讨论】:

请先展示你的代码和你的努力。阅读 *** 规则。顺便说一句,你可以看看这个。 appcoda.com/in-app-purchases-guide 【参考方案1】:

我找到了解决方案。在 iOS 11.2 之前,我可以使用产品标识符通过硬编码获得 durationNumberStringdurationUnitString

var durationNumberString: String? 
    if #available(iOS 11.2, *) 
        guard let nu = product.subscriptionPeriod?.numberOfUnits else  return nil 
        return "\(nu)"
     else 
        switch product.productIdentifier 
        case "id_199_month":
            return "1"
        case "id_499_3month":
            return "3"
        case "id_2099_annual":
            return "1"
        default:
            return nil
        
    


var durationUnitString: String? 
    if #available(iOS 11.2, *) 
        guard let unit = product.subscriptionPeriod?.unit else  return nil 
        
        switch unit 
        case .day:
            return "day"
        case .week:
            return "weak"
        case .month:
            return "month"
        case .year:
            return "year"
        @unknown default:
            return ""
        
     else 
        switch product.productIdentifier 
        case "id_499_3month",
             "id_199_month":
            return "month"
        case "id_2099_annual":
            return "year"
        default:
            return nil
        
    

【讨论】:

以上是关于如何获得 iOS 11.2 以下的应用内购买订阅期?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复在生产中失败的应用内购买?

如何在 Flutter 中实现应用内购买订阅?

Android 应用内计费版本 3 获得过期订阅

Apple 订阅或应用内购买在商店版本中不起作用 - 应用内产品详细信息未显示或获取

iPhone - 如何检索应用内购买的自动续订订阅的持续时间

iOS:我如何确定用户是不是仍有资格免费试用应用内购买订阅?