Flutter'da Firebase Cloud Messaging istemci uygulaması kurma

Flutter'da FCM istemcisi oluşturmak için aşağıdaki adımları uygulayın.

Platforma özel kurulum ve şartlar

Gerekli adımlardan bazıları, hedeflediğiniz platforma bağlıdır.

iOS+

Xcode'da uygulama özelliklerini etkinleştirme

Uygulamanızın mesaj almaya başlaması için Xcode projenizde push bildirimleri ve arka plan modlarını etkinleştirmeniz gerekir.

  1. Xcode proje çalışma alanınızı (ios/Runner.xcworkspace) açın.
  2. Push bildirimlerini etkinleştirin.
  3. Arka planda getirme ve Uzak bildirimler arka planda yürütme modlarını etkinleştirin.

APNs kimlik doğrulama anahtarınızı yükleme

FCM'yi kullanmadan önce APNs sertifikanızı Firebase'e yükleyin. APNs sertifikanız yoksa Apple Developer Member Center'da bir sertifika oluşturun.

  1. Firebase konsolundaki projenizde dişli simgesini, Proje Ayarları'nı ve ardından Cloud Mesajlaşma sekmesini seçin.
  2. Geliştirme sertifikanız, üretim sertifikanız veya her ikisi için Sertifika Yükle düğmesini seçin. En az biri gereklidir.
  3. Her sertifika için .p12 dosyasını seçin ve varsa şifreyi girin. Bu sertifikanın paket kimliğinin, uygulamanızın paket kimliğiyle eşleştiğinden emin olun. Kaydet'i seçin.

Yöntem dönüşümü

FCM Flutter eklentisini Apple cihazlarda kullanmak için yöntem karıştırmayı devre dışı bırakmamanız gerekir. Değiştirme işlemi gereklidir ve bu işlem olmadan FCM jetonu işleme gibi temel Firebase özellikleri düzgün çalışmaz.

Android

Google Play hizmetleri

FCM istemcileri, Android 4.4 veya sonraki sürümleri çalıştıran ve Google Play Hizmetleri'nin de yüklü olduğu cihazlar ya da Google API'leri ile Android 4.4 çalıştıran bir emülatör gerektirir. Android uygulamalarınızı Google Play Store üzerinden dağıtmakla sınırlı olmadığınızı unutmayın.

Play Hizmetleri SDK'sını kullanan uygulamalar, Google Play Hizmetleri özelliklerine erişmeden önce cihazda uyumlu bir Google Play Hizmetleri APK'sı olup olmadığını her zaman kontrol etmelidir. Bunu iki yerde yapmanız önerilir: ana etkinliğin onCreate() yönteminde ve onResume() yönteminde. onCreate() denetimi, başarılı bir denetim olmadan uygulamanın kullanılamamasını sağlar. onResume() denetimi, kullanıcının çalışan uygulamaya geri dönmesi durumunda (ör. geri düğmesi aracılığıyla) denetimin yine yapılmasını sağlar.

Cihazda Google Play Hizmetleri'nin uyumlu bir sürümü yoksa uygulamanız, kullanıcıların Play Store'dan Google Play Hizmetleri'ni indirmesine izin vermek için GoogleApiAvailability.makeGooglePlayServicesAvailable() çağrısı yapabilir.

Web

Web kimlik bilgilerini FCM ile yapılandırma

FCM web arayüzü, desteklenen web push hizmetlerine istek gönderme yetkilendirmesi için "Voluntary Application Server Identification" (Gönüllü Uygulama Sunucusu Kimliği) veya "VAPID" anahtarları adlı web kimlik bilgilerini kullanır. Uygulamanızı push bildirimlerine abone etmek için Firebase projenizle bir anahtar çifti ilişkilendirmeniz gerekir. Firebase konsolunu kullanarak yeni bir anahtar çifti oluşturabilir veya mevcut anahtar çiftinizi içe aktarabilirsiniz.

Yeni bir anahtar çifti oluşturma
  1. Firebase konsolu Ayarlar bölmesinin Cloud Mesajlaşma sekmesini açın ve Web yapılandırması bölümüne gidin.

  2. Web Push sertifikaları sekmesinde Anahtar çifti oluştur'u tıklayın. Konsolda, anahtar çiftinin oluşturulduğuna dair bir bildirim, ortak anahtar dizesi ve eklenme tarihi gösterilir.

