继续在后台运行代码以向单个用户发送通知
Posted
技术标签:
【中文标题】继续在后台运行代码以向单个用户发送通知【英文标题】:Continue running code in background for Sending Notification to a Single User 【发布时间】:2017-07-02 12:51:03 【问题描述】:我需要在满足某个条件时通知用户,但该条件可能会或可能不会在几个月内满足。我需要在后台运行条件检查(即使应用程序终止),以便我可以检测到条件是否满足(即使它发生在 3 个月后)。如果满足条件,那么我只需要向单个用户(不是所有用户)发送通知。
我不确定最好的方法是什么。本地通知还是推送通知?我无法提前安排本地通知,因为我不知道何时会满足条件。我认为不需要推送通知,因为我在几天/几个月内只向一个用户发送一个通知。
我还需要经常在后台运行此检查。我知道它可以通过使用位置更新(重要的监控或后台导航)在后台无限运行。但我的条件检查代码实际上并不需要位置更新。据我了解,Apple 只允许在后台执行位置更新或网络相关任务(几分钟)。这就是为什么我正在考虑将我的代码放在后台位置更新代码中。
在我看来,我应该使用本地通知并将我的代码放在后台位置更新代码中,以便我可以不断检查是否满足某些条件。此背景检查将安排本地通知并将其显示给使用该设备的用户。我认为不可能通过在后台运行的代码来安排推送通知。
总的来说,我有以下 3 个问题
我应该把我的代码放在后台位置更新中吗?如果不是,那么在没有位置更新的情况下在后台无限运行我的代码的正确方法是什么?
如果我将代码置于后台位置更新中,而位置更新代码实际上并未发送/接收当前位置,Apple 会拒绝申请吗?
在这种几个月后向单个用户发送通知的情况下,我应该使用哪种通知?你会使用本地通知吗?或推送通知。
请回复。任何帮助都非常感谢。
提前致谢。
【问题讨论】:
【参考方案1】:不幸的是,这有点棘手。
Apple 不允许您在后台创建长时间运行的操作。正如您所提到的,您可以在后台添加带有位置更新或音频的代码,但这些都不是很好的解决方案,因为(1)Apple 可能会拒绝您进入应用商店,并且(2)用户可能会关闭应用程序,如果他们注意到手机顶部有一个很大的位置横幅(或奇怪的背景音频信号),关闭应用程序将终止您的操作。对于任何真正长时间运行的任务,最好设置一个服务器并运行一个 cron 作业或等效的长时间运行的操作。这是您知道任务将继续运行的唯一方法。
对不起,我一次只回答一个,但正如我上面提到的,是的,他们可能会拒绝你的代码。根据经验:如果您认为您使用的 Apple 创建的代码不适合您的用途,Apple 可能会拒绝您的应用。
听起来您应该使用远程通知。如果您确实使用远程通知,那么您可能无论如何都需要某种后端。您可以在几个月后使用本地通知来通知用户,但您需要知道提前发送通知的确切时间,这听起来不像。
总结:尝试构建一个简单的 BE。也许使用 Firebase Functions 或其他东西,并构建一个 APNS 系统来发送推送。在应用程序中,告诉服务器开始处理信息并在完成后发回推送。这种情况听起来像是服务器端逻辑的完美用例。
希望有帮助!
【讨论】:
感谢您的回复。是的,我有 Parse Server 移动后端而不是 Firbase。我如何为 Parse Server 做同样的事情?我是否应该创建一个云代码函数来检查服务器端的条件并在满足条件时发送推送通知? 是的,完全正确。 Parse Server 是一个完美的选择。创建云代码并使用 parse 的推送服务。 明白了。非常感谢您的快速响应并解决了我的问题。以上是关于继续在后台运行代码以向单个用户发送通知的主要内容,如果未能解决你的问题,请参考以下文章