Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Apple platformlarında bir Firebase Bulut Mesajlaşma istemci uygulaması kurun

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Apple istemci uygulamaları için, Firebase Cloud Messaging APNs arabirimi ü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 dönen yöntem

FCM SDK, iki temel alanda yöntem değiştirme gerçekleştirir: APN belirtecinizi FCM kayıt belirteciyle eşleştirme ve aşağı akış mesajı geri arama işleme sırasında analitik verilerini yakalama. Swizzling'i kullanmamayı tercih eden geliştiriciler, uygulamanın Info.plist dosyasına FirebaseAppDelegateProxyEnabled bayrağını ekleyip NO (boole değeri) olarak ayarlayarak bunu devre dışı bırakabilir. Kılavuzların ilgili alanları, yöntem swizzling'in etkinleştirildiği ve etkinleştirilmediği kod örnekleri sağlar.

Apple projenize Firebase ekleyin

Henüz yapmadıysanız, Apple projenize Firebase'i 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 Üye Merkezi'nde bir tane oluşturduğunuzdan emin olun.

  1. Firebase konsolunda projenizin içinde dişli simgesini seçin, Project Settings öğesini seçin ve ardından Cloud Messaging sekmesini seçin.

  2. iOS uygulama yapılandırması altındaki APNs 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 bulunur ) ve Yükle'yi tıklayın.

Uzaktan bildirimler için kaydolun

İster başlangıçta ister uygulama akışınızın istediğiniz noktasında, uygulamanızı uzaktan bildirimler için kaydedin. Gösterildiği gibi registerForRemoteNotifications arayın:

Süratli

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: { _, _ in }
  )
} else {
  let settings: UIUserNotificationSettings =
    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

Amaç-C

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

Kayıt belirtecine erişin

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

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

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

  • Uygulama yeni bir cihaza geri yüklendi
  • 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ısından 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 belirtecini getirme

Kayıt belirteçleri, messaging:didReceiveRegistrationToken: . Bu yöntem, kayıt belirteci ile genellikle uygulama başlangıcında bir kez çağrılır. Bu yöntem çağrıldığında, ideal zaman:

  • Kayıt belirteci yeniyse, uygulama sunucunuza gönderin.
  • Kayıt belirtecini konulara abone olun. Bu, yalnızca yeni abonelikler 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 depolamak yerine erişmek için istediğiniz zaman bu yöntemi kullanabilirsiniz.

Belirteç yenilemeyi izle

Belirteç her güncellendiğinde bilgilendirilmek için mesajlaşma delege 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 NSNotification adlı bir kFIRMessagingRegistrationTokenRefreshNotification dinleyebilirsiniz. Belirteç özelliği her zaman geçerli belirteç değerine sahiptir.

Swizzling devre dışı: APN jetonunuzu ve kayıt jetonunuzu eşleme

Yöntem swizzling'i devre dışı bıraktıysanız, APNs simgenizi FCM kayıt belirteciyle açıkça eşleştirmeniz gerekir. APNs 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 belirteci oluşturulduktan sonra, swizzling etkinken olduğu gibi aynı yöntemleri kullanarak ona erişebilir ve yenileme olaylarını dinleyebilirsiniz.

Otomatik başlatmayı engelle

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

FirebaseMessagingAutoInitEnabled = NO

FCM'yi yeniden etkinleştirmek için bir ç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şlatmaları boyunca 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 bu kılavuzlara bakın: