wake-up-neo.net

das iOS-Push-Benachrichtigungsbanner wird zweimal für einen einzelnen Push angezeigt

Ich habe festgestellt, dass das Senden einer Push-Benachrichtigung zu folgendem Verhalten führt:

 Push Banner is shown twice?

Sehen Sie, wie das Banner nach einer kurzen Verzögerung ein zweites Mal angezeigt wird.

Zuerst dachte ich, dass unser Backend versehentlich 2 Push-Benachrichtigungen nacheinander sendete.

Dies scheint jedoch das Standardverhalten von iOS für eine einzelne Push-Benachrichtigung zu sein. Das Banner wird angezeigt und sofort "wieder angezeigt". Dies führt zu dieser unruhigen Benutzeroberfläche, die im GIF angezeigt wird. Das Banner scheint zweimal empfangen worden zu sein.

Getestet mit iOS 9.0.2.

Ich kann mich nicht erinnern, dieses Verhalten von anderen Apps gesehen zu haben, die mir Push-Benachrichtigungen senden. Mache ich etwas falsch, was dazu führen würde, dass das Banner zweimal angezeigt wird?

Radar:

Das Engineering hat festgestellt, dass Ihr Fehlerbericht (23133694) ein Duplikat eines anderen Problems (23130766) ist und geschlossen wird.

41
pkamb

Laut dieser Antwort zu einer ähnlichen Frage wurde dieses Problem als rdar: // 23569779 gemeldet und sollte in der öffentlichen Veröffentlichung von iOS 9.3 behoben werden.

Bitte hinterlassen Sie einen Kommentar, wenn Sie dieses Problem in iOS 9.3+ reproduzieren

Angeblich fixiert in:

iOS 9.2.1 beta (Build: 13D11)

0
pkamb

Ich hatte das gleiche Problem, aber nach unzähligen Stunden, die ich debuggen wollte, wurde mir klar, dass ich registerUserNotificationSettings(settings) zweimal in didFinishLaunchingWithOptions: anrief. Stellen Sie sicher, dass Sie nicht dasselbe tun

32
RukyO

Sind Sie sicher, dass Sie alle Einstellungen richtig machen?
Wenn Sie mehr Code zur Verfügung stellen, ist es einfacher, den Fehler zu finden. Es ist definitiv kein iOS-Bug.


Grundsätzliches zum Überprüfen, wenn Sie mit Serverbenachrichtigungen Probleme haben:

1. Überprüfen Sie Ihr Provisioning-Profil und bereinigen Sie alle nicht verwendeten Zertifikate.
2. Stellen Sie sicher, dass Ihre Serverkonfiguration in Ordnung ist. Für die vollständige Antwort sind noch weitere Details erforderlich.

Wenn Sie dies offline tun, haben Sie normalerweise etwas in Ihrem Code übersehen oder Ihr Handler für abgelegene Posts wird zweimal aufgerufen. 

3

Dieses Problem wurde für zwei Geräte erhalten, die wir mit den Versionen ios 9.3.3 und ios 9.2 verwendet haben. Dieses Problem wurde jedoch nicht für ein Gerät mit ios 8.2 und einem anderen für iOS 10 (getestet unter 10.3) angezeigt.

Bei Geräten mit 9.3.3 und 9.2 trat bei jeder Neuinstallation ein Problem auf. Ein Neustart des Geräts schien das Problem jedoch zu beheben. Obwohl dies KEINE Lösung ist, können wir den Kunden vorschlagen.

In den Konsolenprotokollen für das System erhielten wir die Meldung "Unbalanced Calls, um Übergänge zu beginnen bzw. zu beenden, die für SBBannerButtonViewController angezeigt werden".

Dies scheint bei einigen Geräten mit der Version 9.x ein Problem zu sein und sollte für Geräte mit iOS 10.0 und höher problemlos funktionieren.

3
Swasidhant

Ich denke, die falsche Antwort wird hier akzeptiert (Wenn es sich um eine Migration von Parse zu OneSignal handelt). Denn für OneSignal gibt es dafür keine richtige Lösung. Ich suche auch nach der Lösung, wenn jemand eine hat. Die einzige Problemumgehung bestand darin, das Telefon neu zu starten.

Aber es ist komisch. Wir können nicht alle Benutzer auffordern, ihr Gerät neu zu starten.

2
Bhumi Goklani

Verwenden Sie eine Datenbank zum Speichern der Geräte-ID?

Wenn ja, kann die Geräte-ID zwei Mal gespeichert werden. Wenn möglich, bereinigen Sie die Datenbank und versuchen Sie, sie erneut zu senden

2
Nasir Munda

Das gleiche Problem hatten wir in IOS 9.3.1 

Wir haben ein städtisches Luftschiff für die Verwaltung von Benachrichtigungen verwendet, und dies war unser Aufbau

let config = UAConfig.default()

UAirship.setLogging(false)
UAirship.takeOff(config)
UAirship.Push().userPushNotificationsEnabled = true
UAirship.Push().notificationOptions = [.alert, .badge, .sound]
UAirship.Push().backgroundPushNotificationsEnabled = false
UAirship.Push().pushNotificationDelegate = self

Nach vielen Versuchen haben wir einfach die folgende Zeile entfernt und es hat funktioniert!

UAirship.Push().notificationOptions = [.alert, .badge, .sound]

Ich hoffe das hilft jemandem. 

1
Melvin John

Ich weiß, dass diese Antwort ein paar Jahre nach dem ursprünglichen Beitrag liegt, aber falls dies jemandem hilft ...

In meinem Fall verwendete ich CloudKit-Benachrichtigungen und hatte versehentlich zwei Abonnements erstellt, die den gleichen Datensatztyp nachverfolgten.

1
mlecoz