Apple platformlarında Firebase Cloud Messaging istemci uygulaması kurun

Apple istemci uygulamaları için, Firebase Cloud Messaging APNs arayüzü üzerinden 4000 bayta kadar bildirim ve veri yükleri alabilirsiniz.

İstemci kodunuzu Objective-C veya Swift'de yazmak için FIRMessaging API'sini kullanmanızı öneririz. Hızlı başlangıç ​​örneği her iki dil için de örnek kod sağlar.

Firebase Cloud Messaging'de yöntem değiştirme

FCM SDK, yöntem değiştirmeyi iki temel alanda gerçekleştirir: APN belirtecinizi FCM kayıt belirteciyle eşlemek ve aşağı akış mesajı geri arama işlemi sırasında analiz verilerini yakalamak. Swizzling'i kullanmamayı tercih eden geliştiriciler, uygulamanın Info.plist dosyasına FirebaseAppDelegateProxyEnabled işaretini ekleyip bunu HAYIR (boolean değeri) olarak ayarlayarak bunu devre dışı bırakabilir. Kılavuzların ilgili alanlarında, yöntem kaydırmanın etkin olduğu ve olmadığı kod örnekleri sağlanır.

Firebase'i Apple projenize ekleyin

Henüz yapmadıysanız Firebase'i Apple projenize ekleyin .

APN kimlik doğrulama anahtarınızı yükleyin

APN kimlik doğrulama anahtarınızı Firebase'e yükleyin. Henüz bir APN kimlik doğrulama anahtarınız yoksa Apple Geliştirici Üye Merkezi'nde bir tane oluşturduğunuzdan emin olun.

  1. Firebase konsolundaki projenizin içinde dişli simgesini seçin, Proje Ayarları'nı ve ardından Bulut Mesajlaşma sekmesini seçin.

  2. iOS uygulama yapılandırması altındaki APN kimlik doğrulama anahtarında Yükle düğmesini tıklayın.

  3. Anahtarınızı kaydettiğiniz konuma göz atın, onu seçin ve Aç'ı tıklayın. Anahtarın anahtar kimliğini ekleyin ( Apple Geliştirici Üye Merkezi'nde mevcuttur) ve Yükle'yi tıklayın.

Uzaktan bildirimler için kaydolun

Başlangıçta veya uygulama akışınızın istediğiniz noktasında uygulamanızı uzaktan bildirimler için kaydedin. registerForRemoteNotifications gösterildiği gibi çağırın:

Süratli


UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

Amaç-C


[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

Kayıt belirtecine erişme

Varsayılan olarak FCM SDK, uygulama başlatıldığında istemci uygulaması örneği için bir kayıt belirteci oluşturur. APN'lerin cihaz belirtecine benzer şekilde, bu belirteç, uygulamanızın herhangi bir belirli örneğine hedefli bildirimler göndermenize olanak tanır.

Apple platformlarının genellikle uygulama başlangıcında bir APNs cihaz jetonu sağlaması gibi, FCM de FIRMessagingDelegate messaging:didReceiveRegistrationToken: yöntemi aracılığıyla bir kayıt jetonu sağlar. FCM SDK, uygulamanın ilk başlatılması sırasında ve belirteç her güncellendiğinde veya geçersiz kılındığında yeni veya mevcut bir belirteci alır. Her durumda FCM SDK, geçerli bir messaging:didReceiveRegistrationToken: öğesini çağırır.

Kayıt jetonu şu durumlarda değişebilir:

  • Uygulama yeni bir cihaza geri yüklenir
  • Kullanıcı uygulamayı kaldırır/yeniden yükler
  • Kullanıcı uygulama verilerini temizler.

Mesajlaşma temsilcisini ayarlayın

Kayıt belirteçlerini almak için, mesajlaşma delege protokolünü uygulayın ve [FIRApp configure] çağrıldıktan sonra FIRMessaging delegate özelliğini ayarlayın. Örneğin, uygulama temsilciniz mesajlaşma temsilcisi protokolüne uyuyorsa, application:didFinishLaunchingWithOptions: üzerindeki temsilciyi kendisine ayarlayabilirsiniz.

Süratli

Messaging.messaging().delegate = self

Amaç-C

[FIRMessaging messaging].delegate = self;

Geçerli kayıt jetonu getiriliyor

Kayıt belirteçleri, messaging:didReceiveRegistrationToken: yöntemi aracılığıyla teslim edilir. Bu yöntem genellikle kayıt jetonuyla uygulama başına bir kez çağrılır. Bu yöntem çağrıldığında aşağıdakiler için ideal zamandır:

  • Kayıt jetonu yeniyse uygulama sunucunuza gönderin.
  • Konulara kayıt belirtecine abone olun. Bu yalnızca yeni abonelikler için veya kullanıcının uygulamayı yeniden yüklediği durumlar için gereklidir.

Belirteci doğrudan token(completion:) kullanarak alabilirsiniz. Belirteç alımı herhangi bir şekilde başarısız olursa boş olmayan bir hata sağlanır.

Süratli

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

Amaç-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

Belirteci saklamak yerine erişmek için bu yöntemi istediğiniz zaman kullanabilirsiniz.

Belirteç yenilemeyi izleyin

Belirteç her güncellendiğinde bilgilendirilmek için mesajlaşma temsilci protokolüne uygun bir temsilci sağlayın. Aşağıdaki örnek, temsilciyi kaydeder ve uygun temsilci yöntemini ekler:

Süratli

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  print("Firebase registration token: \(String(describing: fcmToken))")

  let dataDict: [String: String] = ["token": fcmToken ?? ""]
  NotificationCenter.default.post(
    name: Notification.Name("FCMToken"),
    object: nil,
    userInfo: dataDict
  )
  // TODO: If necessary send token to application server.
  // Note: This callback is fired at each app startup and whenever a new token is generated.
}

