Apple platformlarında Firebase Cloud Messaging istemci uygulaması kurma

Apple istemci uygulamalarında, Firebase Cloud Messaging APNs arayüzü üzerinden 4.096 bayta kadar bildirim ve veri yükleri alabilirsiniz.

İstemci kodunuzu Objective-C veya Swift'te 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, iki temel alanda yöntem geçişi gerçekleştirir: APN'lerinizi FCM kayıt jetonuyla eşleme ve aşağı akış mesajı geri çağırma işlemi sırasında analiz verilerini yakalama. Kaydırma özelliğini kullanmak istemeyen geliştiriciler, uygulamanın Info.plist dosyasına FirebaseAppDelegateProxyEnabled işaretini ekleyip NO (boole değeri) olarak ayarlayarak bu özelliği devre dışı bırakabilirler. Kılavuzların ilgili alanlarında, yöntem kaydırma etkin ve etkin değilken kod örnekleri verilmiştir.

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 Developer Member Center'da bir tane oluşturduğunuzdan emin olun.

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

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

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

Uzaktan bildirimlere kaydol

Başlangıçta veya uygulama akışınızda istediğiniz noktada uygulamanızı uzaktan bildirimler için kaydedin. Gösterildiği gibi 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 lansmanında istemci uygulaması örneği için bir kayıt jetonu oluşturur. APNs cihaz jetonuna benzer şekilde, bu jeton da uygulamanızın belirli bir örneğine hedeflenmiş 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 ürününün messaging:didReceiveRegistrationToken: yöntemi aracılığıyla bir kayıt jetonu sağlar. FCM SDK, uygulama ilk kez başlatılırken ve jeton güncellendiğinde ya da geçersiz kılındığında yeni veya mevcut bir jetonu alır. Her durumda, FCM SDK'sı geçerli bir jetonla messaging:didReceiveRegistrationToken: özelliğini çağırır.

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 yetki verme protokolünü uygulayın ve [FIRApp configure] çağrısından sonra FIRMessaging öğesinin delegate özelliğini ayarlayın. Örneğin, uygulama temsilciniz mesajlaşma yetki verme protokolüne uygunsa application:didFinishLaunchingWithOptions: alanındaki yetkiyi kendisi olarak ayarlayabilirsiniz.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Geçerli kayıt jetonu getiriliyor

Kayıt jetonları, messaging:didReceiveRegistrationToken: yöntemiyle yayınlanır. Bu yöntem genellikle kayıt jetonuyla başlayan her uygulama için bir kez çağrılır. 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 yalnızca yeni abonelikler veya kullanıcının uygulamayı yeniden yüklediği durumlar için gereklidir.

Jetonu doğrudan token(complete:) kullanarak alabilirsiniz. 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.

Jeton yenilemeyi izleme

Jeton güncellendiğinde bildirim almak için mesajlaşma yetki verme protokolüne uygun bir temsilci sağlayın. Aşağıdaki örnekte, yetki verilmiş kişi 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 için dinleyebilirsiniz. Jeton özelliği, her zaman mevcut jeton değerine sahiptir.

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

Yöntem kaydırmayı 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 hızlıca kaydırma özelliğinin etkinleştirildiği 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 onay almak isterseniz 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 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 uygulamanın yeniden başlatılmasında da aynı kalır.

Sonraki adımlar

Apple istemcinizi kurduktan sonra, mesaj 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: