🔔 iOS Push Notification Troubleshooting - ts-easy-sale-core¶
Status¶
- ✅ Android: Funktioniert
- ❌ iOS: Funktioniert nicht
- ✅ Backend: FCM sendet erfolgreich (3/3 Tokens)
- ❓ APNs: Liefert nicht aus
Systematische Fehlersuche¶
✅ Schritt 1: iOS App-Berechtigungen prüfen¶
Auf dem iPhone: 1. Einstellungen → Suche nach "Easy Sale" oder der App 2. Mitteilungen antippen 3. Prüfen: - ✅ "Mitteilungen erlauben" ist AN - ✅ "Banner" ist aktiviert - ✅ "Töne" ist aktiviert - ✅ "Hinweise" ist aktiviert - ✅ Kein Fokus-Modus aktiv (Kontrollzentrum prüfen)
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 2: Firebase Console - APNs Keys prüfen¶
URL: https://console.firebase.google.com/project/ts-easy-sale-core/settings/cloudmessaging
Zu prüfen:
1. Apple-App-Konfiguration → App auswählen
2. Bundle ID stimmt überein:
- Firebase: de.easysale.shop (oder com.techschuppen.easysale.core)
- App: (aus GoogleService-Info.plist)
3. Development APNs Key:
- Key ID: 4YGBBB4525
- Team ID: KW66H394ZW
- Status: Aktiv
4. Production APNs Key:
- Key ID: 4YGBBB4525
- Team ID: KW66H394ZW
- Status: Aktiv
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 3: GoogleService-Info.plist Bundle ID prüfen¶
Datei: /Users/michaelmodlmair/Development/easySale/core/apps/shop_system/ios/Runner/GoogleService-Info.plist
Befehl:
cd /Users/michaelmodlmair/Development/easySale/core/apps/shop_system/ios/Runner
grep -A 1 "BUNDLE_ID" GoogleService-Info.plist
Erwartetes Ergebnis:
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 4: aps-environment in der App prüfen¶
Datei: /Users/michaelmodlmair/Development/easySale/core/apps/shop_system/ios/Runner/Runner.entitlements
Aktueller Wert:
Problem: Die bereits installierte App auf dem iPhone wurde mit development gebaut!
Lösung: - Entweder: App neu installieren (mit Xcode oder TestFlight) - Oder: Development APNs Key muss funktionieren
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 5: FCM Token für iOS prüfen¶
Cloud Function Log-Suche:
In Firestore prüfen:
Zu prüfen:
- platform: 'ios'
- fcmToken existiert
- lastActive ist aktuell
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 6: APNs Payload prüfen¶
Aktuelle fcm-utils.js Konfiguration:
const apnsPayload = {
payload: {
aps: {
alert: {
title: notification.title,
body: notification.body,
},
sound: isCritical ? "critical" : "default",
"interruption-level": isCritical ? "time-sensitive" : "active",
"content-available": 1,
},
},
headers: isCritical ? { "apns-priority": "10" } : undefined,
};
Status: ✅ Alert hinzugefügt, Function deployed
✅ Schritt 7: APNs Test mit Firebase Console¶
Direkter Test über Firebase: 1. Firebase Console → Cloud Messaging 2. "Send test message" oder "Neue Benachrichtigung" 3. Ziel: FCM Token des iOS-Geräts 4. Titel + Body eingeben 5. Senden
Erwartung: Wenn Firebase-Test funktioniert → App-Code OK, sonst → APNs-Key Problem
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 8: Cloud Function Logs - APNs Fehler suchen¶
Befehl:
firebase functions:log --project ts-easy-sale-core 2>&1 | grep -i "error\|failed\|invalid\|unregistered\|mismatched\|baddevicetoken"
Häufige APNs Error Codes:
- BadDeviceToken - Token ist ungültig
- Unregistered - Token existiert nicht mehr
- MismatchSenderId - Bundle ID passt nicht
- DeviceTokenNotForTopic - Bundle ID stimmt nicht mit APNs Cert überein
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 9: Apple Developer Certificate Status¶
URL: https://developer.apple.com/account/resources/certificates/list
Zu prüfen: - Distribution Certificate: Gültig (nicht abgelaufen) - APNs Keys: Aktiv
Status: ⬜ Nicht geprüft | ✅ OK | ❌ Problem
✅ Schritt 10: App neu installieren mit korrektem aps-environment¶
Da Runner.entitlements jetzt production hat:
Option A: Über TestFlight (empfohlen) - Build hochladen - TestFlight installieren - Automatisch mit Production APNs
Option B: Xcode Debug Build - Xcode öffnen - Scheme auf Debug setzen - Product → Run - Verwendet Development APNs
Status: ⬜ Nicht ausgeführt | ✅ Erledigt
🔧 Quick Fixes¶
Fix 1: Development APNs testen¶
Die App auf dem iPhone verwendet vermutlich noch aps-environment: development.
Prüfen:
Fix 2: Bundle ID Mismatch¶
Stelle sicher, dass die Bundle ID überall gleich ist: - Firebase Console - GoogleService-Info.plist - Xcode Project Settings - Apple Developer Portal
Fix 3: App komplett neu installieren¶
- App deinstallieren (lange drücken → "App entfernen")
- iPhone neustarten
- App via Xcode neu installieren
- Benachrichtigungsberechtigungen neu erteilen
📊 Nächste Schritte¶
- [ ] Schritt 1-3 durcharbeiten (Berechtigungen, Firebase Console, Bundle ID)
- [ ] Wenn alles OK → Schritt 7 (Firebase Test-Nachricht direkt)
- [ ] Wenn Firebase-Test auch nicht geht → APNs Key Problem
- [ ] Wenn Firebase-Test geht → App-Code/Token Problem
🎯 Wahrscheinlichste Ursache¶
Basierend auf den Symptomen (Android OK, iOS nicht):
Top 3: 1. aps-environment Mismatch (App=development, Key=production) 2. Bundle ID Mismatch (App ≠ Firebase ≠ APNs Key) 3. iOS Berechtigungen nicht erteilt oder Fokus-Modus aktiv
📝 Log-Befehle zum Kopieren¶
# Bundle ID prüfen
grep -A 1 "BUNDLE_ID" /Users/michaelmodlmair/Development/easySale/core/apps/shop_system/ios/Runner/GoogleService-Info.plist
# aps-environment prüfen
grep -A 1 "aps-environment" /Users/michaelmodlmair/Development/easySale/core/apps/shop_system/ios/Runner/Runner.entitlements
# Neueste Push-Logs
firebase functions:log --project ts-easy-sale-core 2>&1 | tail -100 | grep -B 5 -A 15 "Feed-Eintrag"
# APNs Fehler suchen
firebase functions:log --project ts-easy-sale-core 2>&1 | grep -i "error.*apns\|baddevicetoken\|unregistered\|mismatch"