小编典典

在iOS前台应用程序时获取推送通知

all

我在我的应用程序中使用推送通知服务。当应用程序在后台时,我可以在通知屏幕上看到通知(当我们从 iOS
设备顶部向下滑动时显示的屏幕)。但是如果应用程序在前台,委托方法

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

正在被调用,但通知屏幕中未显示通知。

我想在通知屏幕上显示通知,无论应用程序是在后台还是前台。我厌倦了寻找解决方案。任何帮助是极大的赞赏。


阅读 89

收藏
2022-06-11

共1个答案

小编典典

如果应用程序在前台运行,iOS 将不会显示通知横幅/警报。这是设计使然。但是我们可以通过UILocalNotification如下方式来实现

  • 在收到远程通知时检查应用程序是否处于活动状态。如果处于活动状态,则触发 UILocalNotification。
    if (application.applicationState == UIApplicationStateActive ) {
    
    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    localNotification.userInfo = userInfo;
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    localNotification.alertBody = message;
    localNotification.fireDate = [NSDate date];
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    

    }

迅速:

if application.applicationState == .active {
    var localNotification = UILocalNotification()
    localNotification.userInfo = userInfo
    localNotification.soundName = UILocalNotificationDefaultSoundName
    localNotification.alertBody = message
    localNotification.fireDate = Date()
    UIApplication.shared.scheduleLocalNotification(localNotification)
}
2022-06-11