当应用程序在前台运行时收到iOS推送通知
根据我的理解,当应用程序正在运行或在前台并且收到推送通知时,应用程序不应显示任何警报,但应用程序委托将调用didReceiveRemoteNotification
委托方法,我应该在该回调中处理推送通知。
当应用程序在后台时,推送通知应仅显示警报/横幅。
但是,我们的应用程序在应用程序运行时或在某个时间(而不是所有时间)在前台获得推送通知警报。 我想知道它是否是iOS 7中的新function(我从未听说过这个)或是因为我使用UrbanAirship
为我们的iOS应用程序使用用户的alias
进行推送通知。 应用程序将在运行时显示推送警报,并在didReceiveRemoteNotification
运行回调。
抓住我的头。 有谁知道为什么?
当应用程序位于前台时,它不应显示任何内容。
如果您看到alertView,则表示您为其提供了代码。
以下内容:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { UIApplicationState state = [application applicationState]; if (state == UIApplicationStateActive) { //app is in foreground //the push is in your control } else { //app is in background: //iOS is responsible for displaying push alerts, banner etc.. } }
如果您已实现pushNotificationDelegate
[UAPush shared].pushNotificationDelegate = self;
然后覆盖,并将其留空
- (void)displayNotificationAlert:(NSString *)alertMessage { //do nothing }
由于您的代码中配置了Urban Airship的方式,您很可能会看到额外的推送通知。 来自Urban Airship的文档 :
The sample UI includes an implementation of UAPushNotificationDelegate that handles alerts, sounds, and badges. However, if you wish to customize this behavior, you can provide your own implementation:
[UAPush shared].pushNotificationDelegate = customPushDelegate;
有关使用Urban Airship处理推送通知的正确方法的更多信息,请参阅其支持文章 。 由于您使用的是UA,我建议您在前台处理传入的推送通知,而不是在didReceiveRemoteNotification
应用委托方法中实现自己的代码。
希望这有帮助…如果没有,请发布您的代码,以便我们可以破译正在发生的事情。 这确实是非常奇怪的行为!