我开发了一个多平台应用程序,这是我第一次在app购买订阅中使用apple。现在所有的订阅过程都没问题,但我想在应用程序打开时添加一个检查功能。如果已完成续订,则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开发并不熟悉,我需要更多的帮助...
谢谢你的帮助
要使用户订阅状态保持最新,您需要将购买收据存储在服务器上,并定期使用Apple刷新它以从收据文件中获取最新的到期日期。您可以在续订期间接近时进行刷新,或者更频繁地进行取消/退款。
使用您共享的代码,用户可以更改手机上的系统时间并永久访问您的订阅。您应该根据服务器上的时间进行日期检查。
这是一篇很好的博客文章,更详细地解释了服务器端:iOS Subscriptions are Hard。您还可以查看管理所有这些的their service。 (免责声明:我在那里工作)