Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Pemberitahuan Firebase Cloud Messaging (FCM) Tidak Dikekalkan dalam Mod Latar Belakang pada iOS?

Mengapa Pemberitahuan Firebase Cloud Messaging (FCM) Tidak Dikekalkan dalam Mod Latar Belakang pada iOS?

Susan Sarandon
Lepaskan: 2024-10-20 15:22:02
asal
1051 orang telah melayarinya

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

Firebase Cloud Messaging (FCM): Pemberitahuan Tidak Diterima Apabila Apl Dalam Mod Latar Belakang pada iOS

FCM membenarkan pembangun menghantar pemberitahuan tolak kepada peranti iOS dan Android. Isu ini berlaku apabila pemberitahuan tidak diterima apabila apl berada di latar belakang.

Punca Kemungkinan:

  • Kod PHP yang salah untuk menghantar pemberitahuan.
  • Kekurangan sokongan mod latar belakang dalam aplikasi iOS.

Penyelesaian:

Kod PHP:

  • Tambahkan medan berikut pada muatan PHP anda:

    • 'content_available' => benar (untuk mencetuskan apabila apl iOS berada di latar belakang)
    • 'keutamaan' => 'tinggi'
    • 'pemberitahuan' => $data (ganti $data dengan data pemberitahuan yang anda inginkan)
  • Tetapkan $data untuk memasukkan kedua-dua kunci 'mesej' dan 'body' dengan nilai tersuai.

Aplikasi iOS:

  1. Semak sama ada fail .gcm disertakan dalam projek Xcode anda.
  2. Pastikan AppDelegate mematuhi GCMReceiverDelegate.
  3. Timpa kaedah applicationDidBecomeActive dan applicationDidEnterBackground untuk (semula)sambung dan putuskan sambungan daripada FCM, masing-masing.
  4. Daftar untuk pemberitahuan menggunakan UIRemoteNotificationType.
  5. Laksanakan aplikasi:didReceiveRemote Notifications to even received notifications: apabila apl berada di latar belakang.
  6. Jika perlu, laksanakan aplikasi:didReceiveRemoteNotification:fetchCompletionHandler: kaedah untuk mengendalikan lebih lanjut pemberitahuan yang diterima di latar belakang.

Kod PHP yang dikemas kini :

<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>
Salin selepas log masuk

Aplikasi iOS yang dikemas kini:

<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>
Salin selepas log masuk

Nota:

  • Pastikan bahawa anda telah mendayakan pemberitahuan tolak untuk apl anda dalam Portal Pembangun Apple.
  • Tambahkan sijil pemberitahuan tolak dalam tetapan projek FCM anda.

Atas ialah kandungan terperinci Mengapa Pemberitahuan Firebase Cloud Messaging (FCM) Tidak Dikekalkan dalam Mod Latar Belakang pada iOS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan