Firebase Cloud Messaging orqali push-bildirishnomalarni sozlash
Amaliyot3 daqInnovialabs tahririyati
Qisqacha
Firebase’ni Android va iOS ilovalariga ulang, APNs kalitini yuklang, qurilmalarning FCM tokenlarini serverda saqlang va xabarlarni Firebase Admin SDK orqali yuboring; topiklar qiziqishlar bo‘yicha tarqatish uchun, konsoldan test yuborish esa yetkazishni tez tekshirish uchun qulay.
Qisqacha: FCM qanday ishlaydi
Firebase Cloud Messaging (FCM) — Android, iOS va vebga push-bildirishnomalarni yetkazuvchi bepul Google xizmati. Sxemasi oddiy:
- Ilova FCM’dan qurilma tokenini oladi.
- Ilova tokenni sizning serveringizga yuboradi.
- Server FCM’dan xabarni token yoki topik bo‘yicha yetkazishni so‘raydi.
- Android’da FCM o‘zi yetkazadi, iOS’da esa Apple’ning APNs xizmati orqali.
1-qadam. Firebase loyihasi va Android
- Firebase Console’da loyiha yarating.
- Loyihangizdagi bilan bir xil package name bilan Android ilova qo‘shing.
google-services.jsonfaylini yuklab oling vaappmoduliga joylang.- Google Services Gradle plaginini va
firebase-messagingbog‘liqligini ulang. - Android 13’dan boshlab ilova ishlayotganda POST_NOTIFICATIONS ruxsatini so‘rash kerak.
Token va xabarlarni qabul qiluvchi servis:
class PushService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
// tokenni serveringizga yuboring
}
override fun onMessageReceived(message: RemoteMessage) {
// ilova ochiq paytdagi xabarlarni qayta ishlash
}
}
Servisni AndroidManifest.xml’da com.google.firebase.MESSAGING_EVENT intent-filter bilan ro‘yxatdan o‘tkazing.
2-qadam. iOS va APNs kaliti
- Firebase’ga Bundle ID’ngiz bilan iOS ilova qo‘shing,
GoogleService-Info.plist’ni yuklab oling. - Apple Developer’da APNs Authentication Key (
.p8fayl) yarating. Uni saqlab qo‘ying — qayta yuklab bo‘lmaydi. - Firebase’da Project settings → Cloud Messaging → Apple app configuration bo‘limida kalitni yuklang, Key ID va Team ID’ni kiriting.
- Xcode’da Push Notifications capability’ni va Background Modes → Remote notifications’ni yoqing.
- Kodda foydalanuvchidan ruxsat so‘rang va masofaviy bildirishnomalar uchun ro‘yxatdan o‘ting; Firebase SDK APNs tokenini FCM tokeni bilan bog‘laydi.
Bitta .p8 kalit jamoaning barcha ilovalari va ikkala APNs muhiti uchun ishlaydi, uzaytirib turish kerak bo‘lgan eski sertifikatlardan farqli ravishda.
3-qadam. Tokenlar bilan ishlash
- Tokenni serverda foydalanuvchi ID’si, platforma va yangilangan sana bilan birga saqlang.
onNewTokenyoki uning iOS’dagi muqobili chaqirilganda tokenni yangilang.- Bitta foydalanuvchida bir nechta qurilma bo‘lishi mumkin — tokenlar ro‘yxatini saqlang.
- FCM qurilma ro‘yxatdan o‘tmaganligi haqida xato qaytargan tokenlarni o‘chiring.
- Akkauntdan chiqishda tokenni foydalanuvchidan ajrating.
4-qadam. Serverdan yuborish
FCM HTTP v1 API’dan foydalaning — eski legacy API o‘chirilgan. Eng osoni — xizmat akkaunti bilan Firebase Admin SDK:
import { initializeApp, applicationDefault } from "firebase-admin/app";
import { getMessaging } from "firebase-admin/messaging";
initializeApp({ credential: applicationDefault() });
await getMessaging().send({
token: deviceToken,
notification: { title: "Buyurtma jo‘natildi", body: "Yetkazib berishni ilovada kuzating" },
data: { screen: "order", orderId: "1042" },
});
- notification — sarlavha va matn, tizim ularni o‘zi ko‘rsatadi.
- data — mantiq uchun o‘z kalitlaringiz, masalan, o‘tiladigan ekran.
Xizmat akkaunti kalitini repozitoriyada yoki ilovada emas, server sirlarida saqlang.
5-qadam. Topiklar
Topik — unga obuna bo‘lgan hammaga tokenlarni saqlamasdan yuboriladigan tarqatma:
- mijoz
subscribeToTopic("news")ni chaqiradi; - server
tokeno‘rnigatopic: "news"bilan xabar yuboradi.
Topiklar ommaviy kategoriyalar (yangiliklar, aksiyalar) uchun qulay. Shaxsiy bildirishnomalar uchun tokenlardan foydalaning.
6-qadam. Yetkazishni tekshirish
- Qurilma tokenini loglardan nusxalang.
- Firebase Console’da Messaging’ni oching, bildirishnoma yarating va tokenni qo‘yib Send test message’ni bosing.
- Uch holatni tekshiring: ilova ochiq, fonda va yopiq.
- iOS’ni haqiqiy qurilmada tekshiring.
Xabar kelmasa: bildirishnomalar ruxsatini, yuklangan APNs kalitini, Bundle ID va package name mosligini hamda Android’dagi quvvatni tejash rejimini tekshiring.