← Toutes les extensions

Extension native

KlugPush

com.klug.push.Push

AUCUN APM NÉCESSAIRE. Téléchargez et profitez-en. Impossible de faire plus simple.

Notifications push à distance pour les applications AIR sur Mac, avec l’état de l’autorisation en direct et un raccourci vers les réglages système.


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

macOS Apple silicon · Intel

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 :

app.xml
<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 →

1 · Enregistrer l’application et envoyer le jeton à votre serveur
Push.as
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 );
}
2 · Notifications pendant que l’application s’exécute
Incoming.as
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 );
}
3 · État de l’autorisation et Réglages Système
Settings.as
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 );
});
4 · Écouter avec des événements plutôt qu’avec des callbacks
Events.as
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.
isSupportedVrai 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.
tokenLe dernier jeton d’appareil, ou null tant que l’enregistrement n’est pas terminé.
authStatusLe 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_AUTHORIZEDValeurs d’état de l’autorisation 0, 1 et 2. macOS peut aussi renvoyer 3 (provisoire) et 4 (éphémère).
TOKEN, ERROR, NOTIFICATIONNiveaux de StatusEvent pour les écouteurs : le niveau indique le type, le code porte la valeur.

Événements

level tokencode = le jeton d’appareil, une chaîne hexadécimale
level errorcode = le message d’erreur de l’enregistrement
level notificationcode = 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

Simple
€19 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Sans support
Acheter Simple
Standard
€149 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Réponse par e-mail sous 7 jours
Acheter Standard
Priority
€299 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Réponse par e-mail sous 48 heures
Acheter Priority
Les taxes sont calculées lors du paiement par Link (Stripe). Vous saisissez l’identifiant d’application de votre app AIR pendant le paiement.

Prérequis

SDK AIR51.x (HARMAN)
macOSmacOS 11 ou version ultérieure
SignatureDroit (entitlement) de notifications push et profil de provisionnement correspondant
ServeurEnvoie les notifications via le service push d’Apple