Arka plandaki bir uygulamaya test mesajı gönderme

FCM'yi kullanmaya başlamak için en basit kullanım alanını oluşturun: Uygulama cihazda arka plandayken Bildirimler derleyicisinden 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 Flutter uygulaması oluşturduysanız daha önce tamamladığınız adımları içerebilir.

FCM eklentisini yükleme

  1. Henüz yapmadıysanız Flutter için Firebase SDK'larını 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.

final fcmToken = await FirebaseMessaging.instance.getToken();

Test bildirimi mesajı gönderme

  1. Uygulamayı hedef cihaza yükleyip çalıştırın. Apple cihazlarda uzaktan bildirim almak için izin isteğini kabul etmeniz gerekir.

  2. Uygulamanın cihazda arka planda çalıştığından emin olun.

  3. Firebase konsolunda Mesajlaşma sayfasını açın.

  4. Bu ilk mesajınızsa İlk kampanyanızı oluşturun'u seçin.

    1. Firebase bildirim mesajları'nı ve Oluştur'u seçin.
  5. Aksi takdirde, Kampanyalar sekmesinde Yeni kampanya'yı ve ardından Bildirimler'i seçin.

  6. Mesaj metnini girin. Diğer tüm alanlar isteğe bağlıdır.

  7. Sağ bölmede Test mesajı gönder'i seçin.

  8. FCM kayıt jetonu ekle etiketli alana, bu kılavuzun önceki bir bölümünde edindiğiniz kayıt jetonunu girin.

  9. Test et'i seçin.

Test'i seçtikten sonra, hedeflenen istemci cihaz (arka planda uygulamayla) bildirimi alır.

Uygulamanıza mesaj yayınlama hakkında bilgi edinmek için FCM raporlama kontrol paneline bakın. Bu kontrol panelinde, 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.

Etkileşimi yönetme

Kullanıcılar bir bildirime dokunduğunda hem Android hem de iOS'te varsayılan davranış, uygulamanın açılmasıdır. Uygulama sonlandırılmışsa başlatılır, arka plandaysa ön plana getirilir.

Bildirimin içeriğine bağlı olarak, uygulama açıldığında kullanıcının etkileşimini yönetmek isteyebilirsiniz. Örneğin, bir bildirim kullanılarak yeni bir sohbet mesajı gönderilirse ve kullanıcı bu mesajı seçerse uygulama açıldığında belirli bir ileti dizisini açmak isteyebilirsiniz.

firebase-messaging paketi, bu etkileşimi yönetmenin iki yolunu sunar:

  1. getInitialMessage(): Uygulama, sonlandırılmış bir durumdan açılırsa bu yöntem bir RemoteMessage içeren bir Future döndürür. Kullanıldıktan sonra RemoteMessage kaldırılır.
  2. onMessageOpenedApp: Uygulama arka plan durumundayken açıldığında RemoteMessage yayınlayan bir Stream.

Kullanıcılarınıza sorunsuz bir deneyim sunmak için her iki senaryoyu da ele almanız gerekir. Aşağıdaki kod örneğinde, bunun nasıl yapılabileceği özetlenmiştir:

class Application extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _Application();
}

class _Application extends State<Application> {
  // In this example, suppose that all messages contain a data field with the key 'type'.
  Future<void> setupInteractedMessage() async {
    // Get any messages which caused the application to open from
    // a terminated state.
    RemoteMessage? initialMessage =
        await FirebaseMessaging.instance.getInitialMessage();

    // If the message also contains a data property with a "type" of "chat",
    // navigate to a chat screen
    if (initialMessage != null) {
      _handleMessage(initialMessage);
    }

    // Also handle any interaction when the app is in the background via a
    // Stream listener
    FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
  }

  void _handleMessage(RemoteMessage message) {
    if (message.data['type'] == 'chat') {
      Navigator.pushNamed(context, '/chat',
        arguments: ChatArguments(message),
      );
    }
  }

  @override
  void initState() {
    super.initState();

    // Run code required to handle interacted messages in an async function
    // as initState() must not be async
    setupInteractedMessage();
  }

  @override
  Widget build(BuildContext context) {
    return Text("...");
  }
}

Etkileşimi nasıl ele alacağınız, uygulama kurulumunuza bağlıdır. Yukarıdaki örnekte, StatefulWidget kullanımıyla ilgili temel bir örnek gösterilmektedir.

Sonraki adımlar

Ön plandaki uygulamalara mesaj gönderme

Uygulamanız arka plandayken bildirim mesajlarını başarıyla gönderdikten sonra, ön plandaki uygulamalara mesaj göndermeye başlamak için Flutter Uygulamasında Mesaj Alma başlıklı makaleyi inceleyin.

Bildirim mesajlarının ötesine geçme

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

Ardından uygulama istemcinizde: