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.
-
Firebase konsolunda projenizin içinde, dişli simgesini, Proje Ayarları'nı ve ardından Cloud Messaging sekmesini seçin.
-
iOS uygulaması yapılandırması bölümündeki APN kimlik doğrulama anahtarı'nda Yükle düğmesini tıklayın.
-
Anahtarınızı kaydettiğiniz konuma gidin, anahtarı seçin ve Aç'ı 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 gibiregisterForRemoteNotifications
ç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: