← Alla tillägg

Inbyggt tillägg

KlugPush

com.klug.push.Push

INGEN APM BEHÖVS. Ladda ner och njut. Det blir inte enklare än så.

Fjärrpushnotiser för AIR-appar på Mac, med live-status för behörighet och genväg till systeminställningarna.

macOS I produktion Från €19 / år · Köp

Översikt

KlugPush ger AIR-appar på macOS fjärrpushnotiser. Det registrerar appen hos Apples pushnotistjänst, ger dig enhetstoken för din server och levererar inkommande notiser till ActionScript.

På macOS tillfrågas en användare som en gång har tackat nej till notiser inte igen. KlugPush rapporterar därför när som helst den aktuella behörighetsstatusen och öppnar sidan Notiser i Systeminställningar, så att användare kan slå på notiser senare.

KlugPush används dagligen i Mac-versionen av våra appar, vårt proof of concept.

Funktioner

  • Fristående: ett ANE, inget kärnbibliotek eller beroende-ANE:er att lägga till
  • Ber om behörighet och registrerar för fjärrnotiser
  • Enhetstoken till din server, så snart registreringen är klar
  • Inkommande notiser levereras till ActionScript som JSON
  • Live-status för behörighet: ännu inte avgjord, nekad eller tillåten
  • Öppnar Systeminställningar direkt på Notiser
  • Skickas direkt via Apples pushtjänst, ingen extra pushleverantör behövs

Plattformar som stöds

macOS Apple silicon · Intel

På andra plattformar returnerar isSupported false, så att samma kod kan ligga kvar i en plattformsoberoende app.

Kom igång

Lägg till tillägget i din applikationsbeskrivning (application descriptor):

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

Appen måste vara signerad med push-notifikationsbehörigheten (entitlement) och en provisioning profile som innehåller capability Push Notifications.

Kodexempel

Fyra kompletta flöden, hämtade från det API som körs i Mac-versionen av våra appar. Varje anrop returnerar direkt; resultat kommer via dina callbacks och som StatusEvents. Fullständig dokumentation →

1 · Registrera och skicka token till 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 · Notiser medan appen körs
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 · Behörighetsstatus och Systeminställningar
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 · Lyssna med händelser i stället för 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-översikt

Push.getInstance()Returnerar den enda instansen.
isSupportedTrue på macOS, false på övriga.
register(onToken, onError, onNotification)Ber om behörighet och registrerar för fjärrnotiser. Alla tre callbacks är valfria; onNotification utlöses medan appen körs. Returnerar false där push inte stöds.
tokenDen senaste enhetstoken, eller null tills registreringen är klar.
authStatusDen senast kända behörighetsstatusen; -1 tills register() eller refreshStatus() har körts.
refreshStatus(onStatus)Läser den aktuella behörighetsstatusen; onStatus(status:int) anropas när den kommer, och igen med svaret på frågan från register().
openSettings()Öppnar Systeminställningar på Notiser.
STATUS_NOT_DETERMINED, STATUS_DENIED, STATUS_AUTHORIZEDBehörighetsstatusvärdena 0, 1 och 2. macOS kan också rapportera 3 (provisional) och 4 (ephemeral).
TOKEN, ERROR, NOTIFICATIONStatusEvent-nivåer för lyssnare: nivån anger typen, koden bär värdet.

Händelser

level tokencode = enhetstoken, en hexsträng
level errorcode = felmeddelandet från registreringen
level notificationcode = notisens nyttolast som JSON

Köp KlugPush

En årslicens för en AIR-applikation, med alla uppdateringar i 12 månader. Efter betalning får du tillägget, ActionScript-biblioteket och dokumentationen via e-post, vanligtvis inom en arbetsdag. Licens och villkor

Enkel
€19 / år
  • Licens för en AIR-applikation
  • Alla uppdateringar i 12 månader
  • Ingen support
Köp Enkel
Standard
€149 / år
  • Licens för en AIR-applikation
  • Alla uppdateringar i 12 månader
  • Svar via e-post inom 7 dagar
Köp Standard
Prioritet
€299 / år
  • Licens för en AIR-applikation
  • Alla uppdateringar i 12 månader
  • Svar via e-post inom 48 timmar
Köp Prioritet
Skatter beräknas i kassan av Link (Stripe). Du anger application ID för din AIR-app under köpet.

Krav

AIR SDK51.x (HARMAN)
macOSmacOS 11 eller senare
SigneringBehörighet (entitlement) för pushnotiser och en matchande provisioning profile
ServerSkickar notiser via Apples pushtjänst