Flutter'da Firebase Cloud Messaging istemci uygulaması kurma

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

Platforma özel kurulum ve şartlar

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

iOS+

Xcode'da uygulama özelliklerini etkinleştirme

Uygulamanızın mesaj almaya başlayabilmesi için Xcode projenizde anlık 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 uzaktan bildirimler arka planda yürütme modlarını etkinleştirin.

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

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

  1. Firebase konsolunda projenizde dişli simgesini, Proje Ayarları'nı ve ardından Cloud Messaging 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ü

Apple cihazlarda FCM Flutter eklentisini kullanmak için yöntem karıştırmayı devre dışı bırakmamalısınız. Swizzle işlemi gereklidir. Bu işlem yapılmadığında FCM jeton işleme gibi temel Firebase özellikleri düzgün çalışmaz.

Android

Google Play hizmetleri

FCM istemcileri için Android 4.4 veya sonraki sürümleri çalıştıran ve Google Play Hizmetleri'nin yüklü olduğu cihazlar ya da Google API'leri ile Android 4.4 çalıştıran bir emülatör gerekir. Android uygulamalarınızı yalnızca Google Play Store üzerinden dağıtmak zorunda olmadığınızı unutmayın.

Play Hizmetleri SDK'sını kullanan uygulamalar, Google Play Hizmetleri özelliklerine erişmeden önce cihazda her zaman uyumlu bir Google Play Hizmetleri APK'sı olup olmadığını kontrol etmelidir. Bu işlemi iki yerde yapmanız önerilir: ana etkinliğin onCreate() yönteminde ve onResume() yönteminde. onCreate() kontrolü, uygulamanın başarılı bir kontrol olmadan kullanılamamasını sağlar. onResume() ile yapılan kontrol, kullanıcının çalışan uygulamaya geri düğmesi gibi başka bir yolla dönmesi durumunda kontrolün yine de 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() işlevini çağırabilir.

Web

FCM ile Web kimlik bilgilerini yapılandırma

FCM Web arayüzü, desteklenen web push hizmetlerine gönderme isteklerini yetkilendirmek için "Voluntary Application Server Identification" (Gönüllü Uygulama Sunucusu Tanımlama) veya "VAPID" anahtarları olarak adlandırılan web kimlik bilgilerini kullanır. Uygulamanızı push bildirimlerine abone etmek için Firebase projenizle bir anahtar çifti ilişkilendirmeniz gerekir. Firebase konsolu üzerinden yeni bir anahtar çifti oluşturabilir veya mevcut anahtar çiftinizi içe aktarabilirsiniz.

Yeni bir anahtar çifti oluşturma
  1. Firebase Console Ayarlar bölmesinin Cloud Messaging 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ğuyla ilgili bir bildirim ve ortak anahtar dizesi ile eklenme tarihi gösterilir.

Mevcut bir anahtar çiftini içe aktarma

Web uygulamanızla zaten kullandığınız mevcut bir anahtar çiftiniz varsa bu anahtar çiftini FCM API'leri aracılığıyla mevcut web uygulaması örneklerinize ulaşabilmek için 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 güvenli kodlu biçimde içe aktarın:

  1. Firebase Console Ayarlar bölmesinin Cloud Messaging 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" bağlantı metnini bulup seçin.

  3. Anahtar çiftini içe aktar iletişim kutusunda, ortak ve özel anahtarlarınızı ilgili alanlara girin ve İçe aktar'ı tıklayın. Konsolda ortak anahtar dizesi ve eklenme tarihi gösterilir.

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. Eklentiyi yüklemek için Flutter projenizin kökünden aşağıdaki komutu çalıştırın:

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

    flutter run
    

Kayıt jetonuna erişme

Belirli bir cihaza mesaj göndermek için cihazın kayıt jetonunu bilmeniz gerekir. Bu eğitimi tamamlamak için 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 izni ister. Aksi takdirde, bir jeton döndürür veya hata nedeniyle gelecekteki isteği reddeder.

// 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 ortak anahtarınızı getToken() adresine 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

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ı önlemeyi tercih ederseniz 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, bu meta veri değerlerini AndroidManifest.xml öğenize ekleyerek Analytics toplama ve FCM otomatik başlatma işlemlerini devre dışı bırakın (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ıldığında da geçerliliğini korur.

Sonraki adımlar

İstemci uygulaması kurulduktan sonra Bildirim Oluşturucu ile aşağı akış mesajları göndermeye başlayabilirsiniz. Arka planda çalışan bir uygulamaya test mesajı gönderme başlıklı makaleyi inceleyin.

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

Ardından, uygulama istemcinizde: