Überblick
KlugPush bringt Remote-Push-Benachrichtigungen in AIR-Apps unter macOS. Es registriert die App beim Push-Benachrichtigungsdienst von Apple, liefert Ihnen das Device-Token für Ihren Server und übergibt eingehende Benachrichtigungen an ActionScript.
Unter macOS wird ein Nutzer, der Benachrichtigungen einmal abgelehnt hat, nicht erneut gefragt. KlugPush meldet deshalb jederzeit den aktuellen Berechtigungsstatus und öffnet die Seite „Mitteilungen“ in den Systemeinstellungen, damit Nutzer Benachrichtigungen später einschalten können.
KlugPush ist in der Mac-Version unserer Apps täglich im Einsatz, unserem Praxisbeweis.
Funktionen
- Eigenständig: eine ANE, keine Kernbibliothek und keine abhängigen ANEs, die Sie ergänzen müssten
- Fragt die Berechtigung ab und registriert für Remote-Benachrichtigungen
- Device-Token für Ihren Server, sobald die Registrierung abgeschlossen ist
- Eingehende Benachrichtigungen werden als JSON an ActionScript übergeben
- Live-Berechtigungsstatus: noch nicht entschieden, abgelehnt oder erlaubt
- Öffnet die Systemeinstellungen direkt bei den Mitteilungen
- Direkt über den Push-Dienst von Apple gesendet, kein zusätzlicher Push-Anbieter nötig
Unterstützte Plattformen
Auf anderen Plattformen gibt isSupported false zurück, sodass derselbe Code in einer plattformübergreifenden App bleiben kann.
Erste Schritte
Fügen Sie die Erweiterung Ihrem Application Descriptor hinzu:
<extensions>
<extensionID>com.klug.push.Push</extensionID>
</extensions>
Die App muss mit dem Push-Benachrichtigungs-Entitlement und einem Provisioning Profile signiert sein, das die Capability „Push Notifications“ enthält.
Codebeispiele
Vier vollständige Abläufe, entnommen der API, die in der Mac-Version unserer Apps läuft. Jeder Aufruf kehrt sofort zurück; Ergebnisse kommen über Ihre Callbacks und als StatusEvents an. Vollständige Dokumentation →
import com.klug.push.Push; var push:Push = Push.getInstance(); if ( push.isSupported ) // macOS; false on every other platform { // asks for permission on the first start, then registers with Apple's push service. // The token also arrives when the user declines: permission only affects the display. push.register( onToken, onPushError, onNotification ); } function onToken( token:String ):void { if ( token != loadSavedToken() ) // your app functions sendTokenToServer( token ); // e.g. a POST to https://your.server/push } function onPushError( message:String ):void { // typical cause: the app is not signed with the push entitlement and a matching profile trace( "push registration failed: " + message ); }
function onNotification( json:String ):void { // the full payload as your server sent it: the "aps" part plus your own keys var payload:Object = JSON.parse( json ); if ( payload.hasOwnProperty( "stationId" ) ) // a key your server adds openLiveView( payload.stationId ); // your app function } // later, e.g. after the user signed in to another account function onLogin():void { if ( push.token != null ) // the last token; null until registration finished sendTokenToServer( push.token ); }
import flash.events.Event; import flash.desktop.NativeApplication; // the live status arrives asynchronously; the callback stays set and // also receives the answer when register() shows the prompt push.refreshStatus( updateNotificationSwitch ); function updateNotificationSwitch( status:int ):void { if ( status == Push.STATUS_AUTHORIZED ) showSwitch( "on" ); // your app function else if ( status == Push.STATUS_DENIED ) showSwitch( "off" ); else if ( status == Push.STATUS_NOT_DETERMINED ) showSwitch( "not asked" ); } // macOS never asks a second time: the way back is System Settings function onSwitchTapped():void { if ( push.authStatus == Push.STATUS_DENIED ) push.openSettings(); } // the user may have changed it there: read it again when the app comes back NativeApplication.nativeApplication.addEventListener( Event.ACTIVATE, function( e:Event ):void { push.refreshStatus( updateNotificationSwitch ); });
import flash.events.StatusEvent; push.addEventListener( StatusEvent.STATUS, function( e:StatusEvent ):void { // here the LEVEL names the kind and the CODE carries the value if ( e.level == Push.TOKEN ) sendTokenToServer( e.code ); else if ( e.level == Push.ERROR ) trace( "push error: " + e.code ); else if ( e.level == Push.NOTIFICATION ) onNotification( e.code ); // JSON }); push.register(); // all three callbacks are optional
API-Übersicht
| Push.getInstance() | Gibt die einzige Instanz zurück. |
| isSupported | True unter macOS, sonst false. |
| register(onToken, onError, onNotification) | Fragt die Berechtigung ab und registriert für Remote-Benachrichtigungen. Alle drei Callbacks sind optional; onNotification wird ausgelöst, während die App läuft. Gibt false zurück, wo Push nicht unterstützt wird. |
| token | Das letzte Device-Token, oder null, bis die Registrierung abgeschlossen ist. |
| authStatus | Der zuletzt bekannte Berechtigungsstatus; -1, bis register() oder refreshStatus() gelaufen ist. |
| refreshStatus(onStatus) | Liest den aktuellen Berechtigungsstatus; onStatus(status:int) wird aufgerufen, sobald er vorliegt, und erneut mit der Antwort auf die Abfrage von register(). |
| openSettings() | Öffnet die Systemeinstellungen bei den Mitteilungen. |
| STATUS_NOT_DETERMINED, STATUS_DENIED, STATUS_AUTHORIZED | Werte des Berechtigungsstatus: 0, 1 und 2. macOS kann auch 3 (vorläufig) und 4 (ephemer) melden. |
| TOKEN, ERROR, NOTIFICATION | StatusEvent-Levels für Listener: Der Level benennt die Art, der Code trägt den Wert. |
Ereignisse
| level token | code = das Device-Token, ein Hex-String |
| level error | code = die Fehlermeldung der Registrierung |
| level notification | code = die Nutzdaten der Benachrichtigung als JSON |
KlugPush kaufen
Eine Jahreslizenz für eine AIR-Anwendung, mit allen Updates für 12 Monate. Nach der Zahlung erhalten Sie die Erweiterung, die ActionScript-Bibliothek und die Dokumentation per E-Mail, in der Regel innerhalb eines Werktags. Lizenz und Bedingungen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Kein Support
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 7 Tagen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 48 Stunden
Voraussetzungen
| AIR SDK | 51.x (HARMAN) |
| macOS | macOS 11 oder neuer |
| Signierung | Push-Benachrichtigungs-Entitlement und ein passendes Provisioning Profile |
| Server | Sendet Benachrichtigungen über den Push-Dienst von Apple |