Amaç-C

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
    NSLog(@"FCM registration token: %@", fcmToken);
    // Notify about received token.
    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];
    [[NSNotificationCenter defaultCenter] postNotificationName:
     @"FCMToken" object:nil userInfo:dataDict];
    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}

Alternatif olarak, bir temsilci yöntemi sağlamak yerine kFIRMessagingRegistrationTokenRefreshNotification adlı NSNotification dinleyebilirsiniz. token özelliği her zaman geçerli token değerine sahiptir.

Çevirme devre dışı bırakıldı: APN jetonunuzu ve kayıt jetonunuzu eşleme

Yöntem swizzling'i devre dışı bıraktıysanız veya bir SwiftUI uygulaması oluşturuyorsanız, APN belirtecinizi açıkça FCM kayıt belirteciyle eşleştirmeniz gerekir. APN belirtecini almak için application(_:didRegisterForRemoteNotificationsWithDeviceToken:) yöntemini uygulayın ve ardından Messaging apnsToken özelliğini ayarlayın:

Süratli

func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  Messaging.messaging().apnsToken = deviceToken
}

Amaç-C

// With "FirebaseAppDelegateProxyEnabled": NO
- (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [FIRMessaging messaging].APNSToken = deviceToken;
}

FCM kayıt jetonu oluşturulduktan sonra ona erişebilir ve swizzling etkin durumdaki yöntemlerin aynısını kullanarak yenileme olaylarını dinleyebilirsiniz.

Otomatik başlatmayı önle

Bir FCM kayıt jetonu oluşturulduğunda kitaplık, tanımlayıcıyı ve yapılandırma verilerini Firebase'e yükler. Öncelikle kullanıcılardan açık bir katılım almak istiyorsanız, yapılandırma sırasında FCM'yi devre dışı bırakarak belirteç oluşturulmasını önleyebilirsiniz. Bunu yapmak için Info.plist ( GoogleService-Info.plist değil) bir meta veri değeri ekleyin:

FirebaseMessagingAutoInitEnabled = NO

FCM'yi yeniden etkinleştirmek için çalışma zamanı çağrısı yapabilirsiniz:

Süratli

Messaging.messaging().autoInitEnabled = true

Amaç-C

[FIRMessaging messaging].autoInitEnabled = YES;

Bu değer, ayarlandıktan sonra uygulama yeniden başlatıldığında devam eder.

Sonraki adımlar

Apple istemcinizi kurduktan sonra uygulamanıza mesaj işleme ve diğer daha gelişmiş davranışları eklemeye hazırsınız. Daha fazla bilgi için şu kılavuzlara bakın: