【问题标题】:Setting daily local notifications when app is killed当应用程序被杀死时设置每日本地通知
【发布时间】:2017-02-08 15:35:50
【问题描述】:

我正在制作一个向用户发送每日通知的“健康”应用。每天的通知数量取决于当天(例如第一次使用后的第 2 天),“健康”锻炼持续时间也取决于当天(我在那之后发送另一个通知以通知用户锻炼结束)。

知道我们不能计划超过 64 个通知,我尝试了以下方法:1. 当用户选择其应用程序参数时设置当天和第二天的通知,然后 2. 每天使用后台获取编程第二天通知(没有不管多久一次,只要每天至少一次)。

但是,如果用户从多任务列表中终止应用程序,则不会执行后台提取。

是否可以在不强迫用户打开应用程序的情况下计划我的“第二天”通知?这个想法是用户可以关注程序,而不必每天左右打开应用程序。

我已经看到静默推送通知(是否允许运行代码而无需打开应用程序?)或 pushkit 可以解决问题,但我的应用程序不是 VoIP 应用程序,因此可能会被拒绝...

有没有人能解决这个问题?

非常感谢您的回答。

【问题讨论】:

标签: ios swift notifications kill background-fetch


【解决方案1】:

您不需要 VoIP 来发送静默推送通知。 VoIP 应用程序确实有静默推送,并且它们比常规静默推送“优越”,因为即使用户已经杀死了应用程序,它们也会传递给应用程序,而常规静默推送则不是这样。

静默推送的缺点是在以下几种情况下不会发送到应用程序: - 用户可以禁用它们 - 用户已终止应用 - 发送推送时有一个很长的活动电话 - 设备可能离线 - 等等等等。

因此,静默推送不能用于确保您的应用每天都在运行。

在您的情况下,由于最终是被通知的用户,服务器是否可以向他们发送用户定向推送?我的意思是服务器是否有可用的信息来知道要在通知内容中添加什么? (即使用户终止了应用程序,用户定向推送仍会传递给用户)。

如果服务器没有这些信息,那么需要考虑的另一件事是推送扩展。 推送扩展可以拦截用户导向的推送,并在向用户显示之前更改/更新其内容。这样,即使应用程序已终止,您也可以确保每天向用户显示推送通知(尽管仍然受制于用户可以禁用应用程序通知的事实)。 但这可能很棘手,因为推送扩展不是应用程序的完整部分,它是独立的,但如果应用程序和扩展程序存储在一个组中,则可以共享底层数据。

所以你的服务器每天都可以发送一个用户控制的推送,这会被你的扩展拦截,你的扩展运行并确定推送的内容应该是什么,然后将推送显示给用户。

这些是一些选项,不能说哪个适合你,因为只有你知道你的要求的确切细节。

【讨论】:

  • 感谢@Gruntcakes 非常清楚的回答。内容非常简单,因此服务器可能拥有信息。在这种情况下,服务器还需要获取自用户进入健康程序以来的天数信息,以在正确的时间/正确的次数安排推送通知。我要试试! Apple 不允许像在带有警报的 Android 上那样每天运行一次代码,这真是太糟糕了……
【解决方案2】:

有没有办法在不强迫用户打开应用程序的情况下计划我的“第二天”通知

不以某种方式让用户参与。如果您可以确定用户每天至少点击通知提醒,则您的应用可以被召唤(不一定在前台)并且可以运行代码作为响应。

否则,唯一尝试确保您的应用程序每天运行的方法是推送通知(因为冲动来自您的服务器,它一直在运行)。当然,即使这样也不是 100% 确定的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多