首页 > 解决方案 > IOS如何查看是否自动续费订阅

问题描述

我开发了一个多平台应用程序,这是我第一次在应用程序购买订阅中使用苹果。目前所有订阅过程都很好,但我想在应用程序打开时添加一个检查功能。如果续订已完成,则 Firebase 日期将更新为新的结束日期,以允许其他平台现在使用它。

我有我的功能:

func userPrivilegeAllowed(){



    if let user = Auth.auth().currentUser{
        // user is connect
        let ref = Database.database().reference()
        let userID = Auth.auth().currentUser?.uid

        ref.child("User_Subscribtion").child(userID!).observeSingleEvent(of: .value) {(snapshot) in
            let value = snapshot.value as? NSDictionary

            let expStringDate = value?["Expiry_Date"] as? String ?? "01/01/01"

            self.dateFormatter.dateStyle = DateFormatter.Style.short
            self.dateFormatter.dateFormat = "dd/MM/yy"
            let expiryDate = self.dateFormatter.date(from: expStringDate) ?? self.dateFormatter.date(from: "01/01/1990")

            self.today.dateStyle = DateFormatter.Style.short
            self.today.dateFormat = "dd/MM/yy"

            var dayBeforeExpiry = Calendar.current.dateComponents([.month, .day, .year], from: self.curentDate, to: expiryDate!)

            if dayBeforeExpiry.year! == 0 && dayBeforeExpiry.month! == 0 && dayBeforeExpiry.day! <= 0{

                self.StartBtn.isHidden = true
                self.StopBtn.isHidden = true
                self.unpaidBtn.isHidden = false

            } else if dayBeforeExpiry.year! == 0 && dayBeforeExpiry.month! == 0 && dayBeforeExpiry.day! <= 7{
                self.unpaidBtn.isHidden = true
                self.WarningSubscription.isHidden = false
            } else if dayBeforeExpiry.year! == 0 && dayBeforeExpiry.month! == 0 && dayBeforeExpiry.day! == 1{
                //Add Check if Apple payement is OK or Not !

            }

        }

    }
}

如何获取新的结束日期以更新或不更新数据库并允许或不允许用户使用该应用程序?

我现在在互联网上已经有一些关于这个问题的信息,但我对 IOS 开发并不是很熟悉,我需要更多帮助......

谢谢你的帮助

标签: iosswiftin-app-purchasesubscription

解决方案


为了使用户的订阅状态保持最新,您需要将购买收据存储在您的服务器上,并定期使用 Apple 刷新它以从收据文件中获取最新的到期日期。您可以在续订期临近时进行刷新,或者更频繁地进行取消/退款。

使用您共享的代码,用户可以更改手机上的系统时间并永久访问您的订阅。您应该根据服务器上的时间进行日期检查。

这是一篇很好的博客文章,它更详细地解释了服务器端:iOS 订阅很困难。您还可以查看他们为您管理所有这些的服务。(免责声明:我在那里工作)


推荐阅读