Ist es möglich, die Apple Push Notification Services ohne iPhone-Anwendung zu testen? (Erstellen eines Emulators unter Windows?)
Wenn nicht, wie könnte ich das testen? Gibt es dafür eine kostenlose Beispielanwendung?
Ich habe den Server-Provider erstellt, muss aber die Funktionalität testen.
iphone
apple-push-notifications
Zanoni
quelle
quelle
mutable-content
Schlüssel immer noch nicht zu ehren . Siehe hierAntworten:
Tut mir leid, aber Sie müssen Hardware finden, um diese Funktionalität zu testen.
Push-Benachrichtigungen sind im Simulator nicht verfügbar. Sie benötigen ein Bereitstellungsprofil von iTunes Connect und müssen daher auf einem Gerät installiert sein. Das bedeutet auch, dass Sie wahrscheinlich in das Apple iPhone-Entwicklerprogramm aufgenommen werden müssen und Ihre 99 US-Dollar bezahlen müssen.
Positiv zu vermerken ist, dass Sie mit dem iPhone OS 3.0-Update diese Funktionalität auf jedem Gerät testen können, einschließlich der iPhones der ersten Generation.
quelle
If isn't, how could I test that? Is there a free sample application compiled to do that? I created the Server provider, but I need test the functionallity.
Sie können keine echten Push-Benachrichtigungen testen. Allerdings können Sie Ihre App testen Antwort auf eine simulierte Push - Benachrichtigung durch eine programmatisch erstellen und manuell AppDelegate des auslösenden
- application:application didReceiveRemoteNotification:notification
Methode.So lösen Sie dies von einer anderen Klasse aus (z. B. einem UIViewController):
[[[UIApplication sharedApplication] delegate] application:[UIApplication sharedApplication] didReceiveRemoteNotification:testNotification];
Die testNotification sollte das gleiche Format wie eine echte Benachrichtigung haben, nämlich ein NSDictionary, das Eigenschaftslistenobjekte plus NSNull enthält.
Hier ist ein Beispiel für die Bereitstellung der
testNotification
oben genannten Informationen:NSMutableDictionary *notification = [[NSMutableDictionary alloc] init]; [notification setValue:@"Test" forKey:@"alert"]; [notification setValue:@"default" forKey:@"sound"]; NSMutableDictionary *testNotification = [[NSMutableDictionary alloc] init]; [testNotification setValue:notification forKey:@"aps"];
Dies sollte ein angemessenes Benachrichtigungs-NSDictionary erstellen, mit dem gearbeitet werden kann.
quelle
Heutzutage können wir Push-Benachrichtigungen mit dieser Bibliothek testen .
Es ist ziemlich einfach, Push über das Terminal zu senden:
echo -n '{"message":"message"}' | nc -4u -w1 localhost 9930 echo -n '{"aps":{"alert" : "message","badge" : 99,"sound" : "default"}, "myField" : 54758}' | nc -4u -w1 localhost 9930
quelle
Testen von Push-Benachrichtigungen mit dem Xcode 11.4 iOS Simulator
Ab Xcode 11.4 ist es jetzt möglich, Push-Benachrichtigungen durch Ziehen und Ablegen einer
.apns
Datei auf den iOS-Simulator zu simulieren . Die Versionshinweise zu Xcode 11.4 enthalten Folgendes zu der neuen Funktion:Beispiel
Hier ist ein Beispiel für eine solche
.apns
Datei, die auf die Systemeinstellungs-App ausgerichtet ist:{ "Simulator Target Bundle": "com.apple.Preferences", "aps": { "alert": "This is a simulated notification!", "badge": 3, "sound": "default" } }
Durch Ziehen und Ablegen auf den Zielsimulator wird die Benachrichtigung angezeigt und das Abzeichen festgelegt:
Um dies für Debugging-Zwecke zu verwenden, müssen Sie nur die ID
Simulator Target Bundle
Ihrer eigenen App ändern und die Nutzdaten an Ihre Debugging-Anforderungen anpassen !quelle
didReceiveLocalNotification
(nur zu Simulationszwecken)? Abgesehen davon: Sie sollten wahrscheinlich nur die vomUserNotifications
Framework bereitgestellten Methoden verwenden . Ich denke, die werden funktionieren ...Der Simulator führt keine Push-Benachrichtigungen aus.
Und um von einem Server zu pushen, müssen Sie Geräte haben, auf die Sie pushen können, sowie Ihre App auf diesem Gerät.
Das Token enthält die App-Identität sowie die Geräte-ID.
quelle
Apple unterstützt Push-Benachrichtigungen für Simulatoren. iOS 13.4 und höher oder Xcode 11.4 und höher.
Erstellen Sie wie gewohnt ein Xcode- Projekt und implementieren Sie eine Benutzerbenachrichtigung und Autorisierungsberechtigung.
Führen Sie Ihre Anwendung in Simulator iOS 13.4 und höher aus .
Stellen Sie Ihre Bewerbung in den Hintergrund.
{ "aps": { "alert": { "title": "Test Push", "body": "Success! Push notification in simulator! 🎉", "sound": "default" }, "badge": 10 }, "Simulator Target Bundle": "com.company.app" }
Im Moment wird Ihre Push-Benachrichtigung im Simulator angezeigt.
Außerdem können Sie eine Push-Benachrichtigung per Terminal simulieren
Holen Sie sich Ihre Simulator- ID, indem Sie Fenster-> Geräte und Simulatoren öffnen und Ihren Zielsimulator auswählen. Klicken Sie mit der rechten Maustaste und kopieren Sie Ihre ID .
Erstellen Sie nun einen Terminalbefehl wie
xcrun simctl push <simulator-identifier> <path-to-payload-file>
Ex:
xcrun simctl push 27A23727-45A9-4C12-BE29-8C0E6D1E5360 payload.apns
Führen Sie diesen Befehl aus und simulieren Sie die Push-Benachrichtigung im Simulator
quelle
du musst verwenden
NSString *notificationString = @"{\"aps\":{\"alert\":\"Test alert\",\"sound\":\"default\"}}"; NSData *notificationData = [notificationString dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *testNotification = [NSJSONSerialization JSONObjectWithData:notificationData options:0 error:&error]; [[[UIApplication sharedApplication] delegate] application:[UIApplication sharedApplication] didReceiveRemoteNotification:testNotification fetchCompletionHandler:nil];
quelle
Xcode 11.4 Beta unterstützt die Push-Benachrichtigung in Simulator
Simulator unterstützt die Simulation von Remote-Push-Benachrichtigungen, einschließlich Benachrichtigungen zum Abrufen von Hintergrundinhalten. Ziehen Sie im Simulator eine APN-Datei per Drag & Drop auf den Zielsimulator. Die Datei muss eine JSON-Datei mit einer gültigen Nutzlast des Apple Push Notification Service sein, einschließlich des Schlüssels "aps". Es muss außerdem ein „Simulator-Zielpaket“ der obersten Ebene mit einem Zeichenfolgenwert enthalten, der mit der Paketkennung der Zielanwendung übereinstimmt.
simctl unterstützt auch das Senden simulierter Push-Benachrichtigungen. Wenn die Datei "Simulator Target Bundle" enthält, ist die Bundle-ID nicht erforderlich, andernfalls müssen Sie sie als Argument angeben (8164566):
$ xcrun simctl push <device> com.example.my-app ExamplePush.apns
Versionshinweise: https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_beta_release_notes
quelle
Neben der Antwort von @ fredpi können Sie auch das Poes- Befehlszeilentool verwenden. Es ermöglicht uns, Remote-Push-Benachrichtigungen auf dem iOS-Simulator schnell zu testen, ohne eine JSON-Payload-Datei erstellen zu müssen.
Poes --help OVERVIEW: A Swift command-line tool to easily send push notifications to the iOS simulator USAGE: Poes <options> OPTIONS: --body, -b The body of the Push Notification --bundle-identifier The bundle identifier to push to --mutable, -m Adds the mutable-content key to the payload --title, -t The title of the Push Notification --verbose Show extra logging for debugging purposes --help Display available options
Der folgende Befehl kann ausreichen, um eine einfache Push-Benachrichtigung mit einem Standardtitel und -text zu senden:
$ Poes --bundle-identifier com.wetransfer.app --verbose Generated payload: { "aps" : { "alert" : { "title" : "Default title", "body" : "Default body" }, "mutable-content" : false } } Sending push notification... Push notification sent successfully
quelle
Ja, Sie können die Push-Benachrichtigung auf dem Simulator überprüfen, müssen jedoch in Ihrer App eine Bibliothek mit dem Namen SimulatorRemoteNotifications verwenden . Mit nur 4-5 Schritten können Sie die Push-Benachrichtigung auf dem Simulator testen.
Sie bieten auch PODs:
pod 'SimulatorRemoteNotifications', '~> 0.0.3'
quelle