Apple platformlarında Firebase Cloud Messaging istemci uygulaması kurma

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

İstemci kodunuzu Objective-C veya Swift ile yazmak için FIRMessaging API'yi 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 kaydırma

FCM SDK'sı, iki önemli alanda yöntem geçişi gerçekleştirir: APNs jetonunuzu FCM kayıt jetonuyla eşleme ve aşağı akış mesaj geri çağırma işlemi sırasında analiz verilerini yakalama. Kaydırmayı kullanmamayı tercih eden geliştiriciler, uygulamanın Info.plist dosyasına FirebaseAppDelegateProxyEnabled işaretini ekleyip NO (boole değeri) olarak ayarlayarak bu özelliği devre dışı bırakabilir. Kılavuzların ilgili bölümlerinde yöntem geçiş özelliği etkinleştirilmiş olsun veya olmasın kod örnekleri sağlanır.

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. APNs kimlik doğrulama anahtarınız yoksa Apple Developer Member Center'da bir tane oluşturduğunuzdan emin olun.

  1. Firebase konsolundaki projenizin içinden dişli simgesini, Proje Ayarları'nı ve ardından Cloud Messaging 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 konumu bulun, seçin ve 'ı tıklayın. Anahtarın anahtar kimliğini ekleyin ( Apple Developer Member Center'da bulunur) ve Yükle'yi tıklayın.

Uzaktan bildirimlere kaydolun

Başlangıçta veya uygulama akışınızda istediğiniz noktada uygulamanızı uzaktan bildirimler için kaydedin. Gösterilen şekilde registerForRemoteNotifications çağrısı yapın:

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

Varsayılan olarak FCM SDK, uygulama başlatma sırasında istemci uygulaması örneği için bir kayıt jetonu oluşturur. APNs cihaz jetonuna benzer şekilde bu jeton da uygulamanızın herhangi bir belirli örneğine hedefli bildirimler göndermenize olanak tanır.

Apple platformlarının uygulama başlatıldığında genellikle APNs cihaz jetonu yayınlaması gibi FCM, FIRMessagingDelegate messaging:didReceiveRegistrationToken: yöntemiyle bir kayıt jetonu sağlar. FCM SDK'sı, uygulama ilk kez başlatılırken ve jeton her güncellendiğinde veya geçersiz kılındığında yeni veya mevcut bir jeton alır. Her durumda FCM SDK'sı, messaging:didReceiveRegistrationToken: kodunu geçerli bir jetonla ç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 yetkisini belirleyin

Kayıt jetonlarını almak için mesajlaşma yetkisi verme protokolünü uygulayın ve [FIRApp configure] çağrısından sonra FIRMessaging delegate özelliğini ayarlayın. Örneğin, uygulama yetki verdiğiniz kullanıcı mesajlaşma yetkisi protokolüne uyuyorsa yetki verilmiş kullanıcıyı application:didFinishLaunchingWithOptions: üzerinde kendisine ayarlayabilirsiniz.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Geçerli kayıt jetonu getiriliyor

Kayıt jetonları, messaging:didReceiveRegistrationToken: yöntemi aracılığıyla gönderilir. Bu yöntem genellikle kayıt jetonuyla başlayan uygulama başına bir defa çağrılır. Bu yöntem çağrıldığında, şunları yapmak için ideal zamandır:

  • Kayıt jetonu yeniyse bunu uygulama sunucunuza gönderin.
  • Kayıt jetonunu konulara abone olma. Bu, yalnızca yeni abonelikler veya kullanıcının uygulamayı yeniden yüklediği durumlarda gereklidir.

Jetonu doğrudan token(complete:) kullanarak alabilirsiniz. Jeton alma herhangi bir şekilde başarısız olduysa null 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;
  }
}];

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

Jeton yenilemesini izle

Jeton güncellendiğinde bildirim almak için mesajlaşma yetki verme protokolüne uyan bir yetki verin. Aşağıdaki örnekte yetki verilmiş kullanıcı kaydedilir ve uygun delege yöntemi eklenir:

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, yetki verme yöntemi sağlamak yerine kFIRMessagingRegistrationTokenRefreshNotification adlı bir NSNotification öğesini dinleyebilirsiniz. Jeton özelliği her zaman geçerli jeton değerine sahiptir.

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

Yöntem geçişini devre dışı bıraktıysanız veya bir SwiftUI uygulaması oluşturuyorsanız APNs jetonunuzu FCM kayıt jetonuyla açıkça eşlemeniz gerekir. APNs jetonunu almak için application(_:didRegisterForRemoteNotificationsWithDeviceToken:) yöntemini uygulayın, ardından Messaging apnsToken özelliğini ayarlayın:

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şebilir ve swizzling ile aynı yöntemleri kullanarak yenileme etkinliklerini dinleyebilirsiniz.

Otomatik başlatmayı engelle

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

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 uygulama yeniden başlatılırken devam eder.

Sonraki adımlar

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