1. Giriş
Son Güncelleme: 2022-04-04
Bu codelab'de, Flutter kullanarak Firebase Cloud Messaging (FCM) ile çok platformlu bir uygulama geliştirme süreci adım adım açıklanmaktadır. Uygulamanın bir bölümünü yazıp Android, iOS ve web olmak üzere üç platformda sorunsuz bir şekilde derleyip çalıştıracaksınız. Ayrıca, FCM'yi Flutter'a nasıl entegre edeceğinizi ve mesaj alıp göndermek için nasıl kod yazacağınızı da öğreneceksiniz. Son olarak, bu codelab'de FCM HTTP v1 API'nin platforma özel bloklar özelliği tanıtılmaktadır. Bu özellik, farklı platformlarda farklı davranışlara sahip tek bir mesaj göndermenize olanak tanır.
Ön koşul
Flutter hakkında temel bilgi
Neler öğreneceksiniz?
- Flutter uygulaması oluşturma ve ayarlama
- FCM bağımlılıkları ekleme
- Uygulamanıza tek FCM mesajları gönderme
- Uygulamanıza konu başlığı FCM mesajları gönderme
Gerekenler
- Dart ve Flutter eklentileriyle yapılandırılmış en son kararlı Android Studio sürümü.
Codelab'i aşağıdaki cihazlardan herhangi birini kullanarak çalıştırabilirsiniz:
- Bilgisayarınıza bağlı fiziksel bir Android cihaz.
- Android emülatörü (bkz. Uygulamaları Android emülatöründe çalıştırma)
- Chrome gibi istediğiniz bir tarayıcı
İsteğe bağlı olarak, iOS platformunu kullanarak codelab'i çalıştırmak için bir iOS cihaz, bir Apple Developer hesabı ve XCode'un yüklü olduğu bir macOS cihaz gerekir.
2. Flutter kurulumu
Flutter geliştirme ortamınız zaten kuruluysa bu bölümü atlayın.
Flutter geliştirme ortamı ayarlamak için aşağıdaki adımları uygulayın:
- İşletim sisteminiz için Flutter'ı indirip yükleyin: Install | Flutter
- Flutter aracının yolunuza eklendiğinden emin olun.
- Set up an editor | Flutter (Bir düzenleyici kurma | Flutter) başlıklı makalede gösterildiği gibi Flutter için düzenleyicinizi kurun. Düzenleyiciniz için Flutter ve Dart eklentilerini yüklediğinizden emin olun. Bu codelab'in geri kalanında Android Studio'yu kullanacaksınız.
- Komut satırından
flutter doctor
komutunu çalıştırın. Bu komut, kurulumunuzu tarar ve düzeltilmesi gereken eksik bağımlılıkları listeler. Eksik olan önemli bağımlılıkları düzeltmek için talimatları uygulayın. Bazı bağımlılıkların gerekli olmayabileceğini unutmayın. Örneğin, iOS için geliştirme yapmayacaksanız eksik bir CocoaPods bağımlılığı engelleyici bir sorun olmaz. - Flutter uygulamanızı
fcmflutter
dizininde oluşturmak için bu komutu çalıştırınflutter create --org com.flutter.fcm --project-name fcmflutter fcmflutter
ve ardından dizinlerifcmflutter
olarak değiştirin.
- Android Studio'da File -> Open'a (Dosya -> Aç) gidin, Flutter uygulamanızın yolunu bulun ve Open'ı (Aç) tıklayarak projeyi Android Studio'da açın. Uygulama kodu,
lib/main.dart
dosyasındadır.
Android Studio araç çubuğunda, bir Android cihaz seçmek için aşağı oku tıklayın. Hedef seçici boşsa sanal Android cihazlar'ı veya uygulamayı bir web tarayıcısından ya da iOS cihazdan başlatmayı tercih ediyorsanız Chrome tarayıcı'yı veya iOS simülatörünü yükleyin. Hedef cihazı bulmak için cihazı manuel olarak başlatmanız ve listeyi yenilemeniz gerekebilir.
Uygulamayı başlatmak için Çalıştır 'ı tıklayın.
Tebrikler! Flutter uygulamasını başarıyla oluşturdunuz.
3. Firebase ve FlutterFire kurulumu
Flutter kullanarak Firebase Cloud Messaging ile entegre olan bir uygulama geliştirmek için şunlara ihtiyacınız vardır:
- Bir Firebase projesi.
- Çalışan bir Firebase CLI.
- FlutterFire'ın yüklü olması gerekir.
flutterfire configure
ile yapılandırılmış ve oluşturulmuş bir uygulama.
Firebase projenizi oluşturun
Firebase projeniz varsa bu adımı atlayabilirsiniz.
- Google Hesabınızı kullanarak Firebase konsolunda oturum açın.
- Yeni bir proje oluşturmak için düğmeyi tıklayın ve ardından bir proje adı girin (örneğin,
fcm4flutter
).
- Devam'ı tıklayın.
- İstenirse Firebase şartlarını inceleyip kabul edin ve Devam'ı tıklayın.
- (İsteğe bağlı) Firebase konsolunda yapay zeka yardımını etkinleştirin ("Firebase'de Gemini" olarak adlandırılır).
- Bu codelab için Google Analytics'e ihtiyacınız yoktur. Bu nedenle, Google Analytics seçeneğini devre dışı bırakın.
- Proje oluştur'u tıklayın, projenizin hazırlanmasını bekleyin ve ardından Devam'ı tıklayın.
Tebrikler! Firebase projesini başarıyla oluşturdunuz.
Firebase CLI'yı ayarlama
Firebase CLI'yi kurduysanız bu adımı atlayabilirsiniz.
Firebase CLI'yı indirip yüklemek için Firebase CLI referansına gidin. Aşağıdaki komutu kullanarak Google Hesabınızla Firebase'e giriş yapın:
firebase login
FlutterFire'ı ayarlama
- FlutterFire eklentisini şu komutu kullanarak yükleyin:
flutter pub add firebase_core
- FCM eklentisini yükleyin:
flutter pub add firebase_messaging
- FlutterFire CLI'yi ayarlayın:
dart pub global activate flutterfire_cli
- Firebase projesini Flutter'da yapılandırın:
flutterfire configure --project=fcm4flutter.
Platformları seçmek için ok tuşlarını ve boşluk tuşunu kullanın veya varsayılan platformları kullanmak için Enter tuşuna basın.
Bu codelab'de varsayılan platformlar (Android, iOS ve web) kullanılır ancak yalnızca bir veya iki platform seçebilirsiniz. iOS paket kimliği istenirse com.flutter.fcm.fcmflutter
veya [company domain name].[project name]
biçiminde kendi iOS paket kimliğinizi girin. Komut tamamlandıktan sonra Firebase Console sayfasını yenileyin. Firebase projesi altında seçilen platformlar için uygulamalar oluşturulduğunu görürsünüz.
Bu komut, başlatma için gereken tüm seçenekleri içeren lib
dizini altında bir firebase_options.dart
dosyası oluşturur.
iOS için Cloud Messaging'i ayarlama
- Apple geliştirici sayfasına gidin ve Anahtarlar sekmesinde Anahtar oluştur'u tıklayın.
- Anahtarın adını girin ve Apple anında bildirim hizmetleri (APNs)'ni işaretleyin.
.p8
dosya uzantılı anahtar dosyasını indirin.- Firebase konsolunda projenin Proje Ayarları'na gidin ve Cloud Messaging sekmesini seçin.
- Cloud Messaging sekmesinde iOS uygulaması için APNs anahtar dosyasını yükleyin. Cloud Messaging sekmesindeki APNs anahtar kimliğini ve Apple üyelik merkezinde bulabileceğiniz ekip kimliğini girin.
4. FCM hazırlığı
Bir uygulamanın FCM'den mesaj alabilmesi için:
- FlutterFire'ı başlatın.
- Bildirim izinleri isteyin.
- Kayıt jetonu almak için FCM'ye kaydolun.
İlk kullanıma hazırlama
Hizmeti başlatmak için ana işlevi (lib/main.dart
) aşağıdaki kodla değiştirin:
// core Flutter primitives
import 'package:flutter/foundation.dart';
// core FlutterFire dependency
import 'package:firebase_core/firebase_core.dart';
// generated by
flutterfire configure
import 'firebase_options.dart';
// FlutterFire's Firebase Cloud Messaging plugin
import 'package:firebase_messaging/firebase_messaging.dart';
// TODO: Add stream controller
// TODO: Define the background message handler
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// TODO: Request permission
// TODO: Register with FCM
// TODO: Set up foreground message handler
// TODO: Set up background message handler
runApp(MyApp());
}
Ardından, FlutterFire'ı ayarlama bölümünde eklenen paketleri yüklemek için Android Studio'da Tools -> Flutter -> Flutter Pub Get'i çalıştırın ve kodu Android Studio'da uygun Intellisense ayarıyla görüntüleyin.
Bu, oluşturulan firebase_options.dart
dosyasından içe aktarılan geçerli platform DefaultFirebaseOptions.currentPlatform
için FlutterFire'ı başlatır. initializeApp
işlevinin eşzamansız olduğunu ve await
anahtar kelimesinin, uygulama çalıştırılmadan önce başlatma işleminin tamamlanmasını sağladığını unutmayın.
İzin iste
Uygulama, bildirim almak için kullanıcının iznini istemelidir. firebase_messaging
tarafından sağlanan requestPermission
yöntemi, kullanıcıya izin verme veya izni reddetme istemi gösteren bir iletişim kutusu ya da pop-up gösterir.
Öncelikle bu kodu TODO: Request permission
yorumunun altındaki ana işleve kopyalayın. Döndürülen settings
, kullanıcının izin verip vermediğini gösterir. Yalnızca kullanıcının erişim gerektiren bir özelliği kullanması gerektiğinde (ör. kullanıcı, uygulama ayarlarında bildirimleri etkinleştirdiğinde) izin istemenizi öneririz. Bu codelab'de, basit olması açısından uygulama başlatılırken izin isteğinde bulunuyoruz.
final messaging = FirebaseMessaging.instance;
final settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
if (kDebugMode) {
print('Permission granted: ${settings.authorizationStatus}');
}
Ardından, Android Studio araç çubuğunda hedef seçiciden Chrome (web)
simgesini seçin ve uygulamayı tekrar çalıştırın.
Ardından, izin isteyen bir pop-up ile Chrome sekmesi açılır. Allow
seçeneğini tıklarsanız Android Studio konsolunda Permission granted: AuthorizationStatus.authorized
şeklinde bir günlük görürsünüz. İzin isteğini kabul ettikten veya engelledikten sonra yanıtınız tarayıcıda uygulamanızla birlikte depolanır ve pop-up tekrar gösterilmez. Web uygulamasını Android Studio'da tekrar çalıştırdığınızda izni tekrar vermeniz istenebilir.
Kayıt
FCM'ye kaydolmak için bu kodu aşağıdaki yorumun TODO: Register with FCM
altındaki ana işlevin içine kopyalayın. getToken
çağrısı, uygulama sunucusu veya güvenilir sunucu ortamı tarafından kullanıcılara mesaj göndermek için kullanılabilecek bir kayıt jetonu döndürür.
// It requests a registration token for sending messages to users from your App server or other trusted server environment.
String? token = await messaging.getToken();
if (kDebugMode) {
print('Registration Token=$token');
}
Android Studio araç çubuğunda bir Android cihaz seçin ve uygulamayı çalıştırın. Android Studio konsolunda kayıt jetonu şu şekilde yazdırılır:
I/flutter ( 3717): Permission granted: AuthorizationStatus.authorized I/flutter ( 3717): Registration Token=dch. . . D2P:APA9. . .kbb4
Daha sonra mesaj göndermek için kullanacağınızdan, kodu bir metin düzenleyiciye kopyalayın.
uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:firebase_messaging]
Web'de mesaj almak için ek adımlar
Web uygulamalarının kayıt jetonunu alması ve gelen mesajları dinlemesi için iki ek adım gerekir. Web, desteklenen web push hizmetlerine gönderme isteklerini yetkilendirmek için getToken
'ye bir VAPID anahtarı iletmelidir.
Öncelikle Firebase Console'da Firebase projesinin Cloud Messaging sekmesini açın, mevcut anahtar çiftini bulmak için Web yapılandırması bölümüne gidin veya yeni bir anahtar çifti oluşturun. Anahtarı kopyalamak için vurgulanan düğmeyi tıklayın. Böylece anahtar, vapidKey olarak kullanılabilir.
Ardından, Kayıt bölümündeki kayıt kodunu bu kodla değiştirin ve vapidKey'i güncelleyin:
// TODO: replace with your own VAPID key
const vapidKey = "<YOUR_PUBLIC_VAPID_KEY_HERE>";
// use the registration token to send messages to users from your trusted server environment
String? token;
if (DefaultFirebaseOptions.currentPlatform == DefaultFirebaseOptions.web) {
token = await messaging.getToken(
vapidKey: vapidKey,
);
} else {
token = await messaging.getToken();
}
if (kDebugMode) {
print('Registration Token=$token');
}
Ardından, projenizin kökündeki web/
dizininin altında bir firebase-messaging-sw.js
dosyası oluşturun. Web uygulamasının onMessage
etkinlikleri almasına izin vermek için aşağıdakileri firebase-messaging-sw.js
'ya kopyalayın. Daha fazla bilgi için Setting notification options in the service worker (Servis çalışanı bildirim seçeneklerini ayarlama) başlıklı makaleyi inceleyin.
importScripts("https://www.gstatic.com/firebasejs/9.6.10/firebase-app-compat.js");
importScripts("https://www.gstatic.com/firebasejs/9.6.10/firebase-messaging-compat.js");
// todo Copy/paste firebaseConfig from Firebase Console
const firebaseConfig = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "...",
appId: "...",
};
firebase.initializeApp(firebaseConfig);
const messaging = firebase.messaging();
// todo Set up background message handler
Ardından, Proje Ayarları -> Genel sekmesinde aşağı kaydırıp Web Uygulaması'nı bulun, firebaseConfig
kod bölümünü kopyalayıp firebase-messaging-sw.js
'ye yapıştırın.
Son olarak, Android Studio araç çubuğunda hedef seçicide Chrome (web)
simgesini seçin ve uygulamayı çalıştırın. Android Studio konsolunda kayıt jetonu şu şekilde yazdırılır:
Debug service listening on ws://127.0.0.1:61538/BLQQ3Fg-h7I=/ws Permission granted: AuthorizationStatus.authorized Registration Token=fH. . .ue:APA91. . .qwt3chpv
Kayıt jetonunu bir metin düzenleyiciye kopyalayın. Böylece, daha sonra mesaj göndermek için kullanabilirsiniz.
iOS'te mesaj almak için ek adımlar
iOS cihazların FCM'den mesaj alabilmesi için Xcode'da Push Notifications (Push Bildirimleri) ve Background Modes (Arka Plan Modları) etkinleştirilmelidir:
- Android Studio'da proje adını sağ tıklayın ve Flutter -> Open iOS module in Xcode'u (Xcode'da iOS modülünü aç) seçin.
- Xcode başlatıldıktan sonra proje hedefi için Signing & Capabilities (İmzalama ve Özellikler) sekmesinde Push Notifications (Push Bildirimleri) ve Background Modes'u (Arka Plan Modları) etkinleştirin. Daha fazla bilgi için Uygulamanızı yapılandırma başlıklı makaleyi inceleyin.
- Android Studio araç çubuğunda hedef seçicide bir iOS cihaz seçin ve uygulamayı çalıştırın. Bildirim izni verildikten sonra kayıt jetonu Android Studio konsoluna yazdırılır.
Tebrikler, uygulamanızı FCM'ye başarıyla kaydettiniz. Bir sonraki bölümde açıklandığı gibi mesaj almaya hazırsınız.
5. FCM'den mesaj alma
Mesaj işleyicileri ayarlama
Uygulama, ön plan modundayken mesajlar geldiğinde onMessage
etkinliklerini, arka plandayken ise onBackgroundMessage
etkinliklerini işlemelidir.
Ön plan mesajı işleyicisi
Öncelikle, etkinlik işleyiciden kullanıcı arayüzüne ileti geçirmek için main.dart
dosyasındaki TODO: Add stream controller
yorumundan sonra bir akış denetleyicisi ekleyin.
import 'package:rxdart/rxdart.dart';
// used to pass messages from event handler to the UI
final _messageStreamController = BehaviorSubject<RemoteMessage>();
rxdart bağımlılığını eklemek için proje dizininden şu komutu çalıştırın: flutter pub add rxdart
.
Ardından, rxdart.dart
paketini yüklemek ve kodu Android Studio'da uygun Intellisense ayarlarıyla görüntülemek için Android Studio'da Tools -> Flutter -> Flutter Pub Get'i çalıştırın.
Ardından, yorum TODO: Set up foreground message handler
sonrasında ön plandaki mesajları dinlemek için bir etkinlik işleyici ekleyin. Günlükleri yazdırır ve mesajı akış denetleyicisine yayınlar.
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
if (kDebugMode) {
print('Handling a foreground message: ${message.messageId}');
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
_messageStreamController.sink.add(message);
});
Ardından, main.dart
dosyasındaki orijinal State widget'ını, State widget'ındaki akış denetleyicisine abone ekleyen ve son mesajı widget'ta görüntüleyen bu kodla değiştirin.
class _MyHomePageState extends State<MyHomePage> {
String _lastMessage = "";
_MyHomePageState() {
_messageStreamController.listen((message) {
setState(() {
if (message.notification != null) {
_lastMessage = 'Received a notification message:'
'\nTitle=${message.notification?.title},'
'\nBody=${message.notification?.body},'
'\nData=${message.data}';
} else {
_lastMessage = 'Received a data message: ${message.data}';
}
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Last message from Firebase Messaging:',
style: Theme.of(context).textTheme.titleLarge),
Text(_lastMessage, style: Theme.of(context).textTheme.bodyLarge),
],
),
),
);
}
}
Android/iOS için arka plan mesajı işleyicisi
Uygulama arka plandayken mesajlar onBackgroundMessage
işleyicisi tarafından işlenir. İşleyici, üst düzey bir işlev olmalıdır. Uygulama ön plana getirildiğinde mesajlar işlenerek (bkz. Etkileşimi işleme) veya uygulama sunucusuyla senkronize edilerek kullanıcı arayüzü güncellenebilir.
İşleyici işlevini, ana işlevin dışında TODO: Define the background message handler
yorumundan sonra oluşturun ve TODO: Set up background message handler
yorumundan sonra ana işlevde çağırın.
// TODO: Define the background message handler
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
if (kDebugMode) {
print("Handling a background message: ${message.messageId}");
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
}
void main() {
...
// TODO: Set up background message handler
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
Web için arka plan mesajı işleyicisi
FlutterFire firebase_messaging 11.2.8 sürümünden itibaren, web tabanlı platformlarda arka plan mesajlarının işlenmesi için farklı bir akış gerekir. Bu nedenle, hizmet çalışanına ayrı bir mesaj işleyici eklemeniz gerekir web/firebase-messaging-sw.js
.
messaging.onBackgroundMessage((message) => {
console.log("onBackgroundMessage", message);
});
Uygulama sunucusunu ayarlama
- https://github.com/FirebaseExtended/firebase_fcm_flutter/tree/main/server projesini Android Studio'da açarak başlangıç sunucusu kodunu içe aktarın. Sunucu, FCM mesajı gönderme işlevini sağlayan firebase-admin SDK'sına bağımlı, Gradle tabanlı bir Java projesidir.
- Firebase Admin SDK'nın FCM API'lerine yapılan çağrıları yetkilendirmesine olanak tanıyan bir Firebase hizmet hesabı oluşturun. Firebase konsolunda Proje Ayarları'nı açın ve Hizmet hesapları sekmesini seçin. "Java"yı seçin ve yapılandırma snippet'ini indirmek için
Generate new private key
simgesini tıklayın. - Dosyayı
service-account.json
olarak yeniden adlandırın ve sunucu projesininsrc/main/resources
yoluna kopyalayın.
Test mesajı gönderme
FcmSender.java
dosyasında, sendMessageToFcmRegistrationToken
veri yükü içeren bir bildirim mesajı oluşturur. Kayıt jetonu, iletinin gönderildiği uygulama örneğini hedefler.
private static void sendMessageToFcmRegistrationToken() throws Exception {
String registrationToken = "REPLACE_WITH_FCM_REGISTRATION_TOKEN";
Message message =
Message.builder()
.putData("FCM", "https://firebase.google.com/docs/cloud-messaging")
.putData("flutter", "https://flutter.dev/")
.setNotification(
Notification.builder()
.setTitle("Try this new app")
.setBody("Learn how FCM works with Flutter")
.build())
.setToken(registrationToken)
.build();
FirebaseMessaging.getInstance().send(message);
System.out.println("Message to FCM Registration Token sent successfully!!");
}
- Kayıt bölümünden kopyalanan Android kayıt jetonunu kopyalayın ve
registrationToken
değişkeninin değerine yapıştırın. - Ana işlevi çalıştırmak ve iletiyi FCM aracılığıyla kullanıcıya göndermek için Çalıştır 'ı (
) tıklayın.
Android uygulaması arka plandayken mesaj, bildirim tepsisinde görünür.
Android uygulaması ön planda olduğunda Android Studio konsolunda "Handling a foreground message" (Ön plan mesajı işleniyor) şeklinde bir günlük görürsünüz. Kullanıcı arayüzü, yeni iletiler için akış denetleyicisine abone olduğundan ileti içeriği de kullanıcı arayüzünde gösterilir.
Kayıt jetonunu yapıştırıp mesajı uygulama sunucusundan veya başka bir güvenilir sunucu ortamından gönderirseniz benzer bir davranışla karşılaşırsınız:
- Web uygulaması arka planda olduğunda (ör. başka bir pencere tarafından gizlendiğinde veya başka bir sekme etkin olduğunda) bir web bildirimi görürsünüz.
- Web uygulaması ön planda olduğunda, web'i sağ tıklayıp
Inspect
seçeneğini belirleyerek Chrome Konsolu'nda günlüğü görüntüleyebilirsiniz. Mesaj içeriği de kullanıcı arayüzünde gösterilir.
6. Konu mesajı gönderme
FCM HTTP v1 API'nin platform geçersiz kılma özelliği, bir mesaj gönderme isteğinin farklı platformlarda farklı davranışlar sergilemesini sağlar. Bu özelliğin bir kullanım alanı, platforma göre farklı bildirim mesajı içerikleri göstermektir. Bu özellik, konu mesajlaşmasıyla birden fazla cihaz (birden fazla platformu kapsayabilir) hedeflendiğinde en iyi şekilde kullanılır. Bu bölümde, uygulamanızın her platform için özelleştirilmiş bir konu mesajı almasını sağlamak üzere uygulamanız gereken adımlar açıklanmaktadır.
İstemciden bir konuya abone olma
Bir konuya abone olmak için Flutter uygulamasının main.dart
dosyasındaki ana işlevin sonunda messaging.subscribeToTopic
yöntemini çağırın.
// subscribe to a topic.
const topic = 'app_promotion';
await messaging.subscribeToTopic(topic);
[İsteğe bağlı] Web için sunucudaki bir konuya abone olma
Web platformunda geliştirme yapmıyorsanız bu bölümü atlayabilirsiniz.
FCM JS SDK şu anda istemci tarafında konu aboneliğini desteklemiyor. Bunun yerine, Admin SDK'nın sunucu tarafı konu yönetimi API'sini kullanarak abone olabilirsiniz. Bu kod, Java Admin SDK ile sunucu tarafında konu aboneliğini gösterir.
private static void subscribeFcmRegistrationTokensToTopic() throws Exception {
List<String> registrationTokens =
Arrays.asList(
"REPLACE_WITH_FCM_REGISTRATION_TOKEN"); // TODO: add FCM Registration Tokens to
// subscribe
String topicName = "app_promotion";
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(registrationTokens, topicName);
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
}
Uygulama sunucusunu açın ve FcmSubscriptionManager.java
dosyasındaki ana işlevi çalıştırmak için Run 'ı (Çalıştır) tıklayın:
Bir konuya platform geçersiz kılmalarla mesaj gönderme
Artık konu platformu geçersiz kılma mesajı göndermeye hazırsınız. Aşağıdaki kod snippet'inde:
- Temel mesaj ve "
A new app is available
" başlığıyla bir gönderme isteği oluşturursunuz. - Bu mesaj, iOS ve web platformlarında "
A new app is available
" başlıklı bir görüntülü bildirim oluşturur. - Bu mesaj, Android cihazlarda "
A new Android app is available
" başlıklı bir görüntüleme bildirimi oluşturur.
private static void sendMessageToFcmTopic() throws Exception {
String topicName = "app_promotion";
Message message =
Message.builder()
.setNotification(
Notification.builder()
.setTitle("A new app is available")
.setBody("Check out our latest app in the app store.")
.build())
.setAndroidConfig(
AndroidConfig.builder()
.setNotification(
AndroidNotification.builder()
.setTitle("A new Android app is available")
.setBody("Our latest app is available on Google Play store")
.build())
.build())
.setTopic("app_promotion")
.build();
FirebaseMessaging.getInstance().send(message);
System.out.println("Message to topic sent successfully!!");
}
FcmSender.java
dosyasının ana işlevinde sendMessageToFcmTopic();
yorumunu kaldırın. Konu mesajını göndermek için Çalıştır 'ı tıklayın.
7. Özet ve sonraki adımlar
Özetle, Flutter ve FCM kullanarak ilgi çekici çok platformlu uygulama geliştirme hakkında bilgi edindiniz. Bu bilgiler arasında ortam kurulumu, bağımlılık entegrasyonu, mesaj alma ve gönderme yer alıyor. Daha ayrıntılı bilgi için aşağıdaki materyallere göz atın:
Codelabs
- Flutter'ın kullanıcı kimlik doğrulaması ve verileri senkronize etme dahil olmak üzere diğer Firebase ürünleriyle nasıl çalıştığı hakkında daha fazla bilgi edinmek için Flutter için Firebase'i tanıma başlıklı makaleyi inceleyin.
- Uygulama içi mesajlaşma ve konular dahil olmak üzere FCM hakkında daha fazla bilgi edinmek için: Kullanıcılara mesaj göndermek için FCM ve FIAM'yi kullanma ve FCM konularını kullanarak ilk çoklu yayın push mesajınızı gönderme