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
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:
<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 →
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 ); }
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 ); }
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 ); });
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. |
| isSupported | True 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. |
| token | Det siste enhetstokenet, eller null til registreringen er ferdig. |
| authStatus | Sist 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_AUTHORIZED | Verdiene 0, 1 og 2 for tillatelsesstatus. macOS kan også rapportere 3 (provisional) og 4 (ephemeral). |
| TOKEN, ERROR, NOTIFICATION | StatusEvent-nivåer for lyttere: nivået angir typen, koden bærer verdien. |
Hendelser
| level token | code = enhetstokenet, en hex-streng |
| level error | code = feilmeldingen fra registreringen |
| level notification | code = 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
- Lisens for én AIR-applikasjon
- Alle oppdateringer i 12 måneder
- Ingen støtte
- Lisens for én AIR-applikasjon
- Alle oppdateringer i 12 måneder
- Svar på e-post innen 7 dager
- Lisens for én AIR-applikasjon
- Alle oppdateringer i 12 måneder
- Svar på e-post innen 48 timer
Krav
| AIR SDK | 51.x (HARMAN) |
| macOS | macOS 11 eller nyere |
| Signering | Push notifications-entitlement og en tilhørende provisioning-profil |
| Server | Sender varsler gjennom Apples pushtjeneste |