Vue d’ensemble
KlugPush apporte les notifications push à distance aux applications AIR sur macOS. Il enregistre l’application auprès du service de notifications push d’Apple, vous fournit le jeton d’appareil pour votre serveur et transmet les notifications entrantes à ActionScript.
Sur macOS, un utilisateur qui a refusé les notifications une fois n’est plus sollicité. KlugPush indique donc à tout moment l’état actuel de l’autorisation et ouvre la page Notifications des Réglages Système, afin que les utilisateurs puissent activer les notifications plus tard.
KlugPush est utilisé chaque jour dans la version Mac de nos applications, notre preuve de concept.
Fonctionnalités
- Autonome : une seule ANE, sans bibliothèque centrale ni ANE de dépendance à ajouter
- Demande l’autorisation et enregistre l’application pour les notifications à distance
- Jeton d’appareil pour votre serveur, dès la fin de l’enregistrement
- Notifications entrantes transmises à ActionScript au format JSON
- État de l’autorisation en direct : pas encore décidé, refusé ou autorisé
- Ouvre directement les Réglages Système sur Notifications
- Envoi direct via le service push d’Apple, sans fournisseur push supplémentaire
Plateformes prises en charge
Sur les autres plateformes, isSupported renvoie false : le même code peut donc rester dans une application multiplateforme.
Prise en main
Ajoutez l’extension au descripteur de votre application :
<extensions>
<extensionID>com.klug.push.Push</extensionID>
</extensions>
L’application doit être signée avec le droit (entitlement) de notifications push et un profil de provisionnement incluant la capacité Push Notifications.
Exemples de code
Quatre flux complets, tirés de l’API qui tourne dans la version Mac de nos applications. Chaque appel retourne immédiatement ; les résultats arrivent via vos callbacks et sous forme de StatusEvents. Documentation complète →
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
Aperçu de l’API
| Push.getInstance() | Renvoie l’instance unique. |
| isSupported | Vrai sur macOS, faux ailleurs. |
| register(onToken, onError, onNotification) | Demande l’autorisation et enregistre l’application pour les notifications à distance. Les trois callbacks sont facultatifs ; onNotification est appelé pendant que l’application s’exécute. Renvoie false là où le push n’est pas pris en charge. |
| token | Le dernier jeton d’appareil, ou null tant que l’enregistrement n’est pas terminé. |
| authStatus | Le dernier état d’autorisation connu ; -1 tant que register() ou refreshStatus() n’a pas été exécuté. |
| refreshStatus(onStatus) | Lit l’état actuel de l’autorisation ; onStatus(status:int) est appelé à son arrivée, puis à nouveau avec la réponse à la demande de register(). |
| openSettings() | Ouvre les Réglages Système sur Notifications. |
| STATUS_NOT_DETERMINED, STATUS_DENIED, STATUS_AUTHORIZED | Valeurs d’état de l’autorisation 0, 1 et 2. macOS peut aussi renvoyer 3 (provisoire) et 4 (éphémère). |
| TOKEN, ERROR, NOTIFICATION | Niveaux de StatusEvent pour les écouteurs : le niveau indique le type, le code porte la valeur. |
Événements
| level token | code = le jeton d’appareil, une chaîne hexadécimale |
| level error | code = le message d’erreur de l’enregistrement |
| level notification | code = la charge utile de la notification au format JSON |
Acheter KlugPush
Une licence annuelle pour une application AIR, avec toutes les mises à jour pendant 12 mois. Après le paiement, vous recevez l’extension, la bibliothèque ActionScript et la documentation par e-mail, généralement sous un jour ouvré. Licence et conditions
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Sans support
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 7 jours
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 48 heures
Prérequis
| SDK AIR | 51.x (HARMAN) |
| macOS | macOS 11 ou version ultérieure |
| Signature | Droit (entitlement) de notifications push et profil de provisionnement correspondant |
| Serveur | Envoie les notifications via le service push d’Apple |