使用Firebase每月订阅

时间:2017-06-14 20:26:04

标签: android firebase firebase-realtime-database

我想为我的应用实现每月订阅服务,但我不知道哪种方法是正确的。

这是我的结构:

groups
 -groupId
    - premium:true/false
    - owner: userId

这应该是流程:

  1. 用户可以购买1个月的订阅,这将使他选择的groupId / premium = true。

  2. 在一个月+宽限期后,如果用户尚未支付订阅费用,则groupId / premium应更改为false。

  3. 起初我以为我可以在Android设备上检查他的订阅是否有效,或者如果不是,并相应地更新数据。但是如果用户从未打开他的应用程序会发生什么?然后,我无法检查,他的团队保持优质,直到他打开应用程序?我无法做到这一点,因为有其他用户与该群组相关联,然后他们会获得免费订阅。

    因此,我必须使用在appengine服务器上运行的每日cron作业执行此操作,该服务器每天都会检查哪些订阅到达其结束时间,然后检查用户是否已为其付费,并更新相应的数据库?

    这意味着像这样向数据库添加更多节点。

    - groupSubscriptions
      - groupId
        - ownerToken: token
        - expireDate: timestamp
    

    然后根据expireDate查询它,抓住ownerToken,并检查他们是否已支付IAP费用。

    这是解决问题的正确方法吗?我是否想过这个?没有服务器可以吗?

1 个答案:

答案 0 :(得分:1)

我不确定您的应用的优质操作是什么。但要说它能够读取特定的数据。在这种情况下,您可以在安全规则中对订阅到期进行建模。

首先,您要在数据库中的安全位置建模到期时间戳:

- userSubscriptions
  - userId
    - expireDate: timestamp

然后,您对需要订阅的数据有一个读取规则,该订阅会检查订阅是否已过期:

".read": 
  "root.child('userSubscriptions').child(auth.uid).child('expireDate').val() > now"

我在此示例中使用了uid,但相同的逻辑可以应用于组。