Mevcut bir anahtar çiftini içe aktarma

Web uygulamanızla halihazırda kullandığınız bir anahtar çiftiniz varsa FCM API'leri aracılığıyla mevcut web uygulaması örneklerinize erişebilmek için bu anahtar çiftini FCM'ye aktarabilirsiniz. Anahtarları içe aktarmak için Firebase projesine sahip düzeyinde erişiminiz olmalıdır. Mevcut ortak ve özel anahtarınızı base64 URL için güvenli kodlanmış biçimde içe aktarın:

  1. Firebase konsolu Ayarlar bölmesinin Cloud Mesajlaşma sekmesini açın ve Web yapılandırması bölümüne gidin.

  2. Web Push sertifikaları sekmesinde "Mevcut bir anahtar çiftini içe aktarın" bağlantı metnini bulup seçin.

  3. Anahtar çiftini içe aktar iletişim kutusunda, ilgili alanlara ortak ve özel anahtarlarınızı girin ve İçe aktar'ı tıklayın. Konsol, ortak anahtar dizesini ve eklenme tarihini gösterir.

Anahtarların biçimi ve nasıl oluşturulacağı hakkında daha fazla bilgi için Uygulama sunucusu anahtarları başlıklı makaleyi inceleyin.

FCM eklentisini yükleme

  1. Henüz yapmadıysanız Flutter için Firebase eklentilerini yükleyip başlatın.

  2. Flutter projenizin kökünden aşağıdaki komutu çalıştırarak eklentiyi yükleyin:

    flutter pub add firebase_messaging
    
  3. İşlem tamamlandığında Flutter uygulamanızı yeniden oluşturun:

    flutter run
    

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 Bildirimler Konsolu'ndaki bir alana girmeniz gerektiğinden, jetonu aldıktan sonra kopyaladığınızdan veya güvenli bir şekilde sakladığınızdan emin olun.

Bir uygulama örneğinin mevcut kayıt jetonunu almak için getToken() işlevini çağırın. Bildirim izni verilmediyse bu yöntem kullanıcıdan bildirim izinleri ister. Aksi takdirde bir jeton döndürür veya bir hata nedeniyle gelecekteki tarihler reddedilir.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

Web platformlarında VAPID herkese açık anahtarınızı getToken()'ye iletin:

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Jeton her güncellendiğinde bildirim almak için onTokenRefresh akışına abone olun:

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Otomatik başlatmayı önleme

Bir FCM kayıt jetonu oluşturulduğunda kitaplık, tanımlayıcıyı ve yapılandırma verilerini Firebase'e yükler. Jetonun otomatik olarak oluşturulmasını önlemek istiyorsanız derleme sırasında otomatik başlatmayı devre dışı bırakın.

iOS

iOS'te Info.plist öğenize meta veri değeri ekleyin:

FirebaseMessagingAutoInitEnabled = NO

Android

Android'de, Analytics verilerinin toplanmasını ve FCM'nin otomatik olarak başlatılmasını devre dışı bırakmak için aşağıdaki meta veri değerlerini AndroidManifest.xml dosyanıza ekleyin (her ikisini de devre dışı bırakmanız gerekir):

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Çalışma zamanında FCM otomatik başlatmayı yeniden etkinleştirme

Belirli bir uygulama örneği için otomatik başlatmayı etkinleştirmek üzere setAutoInitEnabled() işlevini çağırın:

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Bu değer, ayarlandıktan sonra uygulama yeniden başlatılsa bile değişmez.

Sonraki adımlar

Müşteri uygulaması kurulduktan sonra Bildirimler derleyicisi ile aşağı akış mesajları göndermeye hazırsınız demektir. Arka planda çalışan bir uygulamaya test mesajı gönderme başlıklı makaleyi inceleyin.

Uygulamanıza daha gelişmiş başka davranışlar eklemek için sunucu uygulaması kullanmanız gerekir.

Ardından uygulama istemcinizde: