Android 每月向Firebase订阅
我想为我的应用程序实施每月订阅,但我不知道哪种方法是正确的 这是我的结构:Android 每月向Firebase订阅,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想为我的应用程序实施每月订阅,但我不知道哪种方法是正确的 这是我的结构: groups -groupId - premium:true/false - owner: userId 这应该是流程: 用户可以购买为期1个月的订阅,这将使其选择的groupId/premium=true 在一个月+宽限期后,如果用户尚未支付其订阅费,则groupId/premium应更改为false 起初,我想我可以在android设备上检查他的订阅是否有效,然后相应地更新数据。但是,如果用户从未
groups
-groupId
- premium:true/false
- owner: userId
这应该是流程:
- groupSubscriptions
- groupId
- ownerToken: token
- expireDate: timestamp
然后根据expireDate查询它,抓取ownerToken,检查他们是否支付了IAP
这是解决我问题的正确方法吗?我是不是想得太多了?有没有可能不用服务器 我不确定你的应用程序的高级操作是什么。但可以说,这有点像能够读取特定的数据。在这种情况下,您可以在安全规则中对订阅过期进行建模 首先,在数据库中的安全位置对过期时间戳进行建模:
- userSubscriptions
- userId
- expireDate: timestamp
然后,您将有一个数据读取规则,该规则要求订阅检查订阅是否已过期:
".read":
"root.child('userSubscriptions').child(auth.uid).child('expireDate').val() > now"
在本例中,我使用了一个
uid
,但同样的逻辑也适用于组。我不确定你的应用程序的高级操作是什么。但可以说,这有点像能够读取特定的数据。在这种情况下,您可以在安全规则中对订阅过期进行建模
首先,在数据库中的安全位置对过期时间戳进行建模:
- userSubscriptions
- userId
- expireDate: timestamp
然后,您将有一个数据读取规则,该规则要求订阅检查订阅是否已过期:
".read":
"root.child('userSubscriptions').child(auth.uid).child('expireDate').val() > now"
在本例中,我使用了一个
uid
,但同样的逻辑也适用于组。这听起来像是一个很好的解决方案,可以在订阅到期后保护高级选项不被使用。但是一旦firebase数据库过期,对其进行更改又如何呢?因为如果不是这样的话,集团状态仍然会说它处于高级模式,即使它不是,用户可能会感到困惑。我想这可能就是谷歌实时开发者通知的目的,但我自己还没有实现。除了cron作业之外,您还找到了解决方案吗?这听起来像是一个很好的解决方案,可以保护高级选项在订阅到期后不被使用。但是一旦firebase数据库过期,对其进行更改又如何呢?因为如果不是这样的话,集团状态仍然会说它处于高级模式,即使它不是,用户可能会感到困惑。我想这可能就是谷歌实时开发者通知的目的,但我自己还没有实现。除了cron工作之外,您是否找到了解决方案?