← Alle utvidelser

Native utvidelse

KlugPush

com.klug.push.Push

INGEN APM NØDVENDIG. Last ned og bruk. Det blir ikke enklere enn dette.

Eksterne pushvarsler for AIR-apper på Mac, med live tillatelsesstatus og en snarvei til systeminnstillingene.

macOS I produksjon Fra €19 / år · Kjøp

Oversikt

KlugPush gir AIR-apper på macOS eksterne pushvarsler. Den registrerer appen hos Apples pushvarseltjeneste, gir deg enhetstokenet til serveren din og leverer innkommende varsler til ActionScript.

På macOS blir en bruker som en gang har avslått varsler ikke spurt på nytt. KlugPush rapporterer derfor gjeldende tillatelsesstatus når som helst og åpner siden Varsler i Systeminnstillinger, slik at brukere kan slå på varsler senere.

KlugPush brukes daglig i Mac-versjonen av appene våre, vårt proof of concept.

Funksjoner

  • Selvstendig: én ANE, ingen kjernebibliotek eller avhengige ANE-er å legge til
  • Ber om tillatelse og registrerer for eksterne varsler
  • Enhetstoken til serveren din, så snart registreringen er ferdig
  • Innkommende varsler leveres til ActionScript som JSON
  • Live tillatelsesstatus: ikke avgjort, avslått eller tillatt
  • Åpner Systeminnstillinger direkte på Varsler
  • Sendes rett gjennom Apples pushtjeneste, ingen ekstra pushleverandør nødvendig

Støttede plattformer

macOS Apple silicon · Intel

På andre plattformer returnerer isSupported false, slik at den samme koden kan bli værende i en plattformuavhengig app.

Kom i gang

Legg utvidelsen til i applikasjonsbeskrivelsen din:

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

Appen må signeres med push notifications-entitlementet og en provisioning-profil som inkluderer Push Notifications-capability.

Kodeeksempler

Fire komplette flyter, hentet fra API-et som kjører i Mac-versjonen av appene våre. Hvert kall returnerer med en gang; resultatene kommer via callbackene dine og som StatusEvents. Full dokumentasjon →

1 · Registrer og send tokenet til serveren din
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 · Varsler mens appen kjø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 · Tillatelsesstatus og Systeminnstillinger
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 · Lytt med hendelser 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-oversikt

Push.getInstance()Returnerer den ene instansen.
isSupportedTrue på macOS, false andre steder.
register(onToken, onError, onNotification)Ber om tillatelse og registrerer for eksterne varsler. Alle tre callbackene er valgfrie; onNotification utløses mens appen kjører. Returnerer false der push ikke støttes.
tokenDet siste enhetstokenet, eller null til registreringen er ferdig.
authStatusSist kjente tillatelsesstatus; -1 til register() eller refreshStatus() har kjørt.
refreshStatus(onStatus)Leser gjeldende tillatelsesstatus; onStatus(status:int) kalles når den kommer, og igjen med svaret på forespørselen fra register().
openSettings()Åpner Systeminnstillinger på Varsler.
STATUS_NOT_DETERMINED, STATUS_DENIED, STATUS_AUTHORIZEDVerdiene 0, 1 og 2 for tillatelsesstatus. macOS kan også rapportere 3 (provisional) og 4 (ephemeral).
TOKEN, ERROR, NOTIFICATIONStatusEvent-nivåer for lyttere: nivået angir typen, koden bærer verdien.

Hendelser

level tokencode = enhetstokenet, en hex-streng
level errorcode = feilmeldingen fra registreringen
level notificationcode = varselets payload som JSON

Kjøp KlugPush

En årslisens for én AIR-applikasjon, med alle oppdateringer i 12 måneder. Etter betaling mottar du utvidelsen, ActionScript-biblioteket og dokumentasjonen på e-post, vanligvis innen én virkedag. Lisens og vilkår

Enkel
€19 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Ingen støtte
Kjøp Enkel
Standard
€149 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 7 dager
Kjøp Standard
Prioritet
€299 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 48 timer
Kjøp Prioritet
Skatter og avgifter beregnes ved kassen av Link (Stripe). Du oppgir applikasjons-ID-en til AIR-appen din under kassen.

Krav

AIR SDK51.x (HARMAN)
macOSmacOS 11 eller nyere
SigneringPush notifications-entitlement og en tilhørende provisioning-profil
ServerSender varsler gjennom Apples pushtjeneste