Lässt iOS keine stillen Push-Benachrichtigungen mehr zu, wenn der Benutzer zu viele ignoriert, indem er die App nicht öffnet?

8

Wir sind relativ neu bei iOS-Push-Benachrichtigungen und wie immer bei Apple beeindruckt mich die Eleganz der Lösung, aber auch ein wenig verärgert über das scheinbar undurchsichtige Management der Funktionen hinter den Kulissen Verhalten.

Meine Frage ist folgende: Nach erfolgreichem Erhalt von ca. 10 einzelne stumme Push-Benachrichtigungen mit einer Rate von einer pro Stunde wurden nicht mehr an unsere Test-App geliefert, bis sie schließlich von unserem Testbenutzer geöffnet wurde. Aus diesem Grund scheint es, dass iOS keine stillen Push-Benachrichtigungen mehr sendet, wenn festgestellt wird, dass eine App nicht verwendet wird. Ist das erwartetes Verhalten? Kennt jemand grobe Angaben über die von Apple verwendete Heuristik?

Details der Tests für Interessierte

Zu Ihrer Information: Unser Testaufbau ist wie folgt:

  1. Wir haben eine einfache Benachrichtigungstest-App (für iOS7 mit der application:didReceiveRemoteNotification:fetchCompletionHandler -Delegatenmethode erstellt)
  2. erstellt
  3. Für die Dauer des Tests wurde die App im Hintergrund auf unserem Test-iPhone 5 im Hintergrund gehalten (manchmal im Büro auf WLAN, manchmal auf 3G in und um London).
  4. Wir haben ein einfaches Ruby-Skript, das den Grocer-Edelstein benutzt (was übrigens sehr gut aussieht) und sendet stündlich eine stumme Push-Benachrichtigung über das APNS-Gateway der Sandbox an die App.
  5. Wenn die App die Benachrichtigung erhält, wacht sie auf, schreibt ein Protokoll und stellt eine einfache Anfrage an unseren Backend-Server, der auch das aufgetretene Ereignis protokolliert.

Ergebnisse:

  1. In den ersten 10 Stunden funktioniert alles genau so wie erwartet. Danach werden keine Benachrichtigungen mehr von der App empfangen.

Das Benachrichtigungsformat (manuell kopiert, eventuelle Fehler entschuldigen):

%Vor%     
user2854097 18.11.2013, 11:34
quelle

2 Antworten

4

Ich habe die Push-Funktion meiner App vor einigen Monaten getestet, einige meiner Erfahrungen hier:

  
  1. Apple Push Notification kümmert sich nicht darum, ob Ihre App verwendet wird oder nicht.
  2.   
  3. APNS ist nicht 100% zuverlässig, der einflussreichste Faktor ist die Netzwerkqualität (Ihr Server für den APN-Server, der APN für Ihr Gerät).
  4.   
  5. Ich habe 10.000 Benachrichtigungen auf ein iphone4s in 3 Minuten geschoben, Gerät erhielt mehr als 95% Benachrichtigungen.So, 10 separate still   Push-Benachrichtigungen mit einer Rate von einer pro Stunde haben keinen Druck.
  6.   

Besprechen Sie jetzt Ihre Frage:

Erstens: sollte erkennen, dass der erste Empfänger von Benachrichtigungen System ist, nicht Ihre App.

Wenn Ihre App nicht im Vordergrund ist, wird die Anwendung der Anwendung: didReceiveRemoteNotification: fetchCompletionHandler wird nie aufgerufen, bis Ihre App wieder in den Vordergrund gelangt. Ihre Aktion "schreibt ein Protokoll und führt eine einfache Anfrage an unseren Back-End-Server aus" ist also nicht geeignet, "das aufgetretene Ereignis zu protokollieren".

Ich denke, es gibt keinen guten Weg, "alle aufgetretenen Ereignisse zu protokollieren", es sei denn, Ihre App befindet sich immer im Vordergrund.

BTW: Wenn Sie Push testen, wenn das Gerät die Benachrichtigung nicht schnell empfängt, können Sie das Netzwerk des Geräts ändern (oder das Netzwerk ausschalten), manchmal wird die Benachrichtigung bald kommen.

    
Joiningss 18.11.2013 17:20
quelle
0

Ich kann mir drei Ursachen für das Verhalten vorstellen, das Sie sehen:

  1. Ihre App ist abgestürzt, während Sie nicht gesucht haben,
  2. Der Nutzer hat Ihre App zwangsweise geschlossen,
  3. Das System wurde neu gestartet.

Dies sind die einzigen Fälle, in denen Ihre App nicht mehr gestartet wird, um die Hintergrundbenachrichtigung zu erhalten. Jetzt müssen Sie debuggen, welche dieser gilt.

    
DrMickeyLauer 24.08.2017 07:33
quelle