1. ホーム
  2. iphone

[解決済み】アプリをフォアグラウンドにした状態でプッシュ通知を受ける iOS

2022-04-08 06:26:29

質問

アプリでプッシュ通知サービスを利用しています。アプリがバックグラウンドにあるとき、通知画面(iOSデバイスの上部から下にスワイプしたときに表示される画面)で通知を確認することができます。しかし、アプリがフォアグラウンドにある場合、デリゲートメソッド

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

が呼び出されるのですが、通知画面に通知が表示されません。

アプリがバックグラウンドかフォアグラウンドかに関係なく、通知画面に通知を表示したいです。解決策を探すのに疲れました。何かお手伝いいただけると助かります。

解決方法を教えてください。

アプリケーションがフォアグラウンドで動作している場合、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];
    }
    
    

SWIFTです。

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