Android Push (FCM)
Firebase Cloud Messaging HTTP v1 kanalı — servis hesabı, data-only mesaj modeli, Android içerik alanları, bildirim kanalları, teslimat geri bildirimi ve sorun giderme.
Android push, FCM HTTP v1 API'si ve Firebase servis hesabı ile gönderilir. Pushizo her zaman data-only mesaj gönderir; bildirimi cihazda Android SDK kurar. Böylece uygulama arka plandayken de tıklama/teslimat geri bildirimi, zengin içerik ve aksiyon düğmeleri tutarlıdır. Huawei cihazlar için HMS kanalı. Kurulum: Android hızlı başlangıç.
Kimlik bilgisi
Firebase → Project settings → Service accounts → Generate new private key ile indirilen JSON. Dashboard → Kanallar → Android Push → dosyayı yükleyin → Doğrula. API: PUT /v1/apps/{app_id}/channels/android_push { "provider": "fcm", "config": { "service_account": { …json… } } } (multipart dosya da kabul edilir). Doğrulama FCM'den OAuth belirteci alıp proje erişimini sınar; token_uri yalnızca Google alan adlarında kabul edilir (SSRF koruması).
İçerik alanları
| Alan | Davranış |
|---|---|
headings, contents, url | Başlık, gövde ve tıklama adresi |
android_channel_id | Bildirim kanalı (Android 8+). Yoksa SDK varsayılan kanalı (defaultChannelName) kullanır |
android_group | Gruplama anahtarı |
android_sound | res/raw ses dosyası adı |
small_icon, large_icon | Durum çubuğu ikonu (drawable adı) ve büyük ikon (URL ya da drawable) |
android_accent_color | #RRGGBB vurgu rengi |
android_visibility | 1 public, 0 private, -1 secret (kilit ekranı) |
big_picture | Büyük resim stili |
buttons | [{ id, text, icon? }] aksiyon düğmeleri |
collapse_id | FCM collapse_key (aynı anahtar önceki bildirimi değiştirir) |
priority (5/10) | FCM normal / high önceliği; 10 Doze modunda uyandırır |
ttl | FCM ttl (sn, en fazla 28 gün) |
data | Özel yük; SDK notification.additionalData ile verir |
Bildirim kanalları dashboard'da Kanallar → Android Push → Bildirim kanalları ile tanımlanır (ad, önem, ses, titreşim); SDK ilk açılışta cihazda oluşturur (Android SDK → bildirim kanalları).
Teslimat ve geri bildirim
- FCM yanıtı:
200→sent;UNREGISTERED/INVALID_ARGUMENT(token) → abonelikinvalid+subscription.invalidated;QUOTA_EXCEEDED/UNAVAILABLE/5xx→ yeniden deneme planı. - SDK bildirimi gösterince
received, tıklayıncaopenedbildirir; Android 12+ "trampoline" kısıtı için SDK açıkPendingIntentkullanır. - Token değişimi (
onNewToken) SDK tarafından otomatik olarak aboneliğe yazılır.
Sorun giderme
| Belirti | Kontrol |
|---|---|
Doğrulama 403 | Servis hesabı projesi, app'in google-services.json projesiyle aynı mı; Firebase Cloud Messaging API (V1) etkin mi? |
| Bildirim gelmiyor (Android 13+) | POST_NOTIFICATIONS izni verildi mi (Pushizo.Notifications.permission) |
| Bildirim gelmiyor (bazı cihazlar) | Üretici pil optimizasyonu (Xiaomi, Huawei EMUI); priority: 10 deneyin; Huawei'de HMS |
| İkon beyaz kare | small_icon monokrom, şeffaf arka planlı olmalı |
Tıklama uygulamayı açıyor ama url yok | addClickListener ile event.url okuyun; Activity launchMode |
iOS Push (APNs)
APNs kanalı — .p8/.p12 kimlik bilgisi, sandbox/production ortamı, iOS içerik alanları, rozet/ses/kategori, Notification Service Extension ve sorun giderme.
Huawei cihazlara bildirim (HMS Push Kit)
Google Play Hizmetleri olmayan Huawei cihazlar Firebase (FCM) bildirimlerini alamaz. Pushizo bu cihazlara Huawei Push Kit üzerinden hms_push kanalıyla gönderir…