Yleiskatsaus
Ohjesivujen, ehtojen ja tietosuojakäytäntöjen tulisi avautua sovelluksen sisällä eikä heittää käyttäjää ulos selaimeen. Verkon tila ratkaisee, varoitetaanko ennen striimausta mobiilidatalla. Sormenjälki- tai Face ID -tarkistus korvaa salasanan kirjoittamisen jaetulla laitteella. KlugSystem kattaa kaikki kolme järjestelmän omilla komponenteilla.
Sovelluksen sisäinen selain on Chrome Custom Tab Androidilla (ei tarvitse lisäkirjastoa) ja SFSafariViewController iOS:llä, työkalupalkin väri omasi; sovellus saa tiedon, kun käyttäjä palaa takaisin. Verkon tila raportoi tavoitettavuuden sekä sen, onko yhteys Wi-Fi vai mobiilidata, ja lähettää tapahtuman muutoksen yhteydessä. Biometriikka käyttää BiometricPromptia Android 9+:lla ja LocalAuthenticationia iOS:llä; virheet tulevat samoilla virhekoodeilla molemmilla alustoilla, joten yksi käsittelijä toimii kaikkialla.
KlugSystem on käytössä sovellustemme seuraavassa julkaisussa, todisteenamme toimivuudesta, ohjesivuilla, mobiilidatavaroituksessa ja laitteen uloskirjautumisen vahvistamisessa.
Ominaisuudet
- Itsenäinen: yksi ANE, ei ydinkirjastoa tai riippuvaisia ANE-laajennuksia lisättäväksi
- Sovelluksen sisäinen selain: Chrome Custom Tab (Android) / SFSafariViewController (iOS), työkalupalkin väri, sulkemistapahtuma
- Verkko: tavoitettavissa, Wi-Fi vai mobiilidata, muutostapahtumat (ConnectivityManager / NWPathMonitor)
- Biometriikka: sormenjälki sekä Face ID / Touch ID omalla syyteksti- ja peruutuspainikkeen tekstilläsi
- Samat virhekoodit molemmilla alustoilla (peruutus, varavaihtoehto, lukittu, ei rekisteröity)
- Ei kolmannen osapuolen kirjastoja; Androidilla kauppa-arvostelu käyttää Googlen omaa Play-arvostelukirjastoa
- isSupported-tarkistus, joten sama koodi toimii kaikilla alustoilla
Tuetut alustat
Laitteet, joissa ei ole biometristä tunnistinta, raportoivat canAuthenticate = false, joten sovelluksesi voi siirtyä salasanaan.
Aloitus
Lisää laajennus sovelluksesi descriptoriin:
<extensions>
<extensionID>com.klug.system</extensionID>
</extensions>
Android: lisää USE_BIOMETRIC, USE_FINGERPRINT ja ACCESS_NETWORK_STATE manifestin lisäyksiin. iOS: lisää NSFaceIDUsageDescription InfoAdditions-osioon.
Koodiesimerkit
Viisi täydellistä esimerkkiä. Jokainen kutsu palaa heti; selaimen, verkon ja biometriikan tulokset saapuvat KlugSystem.*-tyyppisinä tapahtumina. Koko dokumentaatio →
import com.klug.system.KlugSystem; import flash.events.Event; import flash.net.URLRequest; import flash.net.navigateToURL; var sys:KlugSystem = KlugSystem.getInstance(); sys.addEventListener( KlugSystem.BROWSER_CLOSED, onBrowserClosed ); function openHelp():void { var url:String = "https://example.com/help"; // false: not supported here, or no browser could open the page if ( !sys.isSupported || !sys.openBrowser( url, 0x2B2B2B ) ) // toolbar 0xRRGGBB navigateToURL( new URLRequest( url ) ); } function onBrowserClosed( e:Event ):void { // iOS: the user tapped Done. Android: your app is in the foreground again. refreshAccount(); // your app }
sys.addEventListener( KlugSystem.NETWORK_CHANGE, onNetworkChange ); sys.startNetworkWatch(); // the first event usually arrives right away function onNetworkChange( e:Event ):void { // the event carries no detail: ask for the current state if ( !sys.isReachable() ) showOfflineBanner(); // your app else if ( sys.isWWAN() ) showMobileDataWarning(); // on mobile data else hideBanners(); }
sys.addEventListener( KlugSystem.AUTH_SUCCESS, onAuthOk ); sys.addEventListener( KlugSystem.AUTH_FAILED, onAuthFailed ); function confirmLogout():void { // iOS: 1 = Touch ID, 2 = Face ID. // Android 9+: 1 = any enrolled biometric; 2 is always false there. var bio:Boolean = sys.canAuthenticate( KlugSystem.BIOMETRY_FINGERPRINT ) || sys.canAuthenticate( KlugSystem.BIOMETRY_FACE ); if ( !bio || !sys.authenticate( "Confirm to log out", "Cancel" ) ) askForPassword(); // no sensor, nothing enrolled, or Android below 9 } function onAuthOk( e:Event ):void { logOut(); // your app } function onAuthFailed( e:Event ):void { // iOS error numbers on both platforms if ( sys.lastAuthError == -2 ) return; // the user tapped Cancel askForPassword(); // -3 fallback (iOS), -8 locked out, -4 system cancel, -1 failed }
// after a good moment, for example the tenth successful session if ( sessionCount == 10 ) // your app's counter sys.requestReview(); // the store decides whether the dialog really appears: // iOS at most 3 times in 365 days and never in TestFlight; // Google Play has its own quota and never shows it for sideloaded installs
function leaveScreen():void { sys.stopNetworkWatch(); sys.cancelAuthenticate(); // closes a running prompt; AUTH_FAILED may follow sys.removeEventListener( KlugSystem.NETWORK_CHANGE, onNetworkChange ); sys.removeEventListener( KlugSystem.AUTH_SUCCESS, onAuthOk ); sys.removeEventListener( KlugSystem.AUTH_FAILED, onAuthFailed ); }
Rajapintayleiskatsaus
| KlugSystem.getInstance() | Palauttaa yksittäisen instanssin. |
| isSupported | True siellä, missä natiiviosa on mukana (iOS ja Android). |
| openBrowser(url, toolbarColor) | Avaa sovelluksen sisäisen selaimen, työkalupalkin väri 0xRRGGBB (oletus valkoinen). Palauttaa false, jos avaaminen ei onnistunut; BROWSER_CLOSED, kun käyttäjä palaa takaisin. |
| isReachable() / isWWAN() | Onko verkossa lainkaan / mobiilidatalla. |
| startNetworkWatch() / stopNetworkWatch() | NETWORK_CHANGE jokaisesta muutoksesta; lue isReachable() ja isWWAN() käsittelijässä. |
| canAuthenticate(type) | True, jos biometriikka on käytettävissä ja rekisteröity. iOS: BIOMETRY_FINGERPRINT = Touch ID, BIOMETRY_FACE = Face ID. Android 9+: BIOMETRY_FINGERPRINT = mikä tahansa biometriikka, BIOMETRY_FACE aina false. |
| authenticate(reason, cancelLabel) | Näyttää järjestelmän kehotteen; AUTH_SUCCESS tai AUTH_FAILED. Palauttaa false, jos kehotetta ei voida näyttää (Android alle 9). |
| lastAuthError | Viimeisimmän AUTH_FAILED-tapahtuman virhe, iOS:n numerot molemmilla alustoilla: -1 epäonnistui, -2 peruutus, -3 varavaihtoehto, -4 järjestelmän peruutus, -6 ei saatavilla, -7 ei rekisteröity, -8 lukittu. |
| cancelAuthenticate() | Sulkee käynnissä olevan kehotteen. |
| requestReview() | Pyytää App Storelta tai Google Playltä sovelluksen sisäistä arvosteluikkunaa; kauppa päättää, näytetäänkö se. |
| BIOMETRY_FINGERPRINT, BIOMETRY_FACE | canAuthenticate()-kutsun tyypit: 1 ja 2. |
Tapahtumat
| BROWSER_CLOSED | Sovelluksen sisäinen selain suljetaan: Done iOS:llä, takaisin sovellukseesi Androidilla. |
| NETWORK_CHANGE | Verkko muuttui (startNetworkWatch()-kutsun jälkeen). |
| AUTH_SUCCESS | Käyttäjä vahvistettiin. |
| AUTH_FAILED | Ei vahvistusta; syy on lastAuthError-arvossa. |
Osta KlugSystem
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) |
| iOS | iOS 13 tai uudempi |
| Android | Android 6 tai uudempi; biometriikka Android 9 tai uudempi |
| Oikeudet | Android: USE_BIOMETRIC, USE_FINGERPRINT, ACCESS_NETWORK_STATE · iOS: NSFaceIDUsageDescription |