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 gereksinimler

Gerekli adımların bazıları, hedeflediğiniz platforma göre değişir.

iOS ve üzeri

Xcode'da uygulama özelliklerini etkinleştirme

Uygulamanızın mesaj almaya başlayabilmesi için öncelikle Xcode projenizde push bildirimlerini 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 plan yürütme modları seçeneklerini etkinleştirin.

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

FCM'yi kullanmadan önce APNs sertifikanızı Firebase'e yükleyin. Henüz APNs sertifikanız yoksa Apple Geliştirici Üye Merkezi'nde sertifika oluşturun.

  1. Firebase konsolunda projenizin içinde, 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 değiştirme

FCM Flutter eklentisini Apple cihazlarda kullanmak için yöntem kaydırmayı devre dışı bırakmamalısınız. Swizzling gereklidir ve bunlar olmadan FCM jeton işleme gibi temel Firebase özellikleri düzgün çalışmaz.

Android

Google Play Hizmetleri

FCM istemcileri, Google Play Hizmetleri yüklü olan ve Android 4.4 veya sonraki sürümleri çalıştıran ya da Google API'lerini içeren Android 4.4 çalıştıran bir emülatör kullanılmasını gerektirir. Android uygulamalarınızı Google Play Store aracılığıyla dağıtmanın sınırlı olmadığını unutmayın.

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

Cihazda Google Play Hizmetleri ile uyumlu bir sürüm yoksa uygulamanız, kullanıcıların Play Store'dan Google Play hizmetlerini indirmesine izin vermek için GoogleApiAvailability.makeGooglePlayServicesAvailable() numarasını arayabilir.

Web

Web Kimlik Bilgilerini FCM ile yapılandırma

FCM Web arayüzü, desteklenen web push hizmetlerine gönderme isteklerini yetkilendirmek için "Gönüllü Uygulama Sunucusu Tanımlama" veya "VAPID" anahtarları adı verilen web kimlik bilgilerini kullanır. Uygulamanızı push bildirimlerine abone olmak için Firebase projenizle bir çift anahtarı ilişkilendirmeniz gerekir. Yeni bir anahtar çifti oluşturabilir veya Firebase konsolu üzerinden mevcut anahtar çiftinizi içe aktarabilirsiniz.

Yeni bir anahtar çifti oluştur
  1. Firebase konsolunun Ayarlar bölmesindeki Cloud Messaging sekmesini açın ve sayfayı kaydırarak 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 eklendiği tarih gösterilir.

Mevcut bir anahtar çiftini içe aktarma

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

  1. Firebase konsolunun Ayarlar bölmesindeki Cloud Messaging sekmesini açın ve sayfayı kaydırarak 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ın iletişim kutusunda, ilgili alanlara ortak ve özel anahtarlarınızı girin ve İçe aktar'ı tıklayın. Konsolda ortak anahtar dizesi ve eklendiği tarih gösterilir.

Anahtarların biçimi ve nasıl oluşturulacağı hakkında daha fazla bilgi için Uygulama sunucusu anahtarları bölümüne bakın.

FCM eklentisini yükleyin

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

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

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

    flutter run
    

Kayıt jetonuna erişme

Belirli bir cihaza mesaj göndermek için cihazın kayıt jetonunu bilmeniz gerekir. Bu eğiticiyi tamamlamak için jetonu Bildirimler konsolundaki bir alana girmeniz gerekeceğinden, jetonu aldıktan sonra jetonu kopyaladığınızdan veya güvenli bir şekilde sakladığınızdan emin olun.

Bir uygulama örneği için geçerli kayıt jetonunu almak için getToken() yöntemini çağırın. Bildirim izni verilmediyse bu yöntem, kullanıcıdan bildirim izinleri ister. Aksi takdirde, jeton döndürür veya bir hata nedeniyle geleceğ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() kullanıcısına iletin:

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

Jeton 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ı engelle

FCM kayıt jetonu oluşturulduğunda kitaplık, tanımlayıcı ve yapılandırma verilerini Firebase'e yükler. Jetonların 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, AndroidManifest.xml cihazınıza aşağıdaki meta veri değerlerini ekleyerek Analytics toplamayı ve FCM otomatik başlatma özelliğini devre dışı bırakın (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şlatmasını yeniden etkinleştir

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

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Bu değer, ayarlandıktan sonra uygulamanın yeniden başlatılmasında da aynı kalır.

Sonraki adımlar

İstemci uygulaması kurulduktan sonra Bildirim oluşturucuyu kullanarak aşağı akış mesajları göndermeye hazır olursunuz. Arka plandaki uygulamaya test mesajı gönderme başlıklı makaleyi inceleyin.

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

Ardından uygulama istemcinizde: