← Alle udvidelser

Native udvidelse

KlugPush

com.klug.push.Push

INGEN APM NØDVENDIG. Download og nyd. Det bliver ikke enklere.

Remote push-notifikationer til AIR-apps på Mac med live tilladelsesstatus og en genvej til systemindstillingerne.

macOS I produktion Fra €19 / år · Køb

Oversigt

KlugPush bringer remote push-notifikationer til AIR-apps på macOS. Den registrerer appen hos Apples push-notifikationstjeneste, giver dig enhedstokenet til din server og leverer indkommende notifikationer til ActionScript.

På macOS bliver en bruger, der engang har afvist notifikationer, ikke spurgt igen. KlugPush rapporterer derfor den aktuelle tilladelsesstatus til enhver tid og åbner siden Notifikationer i Systemindstillinger, så brugerne kan slå notifikationer til senere.

KlugPush er i daglig brug i Mac-versionen af vores apps, vores proof of concept.

Funktioner

  • Selvstændig: én ANE, intet kernebibliotek eller afhængige ANE'er at tilføje
  • Anmoder om tilladelse og registrerer til remote notifikationer
  • Enhedstoken til din server, så snart registreringen er færdig
  • Indkommende notifikationer leveret til ActionScript som JSON
  • Live tilladelsesstatus: endnu ikke afgjort, afvist eller tilladt
  • Åbner Systemindstillinger direkte ved Notifikationer
  • Sendes direkte gennem Apples push-tjeneste, ingen ekstra push-udbyder nødvendig

Understøttede platforme

macOS Apple silicon · Intel

På andre platforme returnerer isSupported false, så den samme kode kan blive i en cross-platform-app.

Kom i gang

Tilføj udvidelsen til din applikationsdescriptor:

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

Appen skal være signeret med push-notifikations-entitlementet og en provisioning profile, der inkluderer capability'en Push Notifications.

Kodeeksempler

Fire komplette flows, taget fra den API, der kører i Mac-versionen af vores apps. Hvert kald vender straks tilbage; resultater ankommer via dine callbacks og som StatusEvents. Fuld dokumentation →

1 · Registrér og send tokenet til din server
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 · Notifikationer, mens appen kører
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 · Tilladelsesstatus og Systemindstillinger
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 · Lyt med events i stedet for 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

API-oversigt

Push.getInstance()Returnerer den enkelte instans.
isSupportedSand på macOS, falsk andre steder.
register(onToken, onError, onNotification)Anmoder om tilladelse og registrerer til remote notifikationer. Alle tre callbacks er valgfrie; onNotification udløses, mens appen kører. Returnerer false, hvor push ikke understøttes.
tokenDet seneste enhedstoken, eller null, indtil registreringen er færdig.
authStatusDen senest kendte tilladelsesstatus; -1, indtil register() eller refreshStatus() er kørt.
refreshStatus(onStatus)Læser den aktuelle tilladelsesstatus; onStatus(status:int) kaldes, når den ankommer, og igen med svaret på prompten fra register().
openSettings()Åbner Systemindstillinger ved Notifikationer.
STATUS_NOT_DETERMINED, STATUS_DENIED, STATUS_AUTHORIZEDVærdier for tilladelsesstatus 0, 1 og 2. macOS kan også rapportere 3 (provisional) og 4 (ephemeral).
TOKEN, ERROR, NOTIFICATIONStatusEvent-niveauer til listeners: niveauet angiver typen, koden bærer værdien.

Events

level tokencode = enhedstokenet, en hex-streng
level errorcode = fejlmeddelelsen fra registreringen
level notificationcode = notifikationens payload som JSON

Køb KlugPush

En årlig licens til én AIR-applikation, med alle opdateringer i 12 måneder. Efter betaling modtager du udvidelsen, ActionScript-biblioteket og dokumentationen pr. e-mail, normalt inden for én hverdag. Licens og vilkår

Enkel
€19 / år
  • Licens til én AIR-applikation
  • Alle opdateringer i 12 måneder
  • Ingen support
Køb Enkel
Standard
€149 / år
  • Licens til én AIR-applikation
  • Alle opdateringer i 12 måneder
  • Svar pr. e-mail inden for 7 dage
Køb Standard
Prioritet
€299 / år
  • Licens til én AIR-applikation
  • Alle opdateringer i 12 måneder
  • Svar pr. e-mail inden for 48 timer
Køb Prioritet
Moms og afgifter beregnes ved checkout af Link (Stripe). Du angiver application ID'et for din AIR-app under checkout.

Krav

AIR SDK51.x (HARMAN)
macOSmacOS 11 eller nyere
SigneringPush-notifikations-entitlement og en tilhørende provisioning profile
ServerSender notifikationer gennem Apples push-tjeneste