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
Henüz yapmadıysanız Flutter için Firebase SDK'larını yükleyip başlatın.
Flutter projenizin kökünden aşağıdaki komutu çalıştırarak eklentiyi yükleyin:
flutter pub add firebase_messaging
İş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
Uygulamayı hedef cihaza yükleyip çalıştırın. Apple cihazlarda uzaktan bildirim almak için izin isteğini kabul etmeniz gerekir.
Uygulamanın cihazda arka planda çalıştığından emin olun.
Firebase konsolunda Mesajlaşma sayfasını açın.
Bu ilk mesajınızsa İlk kampanyanızı oluşturun'u seçin.
- Firebase bildirim mesajları'nı ve Oluştur'u seçin.
Aksi takdirde, Kampanyalar sekmesinde Yeni kampanya'yı ve ardından Bildirimler'i seçin.
Mesaj metnini girin. Diğer tüm alanlar isteğe bağlıdır.
Sağ bölmede Test mesajı gönder'i seçin.
FCM kayıt jetonu ekle etiketli alana, bu kılavuzun önceki bir bölümünde edindiğiniz kayıt jetonunu girin.
Test et'i seçin.
Test'i seçtikten sonra, hedeflenen istemci cihaz (uygulamanın arka planda olduğu cihaz) 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:
getInitialMessage()
: Uygulama sonlandırılmış bir durumdan açılırsa bu yöntem,RemoteMessage
içeren birFuture
döndürür. Kullanıldıktan sonraRemoteMessage
kaldırılır.onMessageOpenedApp
: Uygulama arka plan durumundayken açıldığındaRemoteMessage
yayınlayan birStream
.
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: