Översikt
Hjälpsidor, villkor och integritetspolicyer ska öppnas i appen och inte kasta ut användaren till en webbläsare. Nätverksstatus avgör om man ska varna innan streaming över mobildata. En kontroll med fingeravtryck eller Face ID ersätter inmatning av lösenord på en delad enhet. KlugSystem täcker alla tre med systemets egna komponenter.
Webbläsaren i appen är en Chrome Custom Tab på Android (inget extra bibliotek behövs) och SFSafariViewController på iOS, med din verktygsfältsfärg; din app får veta när användaren är tillbaka. Nätverksstatus rapporterar uppkoppling samt Wi-Fi jämfört med mobildata och skickar en händelse när det ändras. Biometri använder BiometricPrompt på Android 9+ och LocalAuthentication på iOS; fel kommer med samma felkoder på båda plattformarna, så att en enda hanterare fungerar överallt.
KlugSystem körs i nästa version av våra appar, vårt proof of concept, för hjälpsidor, varningen för mobildata och bekräftelse av utloggning från en enhet.
Funktioner
- Fristående: ett ANE, inget kärnbibliotek eller beroende-ANE:er att lägga till
- Webbläsare i appen: Chrome Custom Tab (Android) / SFSafariViewController (iOS), verktygsfältsfärg, stängningshändelse
- Nätverk: uppkoppling, Wi-Fi eller mobildata, ändringshändelser (ConnectivityManager / NWPathMonitor)
- Biometri: fingeravtryck samt Face ID / Touch ID med din egen motiveringstext och avbryt-etikett
- Samma felkoder på båda plattformarna (cancel, fallback, locked out, not enrolled)
- Inga tredjepartsbibliotek; på Android använder butiksbetyget Googles eget Play-recensionsbibliotek
- isSupported-kontroll, så att samma kod körs på alla plattformar
Plattformar som stöds
Enheter utan biometrisk sensor rapporterar canAuthenticate = false, så att din app kan falla tillbaka på lösenordet.
Kom igång
Lägg till tillägget i din applikationsbeskrivning (application descriptor):
<extensions>
<extensionID>com.klug.system</extensionID>
</extensions>
Android: lägg till USE_BIOMETRIC, USE_FINGERPRINT och ACCESS_NETWORK_STATE i manifest-tilläggen. iOS: lägg till NSFaceIDUsageDescription i InfoAdditions.
Kodexempel
Fem kompletta flöden. Varje anrop returnerar direkt; resultaten från webbläsare, nätverk och biometri kommer som händelser av typen KlugSystem.*. Fullständig 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-översikt
| KlugSystem.getInstance() | Returnerar den enda instansen. |
| isSupported | True där den inbyggda delen finns (iOS och Android). |
| openBrowser(url, toolbarColor) | Öppnar webbläsaren i appen, verktygsfältsfärg 0xRRGGBB (standard vit). Returnerar false om den inte kunde öppnas; BROWSER_CLOSED när användaren är tillbaka. |
| isReachable() / isWWAN() | Online över huvud taget / på mobildata. |
| startNetworkWatch() / stopNetworkWatch() | NETWORK_CHANGE vid varje ändring; läs isReachable() och isWWAN() i hanteraren. |
| canAuthenticate(type) | True om biometrin är tillgänglig och registrerad. iOS: BIOMETRY_FINGERPRINT = Touch ID, BIOMETRY_FACE = Face ID. Android 9+: BIOMETRY_FINGERPRINT = valfri biometri, BIOMETRY_FACE alltid false. |
| authenticate(reason, cancelLabel) | Visar systemets fråga; AUTH_SUCCESS eller AUTH_FAILED. Returnerar false om ingen fråga kan visas (Android under 9). |
| lastAuthError | Felet från den senaste AUTH_FAILED, iOS-nummer på båda plattformarna: -1 failed, -2 cancel, -3 fallback, -4 system cancel, -6 not available, -7 not enrolled, -8 locked out. |
| cancelAuthenticate() | Stänger en pågående fråga. |
| requestReview() | Ber App Store eller Google Play om betygsdialogen i appen; butiken avgör om den visas. |
| BIOMETRY_FINGERPRINT, BIOMETRY_FACE | Typer för canAuthenticate(): 1 och 2. |
Händelser
| BROWSER_CLOSED | Webbläsaren i appen stängs: Klar (Done) på iOS, tillbaka i din app på Android. |
| NETWORK_CHANGE | Nätverket ändrades (efter startNetworkWatch()). |
| AUTH_SUCCESS | Användaren bekräftades. |
| AUTH_FAILED | Ingen bekräftelse; orsaken finns i lastAuthError. |
Köp KlugSystem
En årslicens för en AIR-applikation, med alla uppdateringar i 12 månader. Efter betalning får du tillägget, ActionScript-biblioteket och dokumentationen via e-post, vanligtvis inom en arbetsdag. Licens och villkor
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Ingen support
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Svar via e-post inom 7 dagar
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Svar via e-post inom 48 timmar
Krav
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 13 eller senare |
| Android | Android 6 eller senare; biometri Android 9 eller senare |
| Behörigheter | Android: USE_BIOMETRIC, USE_FINGERPRINT, ACCESS_NETWORK_STATE · iOS: NSFaceIDUsageDescription |