iOS UILocalNotification 仅在应用未运行时发出声音(无警报)

Posted

技术标签:

【中文标题】iOS UILocalNotification 仅在应用未运行时发出声音(无警报)【英文标题】:iOS UILocalNotification only makes a sound (no alert) when app is not running 【发布时间】:2015-06-19 23:54:02 【问题描述】:

我正在使用远程通知来唤醒我的应用并有条件地触发 UILocalNotification。

我发现如果在应用程序未运行时触发此通知,我得到的只是通知声音(没有警报/通知)。如果应用在后台,它会按预期工作。

在 AppDelegate 中注册远程通知:

let settings = UIUserNotificationSettings(forTypes: (.Badge | .Sound | .Alert), categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()

创建/触发 UILocalNotification(didReceiveRemoteNotification 的结果)

var notification = UILocalNotification()
notification.alertTitle = "My App"
notification.alertBody = "Hello World!"
notification.soundName = UILocalNotificationDefaultSoundName
UIApplication.sharedApplication().presentLocalNotificationNow(notification)

据我从文档中可以看出,当应用程序在后台并且根本不运行时的通知行为应该是相同的..

当系统发送本地通知时,可能会发生多种情况,具体取决于应用状态和通知类型。如果应用程序不在最前面且不可见,则系统会显示警报消息、标记应用程序并播放声音(通知中指定的任何内容)。如果通知是警报并且用户点击操作按钮(或者,如果设备被锁定,则拖动打开操作滑块),应用程序将被唤醒或启动。

来源:UILocalNotification Documentation

非常感谢您深入了解这里发生的事情!

【问题讨论】:

运行设置应用程序并转到您的应用程序的页面。检查您应用的通知设置。 我已验证该应用的通知设置已启用。正如我所提到的,当应用程序在后台时,一切都按预期工作,但当我明确关闭它时(通过滑动它) 【参考方案1】:

问题与本地通知的显示无关。

正如您在问题中所说,您使用远程通知来触发打开您的应用程序,然后运行代码以有条件地显示本地通知。

这不起作用的原因是:

您显示本地通知的代码在用户强制关闭应用(通过向上滑动)后从远程通知运行!

您可以在此处的开发者论坛中找到更多相关信息: https://devforums.apple.com/message/873265#873265(需要登录开发账户)

另外请记住,如果您从应用切换器中终止应用(即向上滑动以终止应用),那么操作系统将无论推送通知还是后台获取都不会重新启动该应用。在这种情况下,用户必须手动重新启动应用程序一次,然后从那时起将调用后台活动。

【讨论】:

谢谢,看来确实如此。看来我应该将我的决定点转移到向我的网络服务器显示什么通知以确保可靠的通知。更多信息在这里:***.com/questions/19068762/…

以上是关于iOS UILocalNotification 仅在应用未运行时发出声音(无警报)的主要内容,如果未能解决你的问题,请参考以下文章

UILocalNotification 最大差异

我可以有自定义 UILocalNotification 重复间隔(即仅工作日?)

如何使用 UILocalNotification 设置振动并且声音不会仅振动 iphone

UILocalNotification.applicationIconBadgeNumber 在 iOS 5 中不起作用!!!

iOS 10 上的 UILocalNotification 会崩溃吗

iOS8 - UILocalNotification,稍后从代码中检查权限