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 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 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
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!