Yleiskatsaus
KlugPush tuo push-ilmoitukset AIR-sovelluksille macOS:llä. Se rekisteröi sovelluksen Applen push-ilmoituspalveluun, antaa palvelimellesi laitetunnisteen ja toimittaa saapuvat ilmoitukset ActionScriptille.
macOS:llä käyttäjältä, joka on kerran kieltänyt ilmoitukset, ei kysytä uudelleen. Siksi KlugPush raportoi nykyisen lupatilan milloin tahansa ja avaa Ilmoitukset-sivun Järjestelmäasetuksissa, jotta käyttäjät voivat ottaa ilmoitukset käyttöön myöhemmin.
KlugPush on päivittäisessä käytössä sovellustemme Mac-versiossa, todisteenamme toimivuudesta.
Ominaisuudet
- Itsenäinen: yksi ANE, ei ydinkirjastoa tai riippuvaisia ANE-laajennuksia lisättäväksi
- Pyytää luvan ja rekisteröi etäilmoituksille
- Laitetunniste palvelimellesi heti, kun rekisteröinti on valmis
- Saapuvat ilmoitukset toimitetaan ActionScriptille JSON-muodossa
- Reaaliaikainen lupatila: ei vielä päätetty, kielletty tai sallittu
- Avaa Järjestelmäasetukset suoraan Ilmoitukset-kohtaan
- Lähetetään suoraan Applen push-palvelun kautta, ylimääräistä push-palveluntarjoajaa ei tarvita
Tuetut alustat
Muilla alustoilla isSupported palauttaa false, joten sama koodi voi pysyä monialustaisessa sovelluksessa.
Aloitus
Lisää laajennus sovelluksesi descriptoriin:
<extensions>
<extensionID>com.klug.push.Push</extensionID>
</extensions>
Sovellus on allekirjoitettava push-ilmoitusten entitlementillä ja provisiointiprofiililla, joka sisältää Push Notifications -ominaisuuden.
Koodiesimerkit
Neljä täydellistä esimerkkiä sovellustemme Mac-versiossa pyörivästä rajapinnasta. Jokainen kutsu palaa heti; tulokset saapuvat takaisinkutsuillesi ja StatusEvent-tapahtumina. Koko dokumentaatio →
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
Rajapintayleiskatsaus
| Push.getInstance() | Palauttaa yksittäisen instanssin. |
| isSupported | True macOS:llä, muualla false. |
| register(onToken, onError, onNotification) | Pyytää luvan ja rekisteröi etäilmoituksille. Kaikki kolme takaisinkutsua ovat valinnaisia; onNotification käynnistyy sovelluksen ollessa käynnissä. Palauttaa false, jos push ei ole tuettu. |
| token | Viimeisin laitetunniste tai null, kunnes rekisteröinti on valmis. |
| authStatus | Viimeisin tunnettu lupatila; -1, kunnes register() tai refreshStatus() on ajettu. |
| refreshStatus(onStatus) | Lukee nykyisen lupatilan; onStatus(status:int) kutsutaan, kun se saapuu, ja uudelleen register()-kutsun kehotteen vastauksella. |
| openSettings() | Avaa Järjestelmäasetukset Ilmoitukset-kohtaan. |
| STATUS_NOT_DETERMINED, STATUS_DENIED, STATUS_AUTHORIZED | Lupatilan arvot 0, 1 ja 2. macOS voi raportoida myös 3 (väliaikainen, provisional) ja 4 (ephemeral). |
| TOKEN, ERROR, NOTIFICATION | StatusEvent-tasot kuuntelijoille: taso kertoo tyypin, koodi kantaa arvon. |
Tapahtumat
| level token | code = laitetunniste, heksamerkkijono |
| level error | code = rekisteröinnin virheilmoitus |
| level notification | code = ilmoituksen sisältö JSON-muodossa |
Osta KlugPush
Vuosilisenssi yhdelle AIR-sovellukselle, kaikki päivitykset 12 kuukauden ajan. Maksun jälkeen saat laajennuksen, ActionScript-kirjaston ja dokumentaation sähköpostitse, yleensä yhden arkipäivän kuluessa. Lisenssi ja ehdot
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Ei tukea
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Vastaus sähköpostitse 7 päivän kuluessa
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Vastaus sähköpostitse 48 tunnin kuluessa
Vaatimukset
| AIR SDK | 51.x (HARMAN) |
| macOS | macOS 11 tai uudempi |
| Allekirjoitus | Push-ilmoitusten entitlement ja vastaava provisiointiprofiili |
| Palvelin | Lähettää ilmoitukset Applen push-palvelun kautta |