In der Präsentation "Was ist neu bei Multitasking?" Der WWDC 2013 gibt es einen Abschnitt über stille Push-Benachrichtigungen. Es scheint einfach zu sein. Laut Präsentation werden Benutzer nicht über die Benachrichtigung benachrichtigt, wenn Sie die APS-Nutzdaten nur mit dem verfügbaren Inhalt auf 1 senden.
// A. This doesn't work
{
aps: {
content-available: 1
}
}
Meine Tests haben gezeigt, dass dies nicht funktioniert, da kein Push empfangen wird. Aber wenn ich das Sound-Attribut einbinde, aber das Alert-Attribut ausschließe, funktioniert es (obwohl es nicht mehr still ist).
// B. This works
{
aps: {
content-available: 1,
sound: "default"
}
}
Wenn ich jedoch das Soundattribut ändere, um ein leises Audio abzuspielen, kann ich einen leisen Push nachahmen.
// C. This works too.
{
aps: {
content-available: 1,
sound: "silence.wav"
}
}
Weiß jemand:
- Ist das ein Fehler?
- Und wenn es richtig ist anzunehmen, dass B oder C als Remote-Benachrichtigung behandelt wird (und nicht als Fehler bei Silent Push, bei dem Sie ein Sound-Attribut benötigen)? Wenn ja, bedeutet dies, dass die Rate nicht wie bei Silent Pushes begrenzt ist ... was Apple wahrscheinlich beheben wird. Also sollte ich mich wahrscheinlich nicht darauf verlassen.
- Was ist das Ratenlimit (N drückt alle X Sekunden usw.)?
Danke im Voraus.
Mit weiteren Informationen bearbeiten
Für A spielt der Status der Anwendung keine Rolle. Eine Benachrichtigung wird nie empfangen.
Es scheint, als ob B und C nur funktionieren, wenn Sie die Attribute und Werte wie unten in Anführungszeichen setzen.
{"aps":{"content-available": 1, "sound":"silent.wav"}}
Und die Benachrichtigung kommt in der Anwendung an: didReceiveRemoteNotification: fetchCompletionHandler: unabhängig vom Status.
Background fetch
aktivieren, da die erste Option funktionieren sollte. Silent Push benötigt kein Soundattribut und kommt immer an, auch wenn die Anwendung im Hintergrund / Vordergrund ausgeführt wird oder nicht ausgeführt wird. Project Capabilities
Background Modes
application:didReceiveRemoteNotification:fetchCompletionHandler: