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 Bildirim oluşturucu'dan bir geliştirme cihazına test bildirimi mesajı gönderme. Bu sayfada, kurulumdan doğrulamaya kadar bu hedefe ulaşmak için gereken tüm adımlar listelenir. FCM için Flutter uygulaması ayarladıysanız daha önce tamamladığınız adımlar da bu listede yer alabilir.

FCM eklentisini yükleme

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

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 alma izni 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 Notification 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. Add an FCM registration token (FCM kayıt jetonu ekle) etiketli alana, bu kılavuzun önceki bir bölümünde aldığınız kayıt jetonunu girin.

  9. Test et'i seçin.

Test'i seçtikten sonra, hedef istemci cihaz (uygulama arka planda çalışırken) bildirimi almalıdır.

Uygulamanıza mesaj teslimi hakkında bilgi edinmek için FCM raporlama kontrol paneline bakın. Bu kontrol paneli, Apple ve Android cihazlarda gönderilen ve açılan mesajların sayısını kaydeder. Ayrıca Android uygulamaları için "gösterim" (kullanıcıların gördüğü bildirimler) verilerini de içerir.

Etkileşimi işleme

Kullanıcılar bir bildirime dokunduğunda hem Android hem de iOS'te varsayılan davranış uygulamayı açmaktır. Uygulama sonlandırılırsa 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, bildirim kullanılarak yeni bir sohbet mesajı gönderildiğinde ve kullanıcı bunu seçtiğinde uygulama açıldığında söz konusu görüşmeyi açmak isteyebilirsiniz.

firebase-messaging paketi, bu etkileşimi ele almanın iki yolunu sunar:

  1. getInitialMessage(): Uygulama sonlandırılmış bir durumdan açılırsa bu yöntem, RemoteMessage içeren bir Future döndürür. RemoteMessage kullanıldıktan sonra kaldırılır.
  2. onMessageOpenedApp: Uygulama arka plan durumundan 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 bu işlemin nasıl yapılabileceği açıklanmaktadır:

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ına dair temel bir örnek gösterilmektedir.

Sonraki adımlar

Ön planda çalışan uygulamalara mesaj gönderme

Uygulamanız arka plandayken bildirim mesajlarını başarıyla gönderdikten sonra, ön plana çıkarılan uygulamalara göndermeye başlamak için Flutter Uygulamasında Mesaj Alma bölümüne bakın.

Bildirim mesajlarının ötesine geçme

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

Ardından, uygulama istemcinizde: