Apple platformlarında Firebase Cloud Messaging istemci uygulaması kurma

Apple istemci uygulamaları için 4.096'ya kadar olan bildirim ve veri yüklerini alabilirsiniz bayt olarak ifade eder.

İstemci kodunuzu Objective-C veya Swift'te yazmak için FIRMessaging API. İlgili içeriği oluşturmak için kullanılan hızlı başlangıç örneği her iki dil için de örnek kod sunar.

Firebase Cloud Messaging'de yöntem kaydırma

FCM SDK'sı iki temel alanda yöntem kaydırması gerçekleştirir: APN'ler jetonunuzu eşleme gönderme ve doğrulama sırasında analiz verilerini yakalama aşağı akış mesajı geri çağırma işlemini gerçekleştirme. Kaydırma özelliğini kullanmak istemeyen geliştiriciler devre dışı bırakmak için: FirebaseAppDelegateProxyEnabled işaretini Info.plist dosyasını NO (boole değeri) olarak ayarlayın. Rehberlerin ilgili alanları, kod örneklerinin sayısını inceleyebilirsiniz.

Firebase'i Apple projenize ekleyin

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

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

APNs kimlik doğrulama anahtarınızı Firebase'e yükleyin. Halihazırda bir APNs kimlik doğrulama anahtarınız yoksa Apple Geliştirici Üye Merkezi.

  1. Firebase konsolunda projenizin içinde, dişli simgesi, seçin Proje Ayarları'nı tıklayın ve ardından Cloud Messaging sekmesi.

  2. iOS uygulaması yapılandırması bölümündeki APN kimlik doğrulama anahtarı'nda, Yükle'yi tıklayın. düğmesini tıklayın.

  3. Anahtarınızı kaydettiğiniz konuma gidin, anahtarı seçin ve . Anahtarın anahtar kimliğini ekleyin ( Apple Developer Member Center) oturum açın Yükle.

Uzaktan bildirimlere kaydol

Başlangıçta veya uygulama akışınızda istenilen noktada uygulamanızı uzaktan bildirimlere kaydetme. Telefonla arama Gösterilen registerForRemoteNotifications:

Swift


UNUserNotificationCenter.current().delegate = self

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

application.registerForRemoteNotifications()

Objective-C


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

[application registerForRemoteNotifications];

Kayıt jetonuna erişme

FCM SDK'sı varsayılan olarak uygulama başlangıcında istemci uygulaması örneği için kayıt jetonu. APNs cihaz jetonuna benzer şekilde, bu jeton hedeflenmiş bildirimler göndermenize olanak tanır. özelliğini kullanabilirsiniz.

Apple platformlarının genellikle uygulama başlangıcında bir APNs cihaz jetonu sağlaması gibi, FCM, FIRMessagingDelegate aracılığıyla bir kayıt jetonu sağlar messaging:didReceiveRegistrationToken: yöntemini çağırın. FCM SDK, uygulamanın ilk lansmanı sırasında yeni veya mevcut bir jetonu alır ve her jeton güncellendiğinde veya geçersiz hale getirildiğinde. Her durumda, FCM SDK'sı messaging:didReceiveRegistrationToken: çağrısını yapar geçerli bir jetonla.

Kayıt jetonu aşağıdaki durumlarda değişebilir:

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

Mesajlaşma yetkisini ayarlama

Kayıt jetonları almak için mesajlaşma yetkisini uygulayın protokolü ve çağrıdan sonra FIRMessaging öğesinin delegate özelliğini ayarlayın [FIRApp configure]. Örneğin, uygulama temsilciniz mesajlaşma yetkilendirmesine uygunsa protokolü kullanıyorsanız yetki verilen kullanıcıyı application:didFinishLaunchingWithOptions: üzerinden ayarlayabilirsiniz çok zor bir iş.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Geçerli kayıt jetonu getiriliyor

Kayıt jetonları bu yöntemle yayınlanır messaging:didReceiveRegistrationToken: Bu yöntem genellikle bir defa kayıt jetonuyla başlar. Bu yöntem çağrıldığında, aşağıdakiler için en ideal zamandır:

  • Kayıt jetonu yeniyse uygulama sunucunuza gönderin.
  • Kayıt jetonunu konulara abone edin. Bu işlem yalnızca yeni abonelikler veya kullanıcının uygulamayı yeniden yüklediği durumlar olabilir.

Jetonu doğrudan token(tamamlanma:) değerini girin. Jeton herhangi bir şekilde alınamadıysa boş olmayan bir hata verilir.

Swift

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)"
  }
}

Objective-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;
  }
}];

Bu yöntemi depolama yerine istediğiniz zaman jetona erişmek için kullanabilirsiniz somut olarak ortaya koyar.

Jeton yenilemeyi izleme

Jeton güncellendiğinde bildirim almak için mesajlaşma yetki protokolüne ekleyin. Aşağıdaki örnekte, ve uygun delege yöntemini ekliyor:

Swift

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.
}

Objective-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, şunu dinleyebilirsiniz: NSNotification kFIRMessagingRegistrationTokenRefreshNotification delege etme yöntemi sunmak yerine. Jeton özelliği her zaman mevcut jeton değerini belirleyin.

Kaydırma devre dışı: APNs jetonunuzu eşleme ve kayıt jetonu

Yöntem kaydırmayı devre dışı bıraktıysanız veya SwiftUI uygulaması oluşturuyorsanız APNs jetonunuzu FCM kayıt jetonuyla açıkça eşlemeniz gerekir. Şunu uygulayın: application(_:didRegisterForRemoteNotificationsWithDeviceToken:) yöntemini kullanarak APNs jetonunu alın ve Messaging anahtarını ayarlayın apnsToken mülk:

Swift

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

Objective-C

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

FCM kayıt jetonu oluşturulduktan sonra bu jetona erişebilirsiniz ve yenileme etkinliklerini, kaydırmayla aynı yöntemleri kullanarak dinleme etkin.

Otomatik başlatmayı engelle

Bir FCM kayıt jetonu oluşturulduğunda kitaplık, Firebase'e aktarmanızı sağlar. Müstehcen bir URL etkinleştirmesini istiyorsanız, yapılandırma sırasında jeton oluşturulmasını engelleyebilirsiniz. FCM'yi devre dışı bırakma. Bunu yapmak için Info.plist cihazınıza bir meta veri değeri ekleyin ( GoogleService-Info.plist):

FirebaseMessagingAutoInitEnabled = NO

FCM'yi yeniden etkinleştirmek için çalışma zamanı araması yapabilirsiniz:

Swift

Messaging.messaging().autoInitEnabled = true

Objective-C

[FIRMessaging messaging].autoInitEnabled = YES;

Bu değer, ayarlandıktan sonra uygulamanın yeniden başlatılmasında da aynı kalır.

Sonraki adımlar

Apple istemcinizi ayarladıktan sonra ileti işlemeyi ekleyebilirsiniz. ve diğer daha gelişmiş davranışlar ekleyin. Daha fazla bilgi için şu kılavuzlara bakın: