在特定时间和日期调用 iOS 应用程序

Posted

技术标签:

【中文标题】在特定时间和日期调用 iOS 应用程序【英文标题】:Invoke iOS app at specific time and date 【发布时间】:2016-04-11 10:10:09 【问题描述】:

我希望我的 ios 应用知道特定日期和时间何时到达而不会出现任何故障。现在这个时间可以是几天/几周/几个月,我的应用程序可以处于 backgorund 或终止状态。

所以有以下选项: 一种。本地通知——但当我的应用程序在后台时它不会通知。 湾。静默推送通知——它会起作用,但它需要我们为相同的构建服务器。

有没有其他选择可以达到同样的效果?

【问题讨论】:

您可以在特定时间安排本地通知。即使应用程序终止或在后台,它也会通知用户。 没有绝对保证的方法可以实现这一目标。您可以做的最好的事情是在指定时间从服务器静默推送,但设备可能已关闭或没有活动连接。 为什么说应用在后台时本地通知不通知?确实如此,请查看UILocalNotification 类参考。当应用程序不在前台时,用户将收到系统警报/徽章/警报声音(取决于他在首选项中设置的内容)。 @dirkgroten 我试过 UILocalNotificaiton 但它只在用户点击通知消息操作时通知后台应用程序。 啊,您实际上希望应用程序在正确的时间启动。你的问题并不完全清楚。想知道你的用例是什么。无论如何,下面的答案是正确的,除非您是VOIP应用程序,否则无法完成。 【参考方案1】:

你没有办法做到这一点, 您的选择是: 1) 通过使用本地通知,例如在特定时间安排通知,并将该时间和相关活动存储在 userdefaults 中。每当应用程序状态在 appdelegates - (void)applicationDidBecomeActive:(UIApplication *)application 方法中从后台更改为前台时,编写代码来处理所需的功能。

2) 静默推送通知,仅当您的应用处于后台/最小化状态时才有效。一旦你的应用被杀死(从多任务处理中向上滑动),即使是静默推送通知也无法唤醒你的应用。

3) 为克服无声推送通知的限制,Apple 在 iOS8 中引入了 Pushkit Notifications,适用于 whatsapp、Skype 等 voip 应用程序,其中一旦收到推送工具包通知,就会唤醒您的应用程序即使它已终止或未在后台运行。除非您实际使用 voip,否则您不能使用 Pushkit。

【讨论】:

"即使是静默推送通知也无法唤醒您的应用。"是的,他们这样做了,收到静默推送通知的应用程序可以在收到它后执行一些后台活动。但是静默推送的问题是它们的交付时间可能会延迟几个小时。 你是对的@PotassiumPermanganate,但是当应用程序被杀死(正如我提到的那样在多任务处理中向上滑动)或它没有运行/终止时,除了推送工具包通知(没有通知可以唤醒你的应用程序。) 【参考方案2】:

没有。听起来您必须使用推送通知。

如果您的应用被终止,这是唯一可行的方法。

【讨论】:

以上是关于在特定时间和日期调用 iOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何根据ios中的特定键从数组中获取字典

iTunesconnect ios 应用程序在指定日期和时间发布

如何阻止计划的本地通知在特定日期后触发?

从 iOS/Android 上的 Web 应用调用本机日期选择器

如何从 Swift 中特定工作日的日期范围中查找日期?

涉及 NSDocumentDirectory 和其他 iOS App 特定调用的静态库的单元测试