Oversigt
Hjælpesider, vilkår og privatlivspolitikker bør åbne inde i appen og ikke smide brugeren ud i en browser. Netværksstatus afgør, om der skal advares, før der streames over mobildata. Et fingeraftryk eller Face ID-tjek erstatter indtastning af en adgangskode på en delt enhed. KlugSystem dækker alle tre med systemets egne komponenter.
Browseren i appen er en Chrome Custom Tab på Android (intet ekstra bibliotek nødvendigt) og SFSafariViewController på iOS, med din værktøjslinjefarve; din app får besked, når brugeren er tilbage. Netværksstatus rapporterer tilgængelighed og Wi-Fi versus mobildata og sender en hændelse, når den ændres. Biometri bruger BiometricPrompt på Android 9+ og LocalAuthentication på iOS; fejl kommer med de samme fejlkoder på begge platforme, så én handler virker overalt.
KlugSystem kører i den næste udgave af vores apps, vores proof of concept, til hjælpesider, advarslen om mobildata og bekræftelse af en enheds logout.
Funktioner
- Selvstændig: én ANE, intet kernebibliotek eller afhængige ANE'er at tilføje
- Browser i appen: Chrome Custom Tab (Android) / SFSafariViewController (iOS), værktøjslinjefarve, closed-hændelse
- Netværk: tilgængelig, Wi-Fi eller mobildata, ændringshændelser (ConnectivityManager / NWPathMonitor)
- Biometri: fingeraftryk og Face ID / Touch ID med din begrundelsestekst og annulleringsmærkat
- Samme fejlkoder på begge platforme (annuller, fallback, låst ude, ikke tilmeldt)
- Ingen tredjepartsbiblioteker; på Android bruger butiksvurderingen Googles eget Play review-bibliotek
- isSupported-tjek, så den samme kode kører på alle platforme
Understøttede platforme
Enheder uden biometrisk sensor rapporterer canAuthenticate = false, så din app kan falde tilbage til adgangskoden.
Kom i gang
Tilføj udvidelsen til din applikationsdescriptor:
<extensions>
<extensionID>com.klug.system</extensionID>
</extensions>
Android: tilføj USE_BIOMETRIC, USE_FINGERPRINT og ACCESS_NETWORK_STATE til manifest-tilføjelserne. iOS: tilføj NSFaceIDUsageDescription til InfoAdditions.
Kodeeksempler
Fem komplette flows. Hvert kald vender straks tilbage; resultaterne for browser, netværk og biometri ankommer som hændelser af typen KlugSystem.*. Fuld dokumentation →
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-oversigt
| KlugSystem.getInstance() | Returnerer den enkelte instans. |
| isSupported | Sand, hvor den native del er til stede (iOS og Android). |
| openBrowser(url, toolbarColor) | Åbner browseren i appen, værktøjslinjefarve 0xRRGGBB (standard hvid). Returnerer false, hvis den ikke kunne åbnes; BROWSER_CLOSED, når brugeren er tilbage. |
| isReachable() / isWWAN() | Overhovedet online / på mobildata. |
| startNetworkWatch() / stopNetworkWatch() | NETWORK_CHANGE ved hver ændring; læs isReachable() og isWWAN() i handleren. |
| canAuthenticate(type) | Sand, hvis biometrien er tilgængelig og tilmeldt. iOS: BIOMETRY_FINGERPRINT = Touch ID, BIOMETRY_FACE = Face ID. Android 9+: BIOMETRY_FINGERPRINT = enhver biometri, BIOMETRY_FACE altid falsk. |
| authenticate(reason, cancelLabel) | Viser systemets prompt; AUTH_SUCCESS eller AUTH_FAILED. Returnerer false, hvis ingen prompt kan vises (Android under 9). |
| lastAuthError | Fejl fra den seneste AUTH_FAILED, iOS-numre på begge platforme: -1 fejlet, -2 annuller, -3 fallback, -4 systemannullering, -6 ikke tilgængelig, -7 ikke tilmeldt, -8 låst ude. |
| cancelAuthenticate() | Lukker en kørende prompt. |
| requestReview() | Beder App Store eller Google Play om dialogen til vurdering i appen; butikken afgør, om den vises. |
| BIOMETRY_FINGERPRINT, BIOMETRY_FACE | Typer til canAuthenticate(): 1 og 2. |
Events
| BROWSER_CLOSED | Browseren i appen er lukket: Done på iOS, tilbage i din app på Android. |
| NETWORK_CHANGE | Netværket har ændret sig (efter startNetworkWatch()). |
| AUTH_SUCCESS | Brugeren blev bekræftet. |
| AUTH_FAILED | Ingen bekræftelse; årsagen står i lastAuthError. |
Køb KlugSystem
En årlig licens til én AIR-applikation, med alle opdateringer i 12 måneder. Efter betaling modtager du udvidelsen, ActionScript-biblioteket og dokumentationen pr. e-mail, normalt inden for én hverdag. Licens og vilkår
- Licens til én AIR-applikation
- Alle opdateringer i 12 måneder
- Svar pr. e-mail inden for 7 dage
- Licens til én AIR-applikation
- Alle opdateringer i 12 måneder
- Svar pr. e-mail inden for 48 timer
Krav
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 13 eller nyere |
| Android | Android 6 eller nyere; biometri Android 9 eller nyere |
| Tilladelser | Android: USE_BIOMETRIC, USE_FINGERPRINT, ACCESS_NETWORK_STATE · iOS: NSFaceIDUsageDescription |