Wie kann ich meinen Push-Benachrichtigungen in einer iOS 10 App Medienanhänge hinzufügen?

9

Es gibt mehrere Beispiele dafür, wie Sie Ihr Projekt so einrichten sollten, dass Rich-Benachrichtigungen hinzugefügt werden, die die Technologie "Medienanhänge" zum Anzeigen von Bildern verwenden. Ich habe die meisten von ihnen gelesen, aber etwas, was ich vermisst habe, weil mein Projekt keine reichen Benachrichtigungen mit dieser Nutzlast anzeigt (getestet mit APNS-Tool und Boodle):

%Vor%

Die Benachrichtigung ist sichtbar, aber auf 3D Touch werden keine zusätzlichen Informationen angezeigt (wie das Bild oder der geänderte Titel). Die Benachrichtigungs-Erweiterung Haltepunkte und% Co_de% Nachrichten funktionieren ebenfalls nicht.

Hier ist mein Demo-Projekt: Ссылка

Was ich getan habe:

  1. Ein neues Projekt erstellt
  2. implementierte iOS-Stil Autorisierung:
%Vor%
  1. Debugging zu AppDelegate hinzugefügt:
%Vor%
  1. Dem Projekt wurde ein neues Ziel hinzugefügt: Notification Service Extension:

  1. NSLog zum Projekt hinzugefügt

  2. Code zum Hinzufügen eines Bananenanhangs in banana.gif

  3. hinzugefügt
%Vor%

Was habe ich vermisst?

Zusätzliche Information: Das Gleiche funktioniert, wenn ich lokale Benachrichtigungen anstelle von Remote-Benachrichtigungen verwende.

    
gklka 02.10.2016, 22:27
quelle

1 Antwort

2

Du bist am meisten da. Die Art, wie Sie den Anhang senden, ist normalerweise eine URL in Ihrer Payload. Wenn Sie jedoch den Anhang fest codieren möchten, wie es bei Ihrem Code der Fall ist, würde es meiner Meinung nach funktionieren, aber ich denke, Sie haben eine wichtige Komponente übersehen. Ich denke, die Serviceerweiterung hat keinen Zugriff auf das Hauptpaket oder seine Ressourcen. Wenn Sie der Serviceerweiterung eine Ressource hinzugefügt haben und versucht haben, diese zu laden (mit etwas wie [NSBundle bundleForClass:[NotificationService class]] ), vermute ich, dass es funktioniert.

Wenn Sie jedoch die URL als Teil der Payload senden, laden Sie das Bild von dieser URL und nicht vom Bundle. In diesem Fall bin ich mir ziemlich sicher, dass Sie auch startAccessingSecurityScopedResource auf NSURL (zusammen mit stopAccessingSecurityScopedResource ) verwenden müssen.

Hoffe das hilft!

    
Jerry 18.10.2016, 02:00
quelle