← Alle utvidelser

Native utvidelse

KlugSystem

com.klug.system

INGEN APM NØDVENDIG. Last ned og bruk. Det blir ikke enklere enn dette.

Systemtjenestene hver app trenger, i én liten utvidelse: åpne nettsider i en nettleser i appen, vite om enheten er på nett og på Wi-Fi eller mobildata, bekrefte brukeren med fingeravtrykk eller Face ID, og be om en butikkvurdering.

iOSAndroid I produksjon Fra €19 / år · Kjøp

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

iOS nettleser · nettverk · Face ID / Touch ID · arm64
Android nettleser · nettverk · fingeravtrykk (Android 9+)

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:

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

1 · Åpne en hjelpeside i nettleseren 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 strømming 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 · Bekreft brukeren med fingeravtrykk 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 · Be om en butikkvurdering
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 avslutning
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-oversikt

KlugSystem.getInstance()Returnerer den ene instansen.
isSupportedTrue 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).
lastAuthErrorFeilen 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_FACETyper for canAuthenticate(): 1 og 2.

Hendelser

BROWSER_CLOSEDNettleseren i appen er lukket: Done på iOS, tilbake i appen din på Android.
NETWORK_CHANGENettverket endret seg (etter startNetworkWatch()).
AUTH_SUCCESSBrukeren ble bekreftet.
AUTH_FAILEDIngen 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

Enkel
€19 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Ingen støtte
Kjøp Enkel
Standard
€149 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 7 dager
Kjøp Standard
Prioritet
€299 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 48 timer
Kjøp Prioritet
Skatter og avgifter beregnes ved kassen av Link (Stripe). Du oppgir applikasjons-ID-en til AIR-appen din under kassen.

Krav

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