2015-06-19 86 views
2

我正在使用远程通知来唤醒我的应用程序并有条件地触发UILocalNotification。iOS 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

运行设置应用程序并转到您的应用程序页面。检查您的应用的通知设置。 – rmaddy

+0

我已验证应用程序的通知设置已启用。正如我所提到的,当应用程序处于后台时,所有功能都可以正常工作,但不是在我明确关闭它时(通过将其滑开) – Rhinon

回答

1

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

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

为什么这不工作的原因是:

你的代码来显示一个本地通知是不能从远程通知运行后用户已强制关闭应用程序(通过刷卡了)!

你可以找到更多关于这方面的开发者论坛在这里: https://devforums.apple.com/message/873265#873265(DEV账号登录该电源线)

也请记住,如果你从应用切换器杀死你的应用程序(即向上滑动杀该应用程序),然后操作系统将永不重新启动应用程序,无论推送通知或后台提取。在这种情况下,用户必须手动重新启动应用程序一次,然后从该点开始后台活动将被调用。

+0

谢谢,这似乎确实如此。似乎我应该将我的决定点放在向我的Web服务器显示的通知上,以确保可靠的通知。 更多的信息在这里:http:// stackoverflow。COM /问题/ 19068762 /意志IOS推出-MY-APP-到最底,如果-IT-是,强制退出,由这用户 – Rhinon

相关问题