← Todas las extensiones

Extensión nativa

KlugPush

com.klug.push.Push

NO NECESITAS APM. Descarga y disfruta. No puede ser más sencillo.

Notificaciones push remotas para apps AIR en Mac, con el estado de los permisos en tiempo real y acceso directo a los ajustes del sistema.

macOS En producción Desde €19 / año · Comprar

Resumen

KlugPush lleva las notificaciones push remotas a las apps AIR en macOS. Registra la app en el servicio de notificaciones push de Apple, te da el token del dispositivo para tu servidor y entrega las notificaciones entrantes a ActionScript.

En macOS, a un usuario que rechazó las notificaciones una vez no se le vuelve a preguntar. Por eso KlugPush informa del estado actual de los permisos en cualquier momento y abre la página de Notificaciones en Ajustes del Sistema, para que los usuarios puedan activarlas más adelante.

KlugPush se usa a diario en la versión para Mac de nuestras apps, nuestra prueba de concepto.

Funciones

  • Autónoma: una ANE, sin biblioteca central ni ANE de dependencias que añadir
  • Solicita permiso y se registra para notificaciones remotas
  • Token del dispositivo para tu servidor, en cuanto termina el registro
  • Notificaciones entrantes entregadas a ActionScript como JSON
  • Estado de los permisos en tiempo real: aún sin decidir, denegado o permitido
  • Abre Ajustes del Sistema directamente en Notificaciones
  • Se envían directamente a través del servicio push de Apple, sin necesidad de otro proveedor de push

Plataformas compatibles

macOS Apple silicon · Intel

En otras plataformas isSupported devuelve false, por lo que el mismo código puede permanecer en una app multiplataforma.

Primeros pasos

Añade la extensión al descriptor de tu aplicación:

app.xml
<extensions>
    <extensionID>com.klug.push.Push</extensionID>
</extensions>

La app debe firmarse con el entitlement de notificaciones push y un perfil de aprovisionamiento que incluya la capacidad Push Notifications.

Ejemplos de código

Cuatro flujos completos, tomados de la API que funciona en la versión para Mac de nuestras apps. Cada llamada devuelve de inmediato; los resultados llegan mediante tus callbacks y como StatusEvents. Documentación completa →

1 · Registrar y enviar el token a tu servidor
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 · Notificaciones mientras la app está en ejecución
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 · Estado de los permisos y Ajustes del Sistema
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 · Escuchar con eventos en lugar de 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

Resumen de la API

Push.getInstance()Devuelve la instancia única.
isSupportedVerdadero en macOS, falso en el resto.
register(onToken, onError, onNotification)Solicita permiso y se registra para notificaciones remotas. Los tres callbacks son opcionales; onNotification se dispara mientras la app está en ejecución. Devuelve false donde push no es compatible.
tokenEl último token del dispositivo, o null hasta que termina el registro.
authStatusEl último estado de permisos conocido; -1 hasta que se ejecuta register() o refreshStatus().
refreshStatus(onStatus)Lee el estado actual de los permisos; se llama a onStatus(status:int) cuando llega y de nuevo con la respuesta al aviso de register().
openSettings()Abre Ajustes del Sistema en Notificaciones.
STATUS_NOT_DETERMINED, STATUS_DENIED, STATUS_AUTHORIZEDValores de estado de permisos 0, 1 y 2. macOS también puede informar 3 (provisional) y 4 (efímero).
TOKEN, ERROR, NOTIFICATIONNiveles de StatusEvent para los listeners: el nivel indica el tipo y el código lleva el valor.

Eventos

nivel tokencode = el token del dispositivo, una cadena hexadecimal
nivel errorcode = el mensaje de error del registro
nivel notificationcode = el payload de la notificación como JSON

Compra KlugPush

Una licencia anual para una aplicación AIR, con todas las actualizaciones durante 12 meses. Tras el pago recibes la extensión, la biblioteca ActionScript y la documentación por e-mail, normalmente en un día hábil. Licencia y términos

Simple
€19 / año
  • Licencia para una aplicación AIR
  • Todas las actualizaciones durante 12 meses
  • Sin soporte
Comprar Simple
Standard
€149 / año
  • Licencia para una aplicación AIR
  • Todas las actualizaciones durante 12 meses
  • Respuesta por e-mail en un plazo de 7 días
Comprar Standard
Priority
€299 / año
  • Licencia para una aplicación AIR
  • Todas las actualizaciones durante 12 meses
  • Respuesta por e-mail en un plazo de 48 horas
Comprar Priority
Link (Stripe) calcula los impuestos al pagar. Durante el pago indicas el ID de aplicación de tu app AIR.

Requisitos

AIR SDK51.x (HARMAN)
macOSmacOS 11 o posterior
FirmaEntitlement de notificaciones push y un perfil de aprovisionamiento correspondiente
ServidorEnvía notificaciones a través del servicio push de Apple