后台运行的应用程序发送本地通知

Posted

技术标签:

【中文标题】后台运行的应用程序发送本地通知【英文标题】:App running in the background send local notifications 【发布时间】:2018-12-03 11:02:28 【问题描述】:

如何在应用程序在后台运行时发送本地通知?在 Swift 4 中。我的应用程序持续使用 Json 文件,我希望应用程序继续运行,以便向用户发送本地通知。我想要一个 if label = label2 在后台,用户的应用推送通知。

 label.text = myString
    if label.text! == label2.text! 

            let content = UNMutableNotificationContent()
            content.title = "\(label2.text!)Değeri Kaydedildi!"
            content.body = "Değer döndüğünde haber verilecek."
            content.sound = UNNotificationSound.default()

            let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false)

            let request = UNNotificationRequest.init(identifier: "deneme", content: content, trigger: trigger)

            UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

        

【问题讨论】:

关注这个帖子:***.com/a/53557313/3420996 对于可能遇到此问题的其他任何人..您不应该在后台进行 UI 工作。您的应用程序在后台运行后只会运行很短的时间,然后将被暂停。这意味着此代码将不会运行。您可以使用远程、静默通知来触发更新或后台获取,然后根据数据发送通知......而不是 UI 【参考方案1】:

在AppDelegate中,尝试查找函数didReceiveRemoteNotification

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 

    #if DEBUG
    print("Get User Info fetchCompletionHandler \(userInfo)")
    #endif

    // Your notification is in userInfo, you should cast it first before you show it
    // Do what you want

    completionHandler(.newData)

【讨论】:

这是用于远程推送通知而不是本地通知。

以上是关于后台运行的应用程序发送本地通知的主要内容,如果未能解决你的问题,请参考以下文章

如何离线发送通知,而不是本地通知?

如何在 iOS 后台运行服务以接收本地通知?

在后台模式下运行函数的替代方法

Flutter 本地通知 - 当应用程序在后台运行时,ZonedSchedule 通知不起作用

背景中的信标范围

应用终止后发送本地通知