我正在使用远程通知来唤醒我的应用并有条件地触发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
非常感谢洞察这里发生的事情!
答案 0 :(得分:1)
问题与本地通知的显示无关。
正如您在问题中所说,您使用远程通知TRIGGER打开您的应用,然后运行代码以有条件地显示本地通知。
这不起作用的原因是:
用户强制关闭应用后,您的代码显示本地通知 NOT 从远程通知中运行(通过向上滑动)!
您可以在此处的开发者论坛中找到更多相关信息: https://devforums.apple.com/message/873265#873265(开发帐户登录)
另请注意,如果您从应用切换器中删除您的应用(即向上滑动以杀死应用),那么无论推送通知或后台提取,操作系统都永远不会重新启动应用。在这种情况下,用户必须手动重新启动应用程序一次,然后从该点开始,将调用后台活动。