230 likes | 343 Views
App Literatur iPhone Entwicklung Push-Benachrichtigungen. Universität zu Köln Medien zwischen Technologie und Gesellschaft Prof. Dr. Manfred Thaller WS 2012/13 Dominik Finkenberger. Inhalt. Was sind Push-Benachrichtigungen? Bedingungen und Funktion Unterstützung für mehrere Provider
E N D
App Literatur iPhone EntwicklungPush-Benachrichtigungen Universität zu Köln Medien zwischen Technologie und Gesellschaft Prof. Dr. Manfred Thaller WS 2012/13 Dominik Finkenberger
Inhalt • Was sind Push-Benachrichtigungen? • Bedingungen und Funktion • Unterstützung für mehrere Provider • Sicherheitsaspekte • Einschränkungen von Push-Benachrichtigungen • Ein Push-System einrichten • Die Benachrichtigung
1. Was sind Push-Benachrichtigungen? • Nachrichten eines externen Dienstes • Client/Server-System • Zustellung auf den Client iPhone Anwendung • Remote-Benachrichtigungssystem benötigt • Push-Nachricht löst ein Badge, einen Klang, oder eine Benachrichtigung aus, Aktualisierung möglich
1. Was sind Push-Benachrichtigungen? Badge Text
1. Was sind Push-Benachrichtigungen? • Vorteile: • Nutzer muss die Anwendung nicht starten • Akkukapazität wird geschont • CPU-Ressourcen werden geschont • Kanal für Webdienste (Kalender, News) • Nutzer hat Entscheidungsfreiheit
2. Bedingungen und Funktion • Bedingungen • jeweilige Anwendung muss installiert sein • das iPhone muss online sein • Nutzer muss Remote-Nachrichten erlauben • Benachrichtigung darf 256 Bytes nicht überschreiten
2. Bedingungen und Funktion • Funktionsablauf: • Server wird ausgelöst durch Ereignis (Mail,Termin) etc • Push-Provider stellt Nachricht dem zentralen Apple-Server zu • Server erstellt Benachrichtigungsdaten für ein bestimmtes Gerät, welches diese weitergibt
3. Unterstützung für mehrere Provider • APNS ist ausgelegt für viele Provider-Verbindungen • realisiert über Gateways • Provider kann sofort Kontakt aufnehmen
4. Sicherheit • Push-Provider benötigt SSL-Zertifikat (https) • Token (bezeichnet Gerät und Anwendung) • Ablauf: • Eingang der authentifizierten Nachricht am APNS • Verbindungseinrichtung zwischen APNS und iPhone • onlineZustellung | offline Warteschlange • Zertifikat und Token sind sensible Informationen • bei Missbrauch werden Zertifikate gesperrt • Folge: Ausschluss der App aus dem App Store
5. Einschränkungen von Push-Benachrichtigungen • u.U. falsche Reihenfolge der Nachrichten • Nachrichten konkurrieren in der Warteschlange • möglicherweise gehen Nachrichten verloren • keine Mitteilung über verlorene Nachrichten deswegen: • keine wesentlichen Informationen senden • nur Hinweise, deren Ausbleiben keine Folgen hat
6. Ein Push-System einrichten • eindeutigen Anwendungsbezeichner erstellen • Bsp: com.domänenname.anwendungsname • SSL-Zertifikat anfordern • SSL-Zertifikat mit der App ID bezeichnen • Push-spezifisches Profil anlegen • eine Anwendung registrieren • beim ersten Start meldet sich die App beim Remote-Benachrichtigungssystem an • dabei werden die möglichen Benachrichtigungskanäle festgelegt (Badge, Sound, Text)
6. Ein Push-System einrichten • das Geräte-Token abrufen • bezeichnet mit SSL-Zertifikat eindeutig ein iPhone • iPhone fordert Token von APNS an und übergibt es der Anwendung • diese gibt das Token zurück an die Providerkomponente • Erst wenn dem Push-Provider das Token vorliegt, kann dieser Benachrichtigungen senden
6. Ein Push-System einrichten • auf Nachrichten reagieren • läuft die Anwendung , hat die Benachrichtigung keine Auswirkung • läuft nicht: • Badge wird angezeigt • Nachricht wird angezeigt • Klickt der Nutzer nicht auf „Abbrechen“, sondern auf „Anzeigen“, so öffnet sich die betroffene Anwendung
7. Die Benachrichtigung • Anwendung benötigt ein NSDictionary (aps) • Benachrichtigung und Attribute in JSON • Gesamte Nutzlast beträgt 256 Bytes • Darin enthalten: - Nachrichtentext (string, Dictionary) - Buttonfunktion; bei Bedarf Beschriftung (string, Dictionary) - Sounddatei-Namen (Dateien müssen vorhanden sein) - Art des Badges (number)
7. Die Benachrichtigung • Nutzlast Beispiel 1: { "aps" : { "alert" : "Message received from Bob" }} • Benachrichtigung wird angezeigt, außerdem erscheinen die Buttons „Anzeigen“ und „Abbrechen“
7. Die Benachrichtigung • Nutzlast Beispiel 2: { "aps" : { "alert" : { "body" : "Bob wants to play poker", "action-loc-key" : "PLAY" }, "badge" : 5, } Nachricht wird angezeigt, statt „Anzeigen“ erscheint auf dem Button „Spielen“, Badge mit einer 5 wird angezeigt Besonderheit: PLAY ist eine Lokalisierungs-Variable passt sich der Benutzersprache an
7. Die Benachrichtigung • Nutzlast Beispiel 3: { „aps“ : "alert" : { "loc-key" : "GAME_PLAY_REQUEST _FORMAT", "loc-args" : [ "Jenna", "Frank"] , ’’sound“ : “play.aiff“ }} Localizable.strings im .lproj Ordner der aktuellen Sprache: "GAME_PLAY_REQUEST_FORMAT" = "%@ and %@ have invited you to play Monopoly";
7. Die Benachrichtigung • Nutzlast Beispiel 3: • lproj-Ordner enthält für jede Sprache einen Unterordner • Localizable.strings enthält wiederum Schlüssel-Wert-Paare • Nachricht: Jenna and Frank have invited you to play monopoly.
7. Die Benachrichtigung • Die mit iOS 4.0 neu-eingeführte Eigenschaft „launch-image“ ermöglicht Darstellung eines Bildes • App gelöscht, was nun? • Apple verfolgt alle Zustellversuche und gibt dem Benutzer passives Feedback • Ist eine App deinstalliert worden, kommt sie nach mehrmaligen fehlgeschlagenen Versuchen auf eine Liste • Entwickler muss eigenständig die betroffenen Geräte-Token von seiner Push-Liste nehmen
7. Die Benachrichtigung • Hinweise an Entwickler: • Der Push-Dienst wird über APNS verteilt, ABER die Kommunikation zum APNS ist Sache des Entwicklers • Größe des Kundenstamms ist zu berücksichtigen, da die Dienstschicht ebenso vom Entwickler bereitzustellen ist • Bei 10.000 Nutzern und 15-minütigen Updates ergeben sich 1.000.000 Zugriffe über Push am Tag, der Zeitraum zwischen Aktualisierungen ist jedoch oft kleiner große Rechenlast, die schwer zu bewältigen ist • Gut überlegen, ob man Push wirklich braucht, da ein einmal angebotener Dienst vom Benutzer auf Dauer erwartet wird • System einrichten, dass mit dem Benutzerstamm wachsen kann
Quellen • Sadun, Erica: Das große iPhone-Entwicklerbuch • https://developer.apple.com/library/ios/#documentation
Noch Fragen? Vielen Dank!