ios - 如何在应用程序进入后台时发送本地通知

标签 ios swift timer notifications

我想在我的应用程序进入后台时发送本地通知,通知来自调用网络服务(我们不能使用推送通知,因为我们使用本地服务器并且没有互联网访问权限),我知道后台获取功能我在我的应用程序中打开了它,但我希望另一个计时器每 2 分钟调用一次网络服务,并在应用程序未终止时推送通知,有人有想法吗?

谢谢

最佳答案

不幸的是,从您的服务器推送通知是让后台任务按您决定的时间表进行的唯一方式。

后台获取用于从服务器中提取数据,以便用户在打开应用程序时为用户做好准备,但 iOS 会根据用户使用应用程序的时间来决定何时使用它。

您可以检测应用程序何时进入后台并在必要时安排本地通知,但只有很短的时间来执行代码,然后它会与您尝试运行的任何计时器一起暂停。

您可以通过两种方式检测应用何时进入后台:

  1. 在您的应用委托(delegate)中实现 applicationWillResignActive()UIApplicationDidEnterBackground() 方法。

  2. 注册 UIApplicationDidEnterBackground 通知。

这里是注册通知的例子:

let center = NotificationCenter.default
center.addObserver(self, selector: #selector(yourMethod), name: Notification.Name.UIApplicationDidEnterBackground, object: nil)

您还可以像这样随时检查应用状态:

let state = UIApplication.shared.applicationState
    if state == .background {
        // App is in background
    }
    else if state == .active {
        // App is in foreground
    }

有关 extending background execution time 的更多信息, background app refreshbackground modes .

关于ios - 如何在应用程序进入后台时发送本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52204065/

相关文章:

ios - 如何使用 Core Graphics 在 `drawRect` 中填充一个 unicode 符号?

ios - 如何在 Xcode 8.2 中使用 Swift 3.0 创建和存储包含数据的托管对象

c# - 我如何每 30 秒运行一个脚本?

java - 如何将 Swing 计时器与 JPanel 一起使用

ios - 如何在函数的返回语句中插入 UIImage View ?

ios - 检查字符串是否包含数字

iphone - 如何创建一行 UILabels 的 "container" View ?

ios - swift 2.1 : CAGradientLayer color location & distribution

ios - swift 3 : Displaying Video in Collection View

c# - 等待几秒钟而不阻止 UI 执行