我需要在满足某个条件时通知用户,但该条件可能会在几个月内达到或不会达到。我需要在后台运行条件检查(即使应用程序终止),以便我可以检测到条件(即使它发生在3个月后)。如果满足条件,那么我只需要向单个用户(不是所有用户)发送通知。
我不确定这样做的最佳方法是什么。本地通知或推送通知?我不能提前安排本地通知,因为我不知道它何时会满足条件。我认为不需要推送通知,因为我只在几天/几个月内向一个用户发送一个通知。
我还需要在后台不断运行此检查。我知道它可以通过使用位置更新(重要监控或后台导航)在后台无限运行。但我的条件检查代码实际上并不需要位置更新。据我了解,Apple只允许在后台进行位置更新或网络相关任务(几分钟)。这就是为什么我想把我的代码放在后台位置更新代码中。
在我看来,我应该使用本地通知并将我的代码放在后台位置更新代码中,以便我可以不断检查是否满足某些条件。此背景检查将安排本地通知并将其显示给正在使用该设备的用户。我不认为可以通过在后台运行的代码来安排推送通知。
总之,我有以下3个问题
我应该将代码放入后台位置更新吗?如果没有,在没有位置更新的情况下在后台无限运行我的代码的正确方法是什么?
如果我将代码置于后台位置更新,而位置更新代码实际上没有发送/接收当前位置,Apple会拒绝应用吗?
我会在几个月后向单个用户发送通知的情况下使用哪种通知?你会使用本地通知吗?或推送通知。
请回复。真的很感激任何帮助。
提前致谢。
答案 0 :(得分:0)
不幸的是,这是一个棘手的问题。
Apple不允许您在后台创建长时间运行的操作。正如您所提到的,您可以在后台添加位置更新或音频代码,但这些都不是很好的解决方案,因为(1)Apple可能会拒绝您从应用程序商店和(2)用户可能会关闭应用程序他们注意到手机顶部有一个大的位置横幅(或一个奇怪的背景音频信号),关闭应用程序将会导致您的操作无效。对于任何真正长期运行的任务,最好设置服务器并运行cron作业或等效的长时间运行操作。这是您可以知道任务将继续运行的唯一方式。
抱歉,我一次只回答一个,但正如我上面提到的,是的,他们可能会拒绝你的代码。根据经验:如果您认为Apple正在使用的代码不适合您使用它的代码,那么Apple可能会拒绝您的应用。
听起来你应该使用远程通知。如果您确实使用了远程通知,那么您可能还需要某种后端。您可以使用本地通知在几个月后通知用户,但您需要知道预先发送它的确切时间,这听起来不像您。
总结:尝试构建一个简单的BE。也许使用Firebase函数或其他东西,并构建一个APNS系统来发送推送。在应用程序中,告诉服务器开始处理信息并在完成后发送回送。这种情况听起来像服务器端逻辑的完美用例。
希望有所帮助!