onBackgroundMessage
- Flutter kursu
- İleri seviye
- Ders 29/69
- 4 dk
onBackgroundMessage ile arka plan bildirimini öğrenirsin.
onBackgroundMessage nedir?
onBackgroundMessage metodu, uygulama arka plandayken gelen bildirimleri işlemek için üst düzey (top-level) bir fonksiyon kaydeder. Bu fonksiyon ayrı bir isolate içinde çalışır; bu yüzden sınıf içinde veya anonim olarak tanımlanamaz.
Future<void> handler(RemoteMessage msg) async {
print(msg.title);
}
FirebaseMessaging.onBackgroundMessage(handler);vm:entry-point pragma
Arka plan işleyici, ayrı bir isolate'te çalıştığı için yalnızca bağımsız değişkenlerine erişebilir; uygulamanın ana state'ine ulaşamaz. Bu yüzden handler fonksiyonu üst düzey olmalı ve @pragma('vm:entry-point') ile işaretlenmelidir.
@pragma('vm:entry-point')
Future<void> handler(RemoteMessage msg) async {
print(msg.title);
}Uygulama Arka plan işleyici yaz
Üst düzey handler fonksiyonu yaz: Future<void> döndürsün, RemoteMessage alsın ve message.title'ı yazdırsın. main içinde işleyiciyi FirebaseMessaging.onBackgroundMessage ile kaydet ve RemoteMessage('Merhaba') ile çağır.
Başlangıç kodu
class RemoteMessage {
final String title;
RemoteMessage(this.title);
}
class FirebaseMessaging {
static final FirebaseMessaging instance = FirebaseMessaging._();
FirebaseMessaging._();
static void onBackgroundMessage(Function handler) {}
}
// arka plan işleyici fonksiyonu yaz
// üst düzey ve async olmalı, message.title yazdırsın
void main() async {
// işleyiciyi kaydet
// işleyiciyi RemoteMessage('Merhaba') ile çağır
}Örnek çözüm
class RemoteMessage {
final String title;
RemoteMessage(this.title);
}
class FirebaseMessaging {
static final FirebaseMessaging instance = FirebaseMessaging._();
FirebaseMessaging._();
static void onBackgroundMessage(Function handler) {}
}
Future<void> handler(RemoteMessage message) async {
print(message.title);
}
void main() async {
FirebaseMessaging.onBackgroundMessage(handler);
await handler(RemoteMessage('Merhaba'));
}Beklenen çıktı
Merhaba
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Arka plan bildirim işleyicisi nasıl tanımlanmalı?
- Bir widget build metodu içinde
- Yalnızca main içinde anonim fonksiyon olarak
- Bir sınıfın içinde instance metot olarak
- Üst düzey (top-level) ve async bir fonksiyon olarak Doğru cevap
Açıklama: Arka plan işleyicisi ayrı bir isolate'te çalıştığı için üst düzey bir fonksiyon olmalıdır; sınıf içinde veya anonim olarak tanımlanamaz.
2 İşleyici kaydet
FirebaseMessaging.____;
FirebaseMessaging.onBackgroundMessage(handler);
Açıklama: Arka plan işleyicisini kaydetmek için FirebaseMessaging.onBackgroundMessage çağrılır ve handler fonksiyonu parametre olarak verilir.
3 onBackgroundMessage parçaları
| Kavram | Anlamı |
|---|---|
onBackgroundMessage |
Arka plan işleyici kaydı |
top-level function |
Üst düzey fonksiyon |
isolate |
Ayrı yürütme ortamı |
background |
Uygulama arka planda |