FCM ile çalışmaya başlamak için en basit kullanım alanını oluşturun: Uygulama cihazda arka plandayken Bildirim derleyici'den bir geliştirme cihazına test bildirim mesajı gönderme. Bu sayfada, kurulumdan doğrulamaya kadar bu hedefe ulaşmak için gereken tüm adımlar listelenmiştir. FCM için Apple istemci uygulaması oluşturduysanız daha önce tamamladığınız adımları da içerebilir.
Firebase'i Apple projenize ekleme
Bu bölümde, uygulamanız için diğer Firebase özelliklerini etkinleştirdiyseniz tamamlamış olabileceğiniz görevler ele alınmaktadır. Özellikle FCM için APNs kimlik doğrulama anahtarınızı yüklemeniz ve uzaktan bildirimlere kaydolmanız gerekir.
Ön koşullar
Aşağıdakileri yükleyin:
- Xcode 15.2 veya sonraki sürümler
Projenizin aşağıdaki koşulları karşıladığından emin olun:
- Projeniz şu platform sürümlerini veya daha yeni sürümleri hedeflemelidir:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- Projeniz şu platform sürümlerini veya daha yeni sürümleri hedeflemelidir:
Uygulamanızı çalıştırmak için fiziksel bir Apple cihaz oluşturun ve aşağıdaki görevleri tamamlayın:
- Apple geliştirici hesabınız için bir Apple Push Bildirimi Kimlik Doğrulama Anahtarı edinin.
- XCode'ta Uygulama > Özellikler bölümünde Push bildirimlerini etkinleştirin.
- Google Hesabınızı kullanarak Firebase'da oturum açın.
Xcode projeniz yoksa ve yalnızca bir Firebase ürününü denemek istiyorsanız hızlı başlangıç örneklerimizden birini indirebilirsiniz.
Firebase projesi oluşturma
Firebase'i Apple uygulamanıza eklemeden önce, uygulamanıza bağlanacak bir Firebase projesi oluşturmanız gerekir. Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase Projelerini Anlama başlıklı makaleyi inceleyin.
Uygulamanızı Firebase'e kaydetme
Firebase'i Apple uygulamanızda kullanmak için uygulamanızı Firebase projenize kaydetmeniz gerekir. Uygulamanızı kaydetme işlemine genellikle uygulamanızı projenize "ekleme" denir.
Firebase konsoluna gidin.
Kurulum iş akışını başlatmak için projeye genel bakış sayfasının ortasından iOS+ simgesini tıklayın.
Firebase projenize daha önce bir uygulama eklediyseniz platform seçeneklerini görüntülemek için Uygulama ekle'yi tıklayın.
Paket kimliği alanına uygulamanızın paket kimliğini girin.
(İsteğe bağlı) Diğer uygulama bilgilerini girin: Uygulama takma adı ve App Store kimliği.
Uygulamayı kaydet'i tıklayın.
Firebase yapılandırma dosyası ekleme
Firebase Apple platformları yapılandırma dosyanızı (
GoogleService-Info.plist
) almak için GoogleService-Info.plist dosyasını indir'i tıklayın.Yapılandırma dosyanızı Xcode projenizin kök dizinine taşıyın. İstenirse yapılandırma dosyasını tüm hedeflere eklemeyi seçin.
Projenizde birden fazla paket kimliğiniz varsa her uygulamanın kendi GoogleService-Info.plist
dosyasına sahip olabilmesi için her paket kimliğini Firebase konsolunda kayıtlı bir uygulamayla ilişkilendirmeniz gerekir.
Uygulamanıza Firebase SDK'ları ekleme
Firebase bağımlılarını yüklemek ve yönetmek için Swift Package Manager'ı kullanın.
Firebase SDK'larını Apple projenize eklemenin farklı yolları (ör. doğrudan çerçeveleri içe aktarma ve CocoaPods kullanma) hakkında bilgi edinmek için- Xcode'da, uygulamanız açıkken Dosya > Paket Ekle'ye gidin.
- İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
- Firebase Cloud Messaging kitaplığını seçin.
-ObjC
işaretini, hedefinizin derleme ayarlarının Diğer Bağlantı Oluşturucu İşaretleri bölümüne ekleyin.- Firebase Cloud Messaging ile en iyi deneyimi yaşamak için Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz. IDFA koleksiyonu olmayan veya IDFA koleksiyonu olan kitaplığı seçebilirsiniz.
- İşlem tamamlandığında Xcode, arka planda bağımlılarınızı otomatik olarak çözümlemeye ve indirmeye başlar.
https://github.com/firebase/firebase-ios-sdk.git
APNs kimlik doğrulama anahtarınızı yükleme
APNs kimlik doğrulama anahtarınızı Firebase'e yükleyin. APN kimlik doğrulama anahtarınız yoksa Apple Developer Üye Merkezi'nde bir anahtar oluşturduğunuzdan emin olun.
-
Firebase Konsolu'ndaki projenizde dişli simgesini, ardından Proje Ayarları'nı ve Cloud Mesajlaşma sekmesini seçin.
-
iOS uygulama yapılandırması bölümündeki APNs 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 Developer Üye Merkezi'nde bulunur) ve Yükle'yi tıklayın.
Uygulamanızda Firebase'i başlatma
Uygulamanıza Firebase ilk kullanıma hazırlama kodu eklemeniz gerekir. Firebase modülünü içe aktarın ve gösterildiği gibi paylaşılan bir örnek yapılandırın:
FirebaseCore
modülünü ve uygulama temsilcinizin kullandığı diğer tüm Firebase modülleriniUIApplicationDelegate
dosyanıza aktarın. Örneğin, Cloud Firestore ve Authentication kullanmak için:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Uygulama temsilcinizin
application(_:didFinishLaunchingWithOptions:)
yönteminde birFirebaseApp
shared instance yapılandırın:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- SwiftUI kullanıyorsanız bir uygulama temsilcisi oluşturmanız ve
UIApplicationDelegateAdaptor
veyaNSApplicationDelegateAdaptor
aracılığıylaApp
yapınıza eklemeniz gerekir. Ayrıca uygulama temsilcisi değiştirme işlemini de devre dışı bırakmanız gerekir. Daha fazla bilgi için SwiftUI talimatlarına bakın.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Uzaktan bildirimlere kaydolma
Uygulamanızı, başlangıçta veya uygulama akışınızda istediğiniz noktada uzaktan bildirimlere kaydedin.registerForRemoteNotifications
'ü aşağıdaki gibi çağırı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
Belirli bir cihaza mesaj göndermek için o cihazın kayıt jetonunu bilmeniz gerekir. Bu eğitimde, jetonu Bildirim Oluşturucu'daki bir alana girmeniz gerektiğinden, jetonu aldıktan sonra kopyaladığınızdan veya güvenli bir şekilde sakladığınızdan emin olun.
FCM SDK'sı, varsayılan olarak uygulama başlatılırken istemci uygulama örneği için bir kayıt jetonu oluşturur. APNs cihaz jetonuna benzer şekilde bu jeton, uygulamanızın belirli bir örneğine hedeflenen bildirimler göndermenize olanak tanır.
Apple platformlarının genellikle uygulama başlatılırken APNs cihaz jetonu sağladığı gibi, FCM de FIRMessagingDelegate
'nin messaging:didReceiveRegistrationToken:
yöntemi aracılığıyla kayıt jetonu sağlar.
FCM SDK'sı, uygulama ilk kez başlatılırken ve jeton güncellendiğinde veya geçersiz olduğunda yeni veya mevcut bir jeton alır.
FCM SDK'sı her durumda geçerli bir jetonla messaging:didReceiveRegistrationToken:
çağrısı yapar.
Kayıt jetonu şu durumlarda değişebilir:
- Uygulama yeni bir cihaza geri yüklendiğinde
- Kullanıcı uygulamayı kaldırır/yeniden yükler
- Kullanıcı uygulama verilerini temizler.
Mesajlaşma temsilcisini ayarlama
Kayıt jetonları almak için mesajlaşma temsilcisi protokolünü uygulayın ve [FIRApp configure]
'yi çağırdıktan sonra FIRMessaging
'nin delegate
mülkünü ayarlayın.
Örneğin, uygulama temsilciniz mesajlaşma temsilcisi protokolüne uygunsa application:didFinishLaunchingWithOptions:
üzerinde temsilciyi kendisine ayarlayabilirsiniz.
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
Mevcut kayıt jetonunu getirme
Kayıt jetonları messaging:didReceiveRegistrationToken:
yöntemiyle gönderilir. Bu yöntem genellikle kayıt jetonuyla uygulama başlatıldığında bir kez çağrılır. Bu yöntem çağrıldığında aşağıdakiler için ideal zamandır:
- Kayıt jetonu yeniyse uygulama sunucunuza gönderin.
- Kayıt jetonunu konulara abone edin. Bu işlem yalnızca yeni abonelikler veya kullanıcının uygulamayı yeniden yüklediği durumlar için gereklidir.
token(completion:) parametresini kullanarak jetonu doğrudan alabilirsiniz. Jeton alma işlemi herhangi bir şekilde başarısız olursa null olmayan bir hata sağlanır.
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; } }];
Jetonu saklamak yerine erişmek için dilediğiniz zaman bu yöntemi kullanabilirsiniz.
Jeton yenilemeyi izleme
Jeton her güncellendiğinde bildirim almak için mesajlaşma temsilcisi protokolüne uygun bir temsilci sağlayın. Aşağıdaki örnekte, temsilci kaydedilir ve uygun temsilci 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, bir temsilci yöntemi sağlamak yerine kFIRMessagingRegistrationTokenRefreshNotification
adlı bir NSNotification
öğesini dinleyebilirsiniz. Jeton mülkü her zaman mevcut jeton değerine sahiptir.
Bildirim mesajı gönderme
Uygulamayı hedef cihaza yükleyip çalıştırın. Apple cihazlarda uzaktan bildirim almak için izin isteğini kabul etmeniz gerekir.
Uygulamanın cihazda arka planda çalıştığından emin olun.
Firebase konsolunda Mesajlaşma sayfasını açın.
Bu ilk mesajınızsa İlk kampanyanızı oluşturun'u seçin.
- Firebase bildirim mesajları'nı ve Oluştur'u seçin.
Aksi takdirde, Kampanyalar sekmesinde Yeni kampanya'yı ve ardından Bildirimler'i seçin.
Mesaj metnini girin. Diğer tüm alanlar isteğe bağlıdır.
Sağ bölmede Test mesajı gönder'i seçin.
FCM kayıt jetonu ekle etiketli alana, bu kılavuzun önceki bir bölümünde edindiğiniz kayıt jetonunu girin.
Test et'i seçin.
Test'i seçtikten sonra, hedeflenen istemci cihaz (uygulamanın arka planda olduğu cihaz) bildirimi alır.
Uygulamanıza mesaj yayınlama hakkında bilgi edinmek için FCMraporlama kontrol paneline bakın. Bu panelde, Apple ve Android cihazlarda gönderilen ve açılan mesajların sayısı ile Android uygulamaları için "gösterim" (kullanıcı tarafından görüntülenen bildirimler) verilerinin yanı sıra diğer bilgiler yer alır.
Sonraki adımlar
Bildirim mesajlarının ötesine geçmek ve uygulamanıza daha gelişmiş davranışlar eklemek için aşağıdakileri inceleyin: