Bu hızlı başlangıç kılavuzunda, mesajları güvenilir bir şekilde gönderebilmeniz için Firebase Cloud Messaging özelliğini mobil ve web istemci uygulamalarınızda nasıl ayarlayacağınız açıklanmaktadır. Sunucu ortamları için Sunucu ortamınız ve
FCM başlıklı makaleyi inceleyin.
Flutter'da Firebase Cloud Messaging istemci uygulaması oluşturma
Hedeflediğiniz platforma bağlı olarak, yapmanız gereken bazı ek kurulum adımları vardır.
iOS+
Yöntem dönüşümü
Apple cihazlarda FCM Flutter eklentisini kullanmak için yöntem karıştırma gereklidir. Bu olmadan FCM jeton işleme gibi temel Firebase özellikleri düzgün çalışmaz.
Android
Google Play hizmetleri
FCM istemcileri, Android 4.4 veya sonraki sürümlerin yüklü olduğu ve Google Play Hizmetleri'nin de yüklü olduğu cihazlar ya da Google API'leri ile Android 4.4 çalıştıran bir emülatör gerektirir. Android uygulamalarınızı yalnızca Google Play Store üzerinden dağıtmakla sınırlı olmadığınızı unutmayın.
Play Hizmetleri SDK'sını kullanan uygulamalar, Google Play Hizmetleri özelliklerine erişmeden önce cihazda her zaman uyumlu bir Google Play Hizmetleri APK'sı olup olmadığını kontrol etmelidir. Bunu iki yerde yapmanız önerilir: ana etkinliğin onCreate()
yönteminde ve onResume()
yönteminde. onCreate()
içindeki kontrol, uygulamanın başarılı bir kontrol olmadan kullanılamamasını sağlar. Check-in onResume()
, kullanıcı çalışan uygulamaya geri düğmesi gibi başka bir yolla dönerse kontrolün yine de yapılmasını sağlar.
Cihazda Google Play Hizmetleri'nin uyumlu bir sürümü yoksa uygulamanız, kullanıcıların Play Store'dan Google Play Hizmetleri'ni indirmesine izin vermek için GoogleApiAvailability.makeGooglePlayServicesAvailable()
işlevini çağırabilir.
Web
FCM ile web kimlik bilgilerini yapılandırma
FCM Web arayüzü, desteklenen web push hizmetlerine gönderme isteklerini yetkilendirmek için Voluntary Application Server Identification (Gönüllü Uygulama Sunucusu Tanımlama) veya "VAPID" anahtarları olarak adlandırılan web kimlik bilgilerini kullanır. Uygulamanızın push bildirimlerine abone olması için Firebase projenizle bir anahtar çifti ilişkilendirmeniz gerekir. Firebase konsolu aracılığıyla yeni bir anahtar çifti oluşturabilir veya mevcut anahtar çiftinizi içe aktarabilirsiniz.
FCM eklentisini yükleme
Henüz yapmadıysanız Flutter için Firebase eklentilerini yükleyip başlatın.
Eklentiyi yüklemek için Flutter projenizin kökünden aşağıdaki komutu çalıştırın:
flutter pub add firebase_messaging
İş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. Bir uygulama örneğinin 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.
// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);
// For apple platforms, make sure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
// APNS token is available, make FCM plugin API requests...
}
Web platformlarında VAPID ortak anahtarınızı getToken()
adresine iletin:
final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");
Jeton her güncellendiğinde bildirim almak için onTokenRefresh
akışına abone olun:
FirebaseMessaging.instance.onTokenRefresh
.listen((fcmToken) {
// TODO: If necessary send token to application server.
// Note: This callback is fired at each app startup and whenever a new
// token is generated.
})
.onError((err) {
// Error getting token.
});
Otomatik başlatmayı önleme
FCM kayıt jetonu oluşturulduğunda kitaplık, tanımlayıcıyı ve yapılandırma verilerini Firebase'e yükler. Jetonun otomatik olarak oluşturulmasını önlemek isterseniz derleme sırasında otomatik başlatmayı devre dışı bırakın.
iOS
iOS'te Info.plist
öğenize meta veri değeri ekleyin:
FirebaseMessagingAutoInitEnabled = NO
Android
Android'de, bu meta veri değerlerini AndroidManifest.xml
öğenize ekleyerek Analytics toplama ve FCM otomatik başlatma işlemlerini devre dışı bırakın (her ikisini de devre dışı bırakmanız gerekir):
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
Çalışma zamanında FCM otomatik başlatmayı yeniden etkinleştirme
Belirli bir uygulama örneği için otomatik başlatmayı etkinleştirmek üzere setAutoInitEnabled()
işlevini çağırın:
await FirebaseMessaging.instance.setAutoInitEnabled(true);
Bu değer, ayarlandıktan sonra uygulama yeniden başlatıldığında da geçerliliğini korur.
Test bildirimi mesajı gönderme
- Uygulamayı hedef cihaza yükleyip çalıştırın. Apple cihazlarda, uzaktan bildirim alma izni isteğini kabul etmeniz gerekir.
- Uygulamanın cihazda arka planda çalıştığından emin olun.
- Firebase konsolunda Messaging sayfasını açın.
- Bu ilk mesajınızsa İlk kampanyanızı oluşturun'u seçin.
- Firebase Notification 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.
- Sağ bölmede Test mesajı gönder'i seçin.
- Add an FCM registration token (FCM kayıt jetonu ekleyin) etiketli alana kayıt jetonunuzu girin.
- Test et'i seçin.
Test'i seçtikten sonra, uygulama arka plandayken hedeflenen istemci cihazı bildirimi almalıdır.
Uygulamanıza ileti 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 ileti sayısını, Android uygulamaları için gösterim verileriyle birlikte kaydeder.
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ı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, bildirim kullanılarak yeni bir sohbet mesajı gönderildiyse ve kullanıcı bunu seçtiyse uygulama açıldığında ilgili görüşmeyi açmak isteyebilirsiniz.
firebase-messaging
paketi, bu etkileşimi ele almanın iki yolunu sunar:
getInitialMessage():
Uygulama sonlandırılmış bir durumdan açılırsa bu yöntem,RemoteMessage
içeren birFuture
döndürür.RemoteMessage
kullanıldıktan sonra kaldırılır.onMessageOpenedApp
: Uygulama arka plan durumundan açıldığındaRemoteMessage
yayınlayan birStream
.
Kullanıcılarınızın sorunsuz bir deneyim yaşamasını sağlamak için her iki senaryoyu da ele almanız gerekir. Aşağıdaki kod örneğinde bunun nasıl yapılabileceği açıklanmaktadır:
class Application extends StatefulWidget { @override StatecreateState() => _Application(); } class _Application extends State { // In this example, suppose that all messages contain a data field with the key 'type'. Future 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 using 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 kurulumunuza bağlıdır. Daha önce gösterilen örnek, StatefulWidget
kullanımına ilişkin temel bir örnektir.
Sonraki adımlar
Kurulum adımlarını tamamladıktan sonra Flutter için FCM ile ilerlemek üzere kullanabileceğiniz birkaç seçeneği aşağıda bulabilirsiniz: