Oversikt
Hjelpesider, vilkår og personvernerklæringer bør åpnes inne i appen, ikke sende brukeren ut til en nettleser. Nettverksstatus avgjør om man skal advare før strømming over mobildata. En sjekk med fingeravtrykk eller Face ID erstatter å skrive inn et passord på en delt enhet. KlugSystem dekker alle tre med systemets egne komponenter.
Nettleseren i appen er en Chrome Custom Tab på Android (ingen ekstra bibliotek nødvendig) og SFSafariViewController på iOS, med din verktøylinjefarge; appen din får beskjed når brukeren er tilbake. Nettverksstatus rapporterer tilgjengelighet og Wi-Fi kontra mobildata og sender en hendelse når den endres. Biometri bruker BiometricPrompt på Android 9+ og LocalAuthentication på iOS; feil kommer med de samme feilkodene på begge plattformer, så én handler fungerer overalt.
KlugSystem kjører i neste utgivelse av appene våre, vårt proof of concept, for hjelpesider, advarselen om mobildata og bekreftelse av utlogging av en enhet.
Funksjoner
- Selvstendig: én ANE, ingen kjernebibliotek eller avhengige ANE-er å legge til
- Nettleser i appen: Chrome Custom Tab (Android) / SFSafariViewController (iOS), verktøylinjefarge, closed-hendelse
- Nettverk: tilgjengelig, Wi-Fi eller mobildata, endringshendelser (ConnectivityManager / NWPathMonitor)
- Biometri: fingeravtrykk og Face ID / Touch ID med din egen begrunnelsestekst og avbryt-etikett
- Samme feilkoder på begge plattformer (cancel, fallback, locked out, not enrolled)
- Ingen tredjepartsbiblioteker; på Android bruker butikkvurderingen Googles eget Play review-bibliotek
- isSupported-sjekk, slik at den samme koden kjører på alle plattformer
Støttede plattformer
Enheter uten biometrisk sensor rapporterer canAuthenticate = false, slik at appen din kan falle tilbake til passordet.
Kom i gang
Legg utvidelsen til i applikasjonsbeskrivelsen din:
<extensions>
<extensionID>com.klug.system</extensionID>
</extensions>
Android: legg til USE_BIOMETRIC, USE_FINGERPRINT og ACCESS_NETWORK_STATE i manifesttilleggene. iOS: legg til NSFaceIDUsageDescription i InfoAdditions.
Kodeeksempler
Fem komplette flyter. Hvert kall returnerer med en gang; resultatene fra nettleser, nettverk og biometri kommer som hendelser av typen KlugSystem.*. Full dokumentasjon →
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 ); }
API-oversikt
| KlugSystem.getInstance() | Returnerer den ene instansen. |
| isSupported | True der den native delen finnes (iOS og Android). |
| openBrowser(url, toolbarColor) | Åpner nettleseren i appen, verktøylinjefarge 0xRRGGBB (standard hvit). Returnerer false hvis den ikke kunne åpnes; BROWSER_CLOSED når brukeren er tilbake. |
| isReachable() / isWWAN() | Er på nett i det hele tatt / på mobildata. |
| startNetworkWatch() / stopNetworkWatch() | NETWORK_CHANGE ved hver endring; les isReachable() og isWWAN() i handleren. |
| canAuthenticate(type) | True hvis biometrien er tilgjengelig og registrert. iOS: BIOMETRY_FINGERPRINT = Touch ID, BIOMETRY_FACE = Face ID. Android 9+: BIOMETRY_FINGERPRINT = enhver biometri, BIOMETRY_FACE alltid false. |
| authenticate(reason, cancelLabel) | Viser systemforespørselen; AUTH_SUCCESS eller AUTH_FAILED. Returnerer false hvis ingen forespørsel kan vises (Android under 9). |
| lastAuthError | Feilen fra siste AUTH_FAILED, iOS-numre på begge plattformer: -1 failed, -2 cancel, -3 fallback, -4 system cancel, -6 not available, -7 not enrolled, -8 locked out. |
| cancelAuthenticate() | Lukker en pågående forespørsel. |
| requestReview() | Ber App Store eller Google Play om dialogen for vurdering i appen; butikken avgjør om den vises. |
| BIOMETRY_FINGERPRINT, BIOMETRY_FACE | Typer for canAuthenticate(): 1 og 2. |
Hendelser
| BROWSER_CLOSED | Nettleseren i appen er lukket: Done på iOS, tilbake i appen din på Android. |
| NETWORK_CHANGE | Nettverket endret seg (etter startNetworkWatch()). |
| AUTH_SUCCESS | Brukeren ble bekreftet. |
| AUTH_FAILED | Ingen bekreftelse; årsaken står i lastAuthError. |
Kjøp KlugSystem
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) |
| iOS | iOS 13 eller nyere |
| Android | Android 6 eller nyere; biometri Android 9 eller nyere |
| Tillatelser | Android: USE_BIOMETRIC, USE_FINGERPRINT, ACCESS_NETWORK_STATE · iOS: NSFaceIDUsageDescription |