Push bildirişləri — tətbiq bağlı olsa belə, server tərəfindən mobil cihaza göndərilən mesajlardır. Google Firebase, 2024 məlumatlarına əsasən, Push bildirişləri xüsusi xidmətlər — Android-də FCM və iOS-da APNS vasitəsilə işlənir və eyni anda milyonlarla cihaza real vaxt rejimində çatdırılmanı dəstəkləyir. Onlar müasir mobil tətbiqlərdə istifadəçi təcrübəsinin ayrılmaz hissəsinə çevrilib.
Əsas məqamlar
Push bildirişləri — tətbiq serverinin istifadəçinin açıq sorğusu olmadan onun cihazına göndərdiyi qısa mesajlardır. Onlar bannerlər, ikonada işarələr və ya səs siqnalları şəklində göstərilir, istifadəçinin diqqətini tətbiqə cəlb edir və vacib hadisələr barədə məlumat verir.
Push bildirişi başlıq, mesajın mətni və isteğe bağlı məlumatlardan (payload) ibarətdir. SMS-dən fərqli olaraq, Push bildirişləri istifadəçi üçün pulsuzdur və bulud xidmətləri infrastrukturu — Android üçün FCM və iOS üçün APNS vasitəsilə çatdırılır. Push bildirişlərinin əsas məqsədləri: istifadəçi aktivliyini artırmaq, hadisələr barədə məlumat vermək və istifadəçini tətbiqə qaytarmaqdır.
İstifadə statistikası göstərir ki, düzgün qurulmuş Push bildirişləri tətbiqin saxlanma dərəcəsini 30-60% artırır. Bununla belə, həddindən artıq tezlik bildirişlərdən imtinaya səbəb olur — istifadəçilərin 60%-dən çoxu gündə üç dəfədən çox göndərildikdə bildirişləri söndürür.
Push sistemi üç komponentdən ibarətdir: tətbiq serveri (app server), platforma xidməti (FCM/APNS) və cihazdakı müştəri tətbiqi. Server platforma xidmətinə sorğu göndərir, o isə bildirişi hədəf cihaza əməliyyat sistemi ilə daimi əlaqə vasitəsilə çatdırır.
Çatdırılma mexanizmi Push bildirişlərinin cihaz və platforma xidməti arasında daimi əlaqəyə əsaslanır. Əməliyyat sistemi bütün Push mesajlarının keçdiyi şifrələnmiş rabitə kanalını saxlayır.
İlk işə salındıqda, tətbiq bildiriş göndərməyə icazə istəyir və FCM və ya APNS-dən cihazın unikal tokenini alır. Bu token — 4 KB-a qədər uzunluqda sətir, tətbiq nümunəsini unikal şəkildə identifikasiya edir. Token tətbiq yenidən qurulduqda və ya cihaz ehtiyat nüsxədən bərpa edildikdə dəyişir.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
Tətbiq serveri FCM API və ya APNS API-yə HTTP sorğusu göndərir, hədəf tokeni, başlığı, mətni və əlavə məlumatları göstərir. Platforma xidməti çatdırılma statusu ilə cavab verir: success, invalid token (cihaz tətbiqi silib) və ya rate-limited (göndərmə tezliyi aşılıb).
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "tokeni öz serverinizə göndərin",
body: "Sizin yeni bildirişiniz var!"
}
})
})
FCM və APNS arasında seçim hədəf platformadan asılıdır. FCM Android və iOS-u dəstəkləyir, APNS — yalnız Apple ekosistemini. Çarpaz platformalı mobil tətbiqlərin inkişafı üçün vacib olan əsas fərqlərə baxaq.
FCM — Google Play Services üzərində işləyən Google xidmətidir. İki çatdırılma sxemini dəstəkləyir: avtomatik göstərilən bildirişlər (display notifications) və tətbiqin özünün emal etdiyi data-bildirişləri. FCM pulsuzdur və göndərilən mesajların sayında məhdudiyyəti yoxdur.
APNS — 10 MB-a qədər multimedia əlavələri (şəkillər, video, audio) dəstəyi olan Apple xidmətidir. APNS vasitəsilə göndərmək üçün TLS sertifikatı və ya autentifikasiya açarı tələb olunur. APNS bir cihaza göndərmə tezliyini məhdudlaşdırır — dəqiqədə 150 bildirişdən çox olmamaq şərti ilə, bundan sonra rate limiting işə düşür.
| Xüsusiyyət | FCM | APNS |
|---|---|---|
| Platformalar | Android, iOS, Web | iOS, macOS, watchOS |
| Tələblər | Google Play Services | Apple Developer Program |
| Media | 4 KB-a qədər (data) | 10 MB-a qədər (əlavələr) |
| Prioritet | normal/high | immediate/power-saving |
| Qiymət | pulsuz | pulsuz (hesab tələb olunur) |
Push bildirişləri göstərilmə üsuluna və məqsədinə görə təsnif edilir. Növləri başa düşmək istifadəçi ilə qarşılıqlı əlaqənin hər ssenarisi üçün düzgün strategiya seçməyə kömək edir.
Ən geniş yayılmış növ — başlıq və mətnlə göstərilən bildirişdir. Əməliyyat sistemi onu avtomatik olaraq sistem pərdəsində, blok ekranında və banner şəklində göstərir. Tərtibatçı səsi, vibrasiyanı, ikonada işarəni və birbaşa hərəkətlər üçün action düymələrini (cavab vermək, açmaq, rədd etmək) konfiqurasiya edə bilər.
Data-bildirişlər vizual göstərilmədən yalnız payload ehtiva edir. Tətbiq onları fonda emal edir: məlumatları sinxronlaşdırır, keşi yeniləyir və ya yükləməni işə salır. Android-də data-bildirişlər zəmanətli çatdırılır, iOS-da — yalnız aktiv tətbiqdə və ya background fetch vasitəsilə.
Müasir mobil əməliyyat sistemləri şəkillər, GIF, video və audio ilə genişləndirilmiş və media bildirişlərini dəstəkləyir. iOS-da bu UNNotificationAttachment vasitəsilə, Android-də — BigPictureStyle və InboxStyle ilə sistem pərdəsində bildirişin görünüşünü fərdiləşdirmək üçün həyata keçirilir.
Səssiz bildirişlər istifadəçiyə göstərilmir və fon sinxronizasiyası üçün istifadə olunur. iOS-da onlar tətbiqi açmadan əvvəl məlumatları yeniləmək kimi tapşırıqlar üçün yüksək prioritetə malikdir. Android onları minimal prioritetlə data-bildirişlər kimi qəbul edir.
Push bildirişlərinin qurulması infrastruktur, server hissəsi və müştəri kodu səviyyəsində tədbirlər tələb edir. Çarpaz platformalı mobil layihə üçün tipik prosesə baxaq.
Android üçün Firebase Console-da layihə yaratmaq, google-services.json faylını layihəyə əlavə etmək və FirebaseMessagingService-i konfiqurasiya etmək lazımdır. Cihaz tokeni FirebaseInstanceId və ya FirebaseMessaging.getInstance().token vasitəsilə əldə edilir, sonra ilk işə salındıqda və ya dəyişdikdə API vasitəsilə serverə göndərilir.
iOS üçün Apple Developer Program-a abunə, Developer Portal-da Push sertifikatı və ya APNS açarının yaradılması və Xcode-da Capability Push Notifications-ın aktivləşdirilməsi tələb olunur. Bildirişlərə qeydiyyat UIApplication.shared.registerForRemoteNotifications vasitəsilə AppDelegate-də deviceToken-in alınması ilə həyata keçirilir.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// token-i öz serverinə göndərmək
}
}
Server tərəfində Push bildirişləri REST API və ya Admin SDK vasitəsilə göndərilir. FCM üçün Firebase Admin SDK (Node.js, Java, Python, Go üçün mövcuddur), APNS üçün — pusher kitabxanaları (Java üçün pushy, Node.js üçün apn2) istifadə olunur. Tokenləri son yeniləmə vaxtı ilə bazada saxlamaq tövsiyə olunur.
Push bildirişlərinin təhlükəsizliyi kritik əhəmiyyət daşıyır, çünki onlar vasitəsilə məxfi məlumatlar ötürülə bilər. Hər iki platforma əsas qoruma mexanizmləri təmin edir, lakin tərtibatçı onlardan düzgün istifadə etməlidir.
Push bildirişinin payload-ı istifadəçilərin şəxsi məlumatlarını ehtiva edə bilər: adlar, əməliyyat məbləğləri, mesajlara keçidlər. FCM/APNS və cihaz arasında rabitə kanalı şifrələnsə belə, məlumatlar üçüncü tərəf proqramı tərəfindən bildirişin ələ keçirilməsi zamanı tətbiq səviyyəsində ələ keçirilə bilər. Həssas payload-ı serverdə AES-256 alqoritmi ilə şifrələmək və cihazda Keychain (iOS) və ya EncryptedSharedPreferences (Android)-də saxlanan açarla deşifrələmək tövsiyə olunur.
Cihaz tokeni — cihaz sındırıldıqda və ya trafik ələ keçirildikdə kompromat ola biləcək sesiya identifikatorudur. Tətbiq serveri göndərmədən əvvəl tokenləri yoxlamalıdır: onları verilənlər bazası ilə müqayisə etməli, aktiv olmayan tokenləri izləməli və təkrar InvalidToken səhvlərində onları silməlidir. FCM və APNS yanlış tokenlər üçün InvalidRegistration statusu qaytarır — bunu göz ardı etməyin.
Tezliyə nəzarət olmadan Push bildirişləri istifadəçiləri qıcıqlandıran və saxlama dərəcəsini aşağı salan spam alətinə çevrilə bilər. Serverdə limitlər təyin edin: bir istifadəçiyə saatda 5-dən çox bildiriş və 3-dən çox eyni mesaj göndərilməməlidir. Tranzaksiya bildirişləri (sifarişin təsdiqi, şifrənin dəyişdirilməsi) üçün limitlər daha yüksək ola bilər — saatda 10-a qədər, çünki onlar kritik vacib məlumat daşıyır. Göndərmə API-si səviyyəsində rate limiting istifadə edin ki, təcavüzkar sizin serveriniz vasitəsilə kütləvi göndəriş həyata keçirə bilməsin.
Tez-tez verilən suallar
Bəli, APNS-yə birbaşa qoşulma Android-də dəstəklənmir — Google Play Services olmayan cihazlar üçün Huawei Mobile Services (HMS) və öz WebSocket əlaqələri kimi alternativlər istifadə olunur. Bununla belə, FCM pulsuzluğu və etibarlılığı sayəsində əksər tətbiqlər üçün standart olaraq qalır.
FCM və APNS son bildirişi öz serverlərində saxlayır və əlaqə bərpa edildikdə onu çatdırır. Hər cihazda hər tətbiqdən yalnız son bildiriş saxlanılır, buna görə də uzun müddət şəbəkə olmadıqda aralıq mesajlar itirilir.
Ən çox rast gəlinən səbəblər — müddəti bitmiş Push sertifikatı APNS (1 il etibarlıdır), yanlış cihaz tokeni, parametrlərdə bildirişlərin söndürülməsi və ya enerji qənaət rejiminin aktiv olmasıdır. Apple Developer Console-da sertifikatı yoxlayın və tətbiqin UNUserNotificationCenter vasitəsilə icazə istədiyinə əmin olun.
Android-də NotificationCompat.Builder-da PendingIntent istifadə edin, Intent vasitəsilə açılmanı izləyin. iOS-da — UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:) metodu. FCM hər göndərilən bildiriş üçün çatdırılma və açılma hesabatları təqdim edir.
Az dərəcədə — Push bildirişləri daimi əlaqə saxlamır; ƏS bütün tətbiqlər üçün vahid sistem kanalından istifadə edir ki, bu da ümumi enerji istehlakını minimuma endirir. Tez-tez göndərmə (hər 5 dəqiqədən bir) cihazı oyatmaq və yuxu rejimindən çıxarmaq üçün daha çox enerji sərf edir. iOS-da səssiz bildirişlər alınan məlumatları emal etmək üçün tətbiqin fonda aktivləşməsi səbəbindən daha çox enerji sərf edir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun