Ich teste Push-Benachrichtigungen mit content-available = 1, und sie werden anscheinend nicht im Hintergrund an die App gesendet, es sei denn, es handelt sich um eine Wi-Fi-Verbindung.
Ich habe am Anfang des Push-Benachrichtigungs-Handlers eine einfache log-Anweisung:
%Vor%Hier ist mein Test:
Unter Wi-Fi zeigt das Konsolenprotokoll die Benachrichtigung an. Wenn ich zu den Einstellungen gehe und Wi-Fi ausschalte und zu 4G wechsle, erscheinen keine Benachrichtigungen mehr im Log (obwohl sie oben im Bildschirm eingeblendet werden, also weiß ich, dass sie geliefert werden).
Es gibt keine Absturzprotokolle und die Benachrichtigung wird protokolliert, wenn ich manuell darauf klicke. Darüber hinaus tritt dieses Problem NICHT auf, wenn ich die App in Xcode debuggen. (Wenn ich zum Beispiel in Xcode debugge, wird die App die Benachrichtigung im Hintergrund über 4G erhalten). Hat jemand anderes dieses Verhalten erfahren? Oder mache ich etwas falsch?
BEARBEITEN : Um genau zu sein: Wenn die folgenden Bedingungen erfüllt sind, wird gemäß meiner Tests die Remote-Benachrichtigungs-Delegate-Methode oben nicht aufgerufen:
Wenn Bedingung 2 jedoch entfernt wird (d. h. das Telefon ist mit Wi-Fi verbunden), wird der Handler aufgerufen.
Basierend auf Feedback von einem Kommentator hier und wiederholten Tests auf mehreren Geräten, scheint dies ein Fehler (oder beabsichtigtes Verhalten) auf iOS zu sein.
Für mich funktionierte es auf WLAN und auf 4G (LTE wurde in den Mobilfunkeinstellungen deaktiviert), funktionierte aber nicht auf LTE.
Update: Nach umfangreichem Debugging habe ich dieses Problem bei LTE für zwei Dinge gefunden. Eins ist Macht. Ich habe festgestellt, dass das iPhone in die Wand eingesteckt war und die App wie erwartet aufgewacht ist. Wenn es nicht angeschlossen war, wurde die App nicht als Reaktion auf Inhalt-verfügbar = 1 geweckt. Zweitens, war Geräteeinstellungen. Obwohl alle zugehörigen Einstellungen korrekt vorgenommen wurden, wurde das Problem durch "Alle Einstellungen zurücksetzen" behoben.
Angenommen, es handelt sich nicht um einen Apple-Fehler, vermute ich, dass iOS unter bestimmten Umständen (Netzwerkstatus, Akkustatus usw.) ein Power-Profil für eine bestimmte App-ID entwickelt, um Apps mit übermäßigem Hintergrund nicht zu aktivieren Fahrräder. Wenn Sie beispielsweise beginBackgroundTaskWithExpirationHandler nicht korrekt verwenden, wird eine App im Hintergrund aktiv und zwingt iOS, diese ablaufen zu lassen. Selbst wenn Sie eine übermäßige Hintergrundnutzung beheben, wird das Problem möglicherweise nicht behoben, da iOS bereits festgestellt hat, dass Ihre App ein Hintergrundschwein ist. Dies würde erklären, dass 'Alle Einstellungen aufheben' das Problem für mich auflöst.
Leider ist dies alles nur eine Vermutung, basierend auf zwei bis drei Tagen Debugging dieses Problems, und wir werden es wahrscheinlich nie genau wissen, da so viele Variablen mit Push-Benachrichtigungen im Spiel sind, ganz zu schweigen von vagen und unterschiedlichen Dokumentationen.
Tags und Links push-notification ios wifi background 4g