gpt4 book ai didi

ios - 如何确保 iOS 本地通知在*应用程序终止后*得到传递

转载 作者:搜寻专家 更新时间:2023-11-01 07:23:42 24 4
gpt4 key购买 nike

我试图在我的应用程序被终止后发出本地通知,以警告用户无论该应用程序在做什么,它都不能再做了。 MileIQ 在警告用户该应用程序已被终止并且如果他们希望仍记录行程时需要重新启动它时,会执行与后台位置跟踪类似的操作。

我的代码在 UIApplicationWillTerminateNotification 处理程序中看起来像这样:

let notification = UILocalNotification()
notification.soundName = UILocalNotificationDefaultSoundName
notification.alertTitle = "title"
notification.alertBody = "body"
notification.fireDate = NSDate().dateByAddingTimeInterval(6)
UIApplication.sharedApplication().scheduleLocalNotification(notification)

神奇的 fireDate 延迟设置为 6 秒是因为 applicationWillTerminate5 seconds to the app to cleanup , 如果该方法没有及时返回,iOS 会终止该应用。

我注意到,如果我立即触发本地通知,它会出现得非常短暂,并在应用程序被 iOS 终止时消失。通过添加 6 次延迟,通知会出现大约 50% 的时间并且不会被关闭。

我正在寻找的是一种可靠的解决方案,可以在应用被终止后显示此本地通知。知道如何做到这一点吗?

最佳答案

深入挖掘后发现 this comment ,我找到了一种在 UIApplicationWillTerminateNotification 事件后显示本地通知的一致方法:

presentNotification() // see code in original question
sleep(2)

我认为发生的事情是应用程序终止的速度快于它显示本地通知的速度,因此通过调用 sleep(2) 我让应用程序关闭得慢一点以允许显示通知。

当用户手动关闭应用程序时,本地通知现在会一致显示。不太担心 iOS 在没有警告的情况下终止应用程序,所以这对我来说是一个很好的解决方案。

关于ios - 如何确保 iOS 本地通知在*应用程序终止后*得到传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37357770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com