← Alle udvidelser

Native udvidelse

KlugSystem

com.klug.system

INGEN APM NØDVENDIG. Download og nyd. Det bliver ikke enklere.

De systemtjenester, som enhver app har brug for, i én lille udvidelse: åbn websider i en browser i appen, vid om enheden er online og på Wi-Fi eller mobildata, bekræft brugeren med fingeraftryk eller Face ID, og bed om en butiksvurdering.

iOSAndroid I produktion Fra €19 / år · Køb

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

iOS browser · network · Face ID / Touch ID · arm64
Android browser · network · fingerprint (Android 9+)

Enheder uden biometrisk sensor rapporterer canAuthenticate = false, så din app kan falde tilbage til adgangskoden.

Kom i gang

Tilføj udvidelsen til din applikationsdescriptor:

app.xml
<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 →

1 · Åbn en hjælpeside i browseren i appen
Help.as
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
}
2 · Advar, før der streames over mobildata
Network.as
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();
}
3 · Bekræft brugeren med fingeraftryk eller Face ID
Confirm.as
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
}
4 · Bed om en butiksvurdering
Rating.as
// 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
5 · Ren nedlukning
Shutdown.as
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.
isSupportedSand, 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).
lastAuthErrorFejl 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_FACETyper til canAuthenticate(): 1 og 2.

Events

BROWSER_CLOSEDBrowseren i appen er lukket: Done på iOS, tilbage i din app på Android.
NETWORK_CHANGENetværket har ændret sig (efter startNetworkWatch()).
AUTH_SUCCESSBrugeren blev bekræftet.
AUTH_FAILEDIngen 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

Enkel
€19 / år
  • Licens til én AIR-applikation
  • Alle opdateringer i 12 måneder
  • Ingen support
Køb Enkel
Standard
€149 / år
  • Licens til én AIR-applikation
  • Alle opdateringer i 12 måneder
  • Svar pr. e-mail inden for 7 dage
Køb Standard
Prioritet
€299 / år
  • Licens til én AIR-applikation
  • Alle opdateringer i 12 måneder
  • Svar pr. e-mail inden for 48 timer
Køb Prioritet
Moms og afgifter beregnes ved checkout af Link (Stripe). Du angiver application ID'et for din AIR-app under checkout.

Krav

AIR SDK51.x (HARMAN)
iOSiOS 13 eller nyere
AndroidAndroid 6 eller nyere; biometri Android 9 eller nyere
TilladelserAndroid: USE_BIOMETRIC, USE_FINGERPRINT, ACCESS_NETWORK_STATE · iOS: NSFaceIDUsageDescription