• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[iOS 7] APNS-Nachrichten können Apps aufwecken?

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Hallo zusammen,

meiner Vorstellung nach, werden empfangene Push-Nachrichten nur durch das Betriebssystem entgegen genommen und verwaltet. Evtl. wird das Icon einer App mit einem Badge-Zähler versehen, aber die App bekommt das zuerst mal nicht mit, da sie inaktiv ist.

Einige Apps scheinen aber neuerdings den aktuellen Content bereits vorrätig zu haben, wenn man sie _direkt_ nach dem Empfang einer Push-Mitteilung öffnet.
Sehr unwahrscheinlich, dass die Hintergrundaktualisierung _zufällig_ in dieser Sekunde lief..

  1. Gibt es in iOS 7 die Möglichkeit, dass Push-Nachrichten die Apps aufwecken?

  2. Oder sind Push-Nachrichten und Hintergrundaktualisierung so verzahnt, dass die Hintergrundaktualisierung _jetzt_ bei Eingang einer Push-Mitteilung für diese eine App anläuft, anstelle später in ihrem regulären Intervall?
Letzteres hieße wohl, dass der Daemon für die Push-Nachrichten die Nachricht entgegen nimmt, dann die Hintergrundaktualisierung aufruft, und diese wiederum die App aktualisiert?​

Viele Grüße,
Nick
 

smoe

Roter Winterkalvill
Registriert
13.04.09
Beiträge
11.575
Seit iOS7 können PushNotifications Aktionen in Apps auslösen.
 

Marcel Bresink

Breuhahn
Registriert
28.05.04
Beiträge
8.602
Eine gerade nicht laufende App wird durch eine Push-Nachricht nicht gestartet.

Wenn die Nachricht jedoch den Vermerk "content-available: YES" enthält und der Benutzer die betroffene App innerhalb eines kurzen Zeitrahmens nach Eintreffen der Nachricht startet, dann reicht das System quasi eine sofortige Benachrichtigung an die App nach. Die App kann dadurch zeitgleich zu ihrem Start den neuen Inhalt direkt abholen, so dass es so aussieht, als wäre er schon dagewesen.
 

frostdiver

Zwiebelapfel
Registriert
19.06.12
Beiträge
1.285
@Marcel
Doch, die App wird im Hintergrund gestartet und hat 30 Sekunden Zeit, sich zu aktualisieren.
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Also, wie muss ich mir das vorstellen?

  1. Man kann 'fetch' als UIBackgroundModes Key angeben. Dann startet das Betriebssystem die App in Intervallen im 'Background' und diese aktualisiert 'sich selbst', ohne dass der User es sieht. Das nennt sich dann Hintergrundaktualisierung. Ungefähr richtig?

  2. Oder man kann 'remote-notification' in der pList der App angeben. Dann kann man eine 'leere' Push-Notification mit "content-available": @1" schicken........... aber was geschieht dann?
    Apple sagt:
    "When this value is present and a push notification arrives on a device, the system sends the notification to your app (launching it if needed) and gives it a few moments to process the notification before displaying anything to the user."
Die Notification selbst enthält meines Verständnis nach keinen Content für die App, sondern nur ein 'Ja, es gibt neuen Content, also hol ihn Dir."

  • Wann wird also eine App durch eine Notification gestartet? Was meint Apple mit "launching it if needed"?
  • Verstehe ich es richtig, dass dieser Mechanismus dann überhaupt nichts mit der klassischen 'Hintergrundaktualisierung' zu tun hat, so dass sich dies über Systemeinstellungen->Allgemein->Hintergrundaktualisierung auch nicht deaktivieren lässt (sondern nur über Mitteilungen)?
  • @smoe: Wenn Du schreibst, dass Push Nachrichten Aktionen in Apps auslösen können, ist damit eigentlich nur gemeint, dass ein PushNotification zum 'Start' der App im Hintergrund dienen kann, oder? Was die App dann tut, ergibt sich nicht aus der PushNotification, oder?
  • @Marcel: "..dann reicht das System quasi eine sofortige Benachrichtigung an die App nach. Die App kann dadurch zeitgleich zu ihrem Start den neuen Inhalt direkt abholen" Diesen Part habe ich überhaupt nicht verstanden.. Kannst Du das erläutern?

