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.
-
Firebase konsolundaki projenizin içinden dişli simgesini, Proje Ayarları'nı ve ardından Cloud Messaging sekmesini seçin.
-
iOS uygulama yapılandırması altındaki APN kimlik doğrulama anahtarında Yükle düğmesini tıklayın.
-
Anahtarınızı kaydettiğiniz konumu bulun, seçin ve Aç'ı 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 şekilderegisterForRemoteNotifications
ç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: