Why Are Firebase Cloud Messaging (FCM) Notifications Not Retained in Background Mode on iOS?

Susan Sarandon
Release: 2024-10-20 15:22:02
Original
925 people have browsed it

Why Are Firebase Cloud Messaging (FCM) Notifications Not Retained in Background Mode on iOS?

Firebase Cloud Messaging (FCM): Notifications Not Received When App Is in Background Mode on iOS

FCM allows developers to send push notifications to iOS and Android devices. This issue occurs when notifications are not received when the app is in the background.

Possible Causes:

  • Incorrect PHP code for sending notifications.
  • Lack of background mode support in the iOS application.

Solution:

PHP Code:

  • Add the following fields to your PHP payload:

    • 'content_available' => true (to trigger when iOS app is in the background)
    • 'priority' => 'high'
    • 'notification' => $data (replace $data with your desired notification data)
  • Set $data to include both 'message' and 'body' keys with custom values.

iOS Application:

  1. Check if the .gcm file is included in your Xcode project.
  2. Ensure that AppDelegate conforms to GCMReceiverDelegate.
  3. Override the applicationDidBecomeActive and applicationDidEnterBackground methods to (re)connect and disconnect from FCM, respectively.
  4. Register for notifications using UIRemoteNotificationType.
  5. Implement the application:didReceiveRemoteNotification: method to handle received notifications, even when the app is in the background.
  6. If needed, implement the application:didReceiveRemoteNotification:fetchCompletionHandler: method to further handle notifications received in the background.

Updated PHP Code:

<code class="php"><?php

$data = array(
    'message' => 'Hello World!',
    'body' => 'Hello World!'
);

$post = array(
    'registration_ids' => $ids,
    'data' => $data,
    'content_available' => true,
    'priority' => 'high',
    'notification' => $data
);

// ... Remaining code</code>
Copy after login

Updated iOS Application:

<code class="objc">// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, GCMReceiverDelegate>

// AppDelegate.m
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ...
    // Register for remote notifications
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
        UIRemoteNotificationType allNotificationTypes =
        (UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge);
        [application registerForRemoteNotificationTypes:allNotificationTypes];
    } else {
        UIUserNotificationType allNotificationTypes =
        (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
        UIUserNotificationSettings *settings =
        [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    }
    // ...
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [[GCMService sharedInstance] disconnect];
    _connectedToGCM = NO;
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[GCMService sharedInstance] connectWithHandler:^(NSError *error) {
        // ...
    }];
}

// ...</code>
Copy after login

Note:

  • Ensure that you have enabled push notifications for your app in the Apple Developer Portal.
  • Add the push notification certificate in your FCM project settings.

The above is the detailed content of Why Are Firebase Cloud Messaging (FCM) Notifications Not Retained in Background Mode on iOS?. For more information, please follow other related articles on the PHP Chinese website!

source:php
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!