Vielen Dank,
Nick
 

hillepille

Melrose
Registriert
19.07.09
Beiträge
2.508
Hi,

hier steht doch alles:

(https://developer.apple.com/library...html#//apple_ref/doc/uid/TP40008194-CH102-SW1)

But what if the application is not connected to its provider or even running on the device or computer when the provider has new data for it to download? How does it learn about this waiting data? Push notifications are the solution to this dilemma. A push notification is a short message that a provider has delivered to the operating system of a device or computer; the operating system, in turn, informs the user of a client application that there is data to be downloaded, a message to be viewed, and so on. If the user enables this feature (on iOS) and the application is properly registered, the notification is delivered to the operating system and possibly to the application. Apple Push Notification service is the primary technology for the push-notification feature.

Push notifications serve much the same purpose as a background application on a desktop system, but without the additional overhead. For an application that is not currently running—or, in the case of iOS, not running in the foreground—the notification occurs indirectly. The operating system receives a push notification on behalf of the application and alerts the user. Once alerted, users may choose to launch the application, which then downloads the data from its provider. If an application is running when a notification comes in, the application can choose to handle the notification directly.


UPDATE: MEA CULPA, das gilt für IOS
 

smoe

Roter Winterkalvill
Registriert
13.04.09
Beiträge
11.575
http://docs.xamarin.com/guides/cros...es/updating_an_application_in_the_background/

Background refresh is the process of waking an application that is suspended or not running, and updating it with new content. iOS provides three options for refreshing content in the background:

  1. Region Monitoring and Significant Location Changes Service - Location-aware APIs trigger background updates based on changes in the user's location. These APIs can be used with discretion to refresh content in non-location-based iOS 6 applications, where other options are not available.
  2. Background Fetch (iOS 7) - A temporal approach to refreshing non-critical content that updates frequently.
  3. Remote Notifications (iOS 7) - Applications that receive push notifications can use the notifications to trigger background content refreshes. This method can be used to update with important, time-sensitive content that updates sporadically.
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252

Das ist ein augezeichneter Link!!

Wenn ich das also richtig verstehe, verhält es sich genau so wie ich es oben beschrieben habe - mit der Ausnahme, dass RemoteNotificatioins eben doch auf dem BackgroundFetch-Feature basieren, und somit dessen 30 Sekunden-Beschränkung unterliegen.

Das Starten von Apps durch RemoteNotifications lässt sich also auch unterbinden, wenn man nur die Hintergrundaktualisierung in den Einstellungen abstellt, korrekt?

Was Marcel mit "dann reicht das System quasi eine sofortige Benachrichtigung an die App nach. Die App kann dadurch zeitgleich zu ihrem Start den neuen Inhalt direkt abholen, so dass es so aussieht, als wäre er schon dagewesen" verstehe ich aber nicht :(
 

frostdiver

Zwiebelapfel
Registriert
19.06.12
Beiträge
1.285
Das Starten von Apps durch RemoteNotifications lässt sich also auch unterbinden, wenn man nur die Hintergrundaktualisierung in den Einstellungen abstellt, korrekt?
So würde ich es einschätzen und erhoffen. Sicher sein kann man sich bei Apple aber erst, wenn man es getestet hat.
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Letzte Frage hierzu:
"When this value is present and a push notification arrives on a device, the system sends the notification to your app (launching it if needed) and gives it a few moments to process the notification before displaying anything to the user."

Genau genommen sendet das System RemoteNotifications, die _ohne_ contentAvailable=yes eintreffen, gar nicht weiter an die App, oder? Diese bleibt hoffentlich einfach 'suspended'?

Gibt es überhaupt einen Fall, wo die App den 'Inhalt' der Notification überreicht bekommt? Ich stelle mir das so vor, dass auch bei contentAvailable=yes die App lediglich im Hintergrund für 30 Sekunden gestartet wird.. Weiß sie überhaupt, ob sie vom User oder vom Eintreffen eine RemoteNotification gestartet wurde?