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