我正在创建一个应用,用户可以在其中制作包含在tableview中的帖子,但我希望在10分钟后删除这些帖子。所有用户都可以看到10分钟的倒计时。
我找到了这个来源:Delete NSTimer/UITableViewCell in real time?
他们似乎正在设置帖子过期的日期,设置一些计时器以倒计时,如果该时间段为0,则删除帖子并删除firebase上的引用。
如果用户杀死应用程序,这不会完全崩溃和刻录吗?因此,例如,用户发帖,将其发布到firebase,将其发送出去,用户杀死应用程序,这些计时器停止,帖子永远停留。当然每个用户都需要为发送给他们的每个帖子运行一个计时器,但是谁负责在firebase上删除该引用呢?
我的问题是在哪里/如何跟踪这些计时器的最佳位置?我不知道是否有一些可以在这里使用的firebase来使它更干净。我知道如何使用计时器以及如何使用计时器删除帖子,但我只是不确定如何构建这一点。
答案 0 :(得分:1)
使用任何类型的CLIENT应用解决方案都没有真正正确且100%可靠/强大的方法来清理它。您需要一个后端进程来处理这个问题。如果您不想处理维护自己的服务器,这是一种可能的解决方案。
您可以使用Google App Engine并编写一个运行脚本的后端,每隔X小时就可以清除旧条目(请注意时间戳中的TZ,确保一切都一致)。根据您是否认为将来有其他处理需求,可能非常值得这样做。
为此,您需要一个完整的Google App Engine(Google Cloud)帐户,并且可能需要更高的按使用付费价格,但处理运行自己的服务器可能会更加昂贵。
有关详细方法,请参阅此处:https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio
从那里你应该看看他们已经完成的漂亮的设计选项图,可视化你的客户端应用+ firebase + app引擎如何协同工作。 https://cloud.google.com/solutions/mobile/mobile-app-backend-services 强>
BTW谷歌上传了一些新的教程(codelabs),取代了一个月前左右的所有firebase的旧文档。所以我怀疑他们很快就会添加一个带有app引擎集成的codelab(我还无法找到)。在此期间,您可以看到我上面粘贴的那个,它来自谷歌的官方云站点。
答案 1 :(得分:0)
如果您的应用程序被终止,那么计时器会被杀死是对的。如果您的应用暂停,它们也会被暂停。几乎每当用户切换到另一个应用程序并在那里停留超过几秒钟时,这种方法将无效。
您可以将过期日期数组保存到用户默认值,并且无论何时启动应用程序/返回到前台,您都可以检查过期日期数组。如果过期日期已过,您将从Firebase中删除该帖子。 (实际上你可能会保存一组字典,其中一个键是日期,另一个键是记录ID,所以你可以找到记录。)
您还可以使用条目的过期日期作为通知的开火日期来创建本地通知。如果您的应用程序正在运行,它将在后台收到通知,您可以触发删除。如果不是,它会向用户显示消息,如果用户要求打开应用程序,您可以检查您的过期日期数组。
答案 2 :(得分:0)
您不应该依赖客户端应用删除帖子。正如你所说,杀死应用程序会导致服务器损坏。
更好的解决方案是创建具有有效日期的帖子,并在您的应用中仅显示有效帖子。 要更新UI,您可以设置计时器,以便在达到有效日期时触发。