← Alla tillägg

Inbyggt tillägg

KlugSystem

com.klug.system

INGEN APM BEHÖVS. Ladda ner och njut. Det blir inte enklare än så.

De systemtjänster som varje app behöver, i ett litet tillägg: öppna webbsidor i en webbläsare i appen, ta reda på om enheten är online och på Wi-Fi eller mobildata, bekräfta användaren med fingeravtryck eller Face ID och be om ett betyg i butiken.

iOSAndroid I produktion Från €19 / år · Köp

Ö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

iOS webbläsare · nätverk · Face ID / Touch ID · arm64
Android webbläsare · nätverk · fingeravtryck (Android 9+)

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):

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

1 · Öppna en hjälpsida i webbläsaren 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 · Varna innan streaming över 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äfta användaren med fingeravtryck 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 ett betyg i butiken
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 · Rent avslut
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-översikt

KlugSystem.getInstance()Returnerar den enda instansen.
isSupportedTrue 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).
lastAuthErrorFelet 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_FACETyper för canAuthenticate(): 1 och 2.

Händelser

BROWSER_CLOSEDWebbläsaren i appen stängs: Klar (Done) på iOS, tillbaka i din app på Android.
NETWORK_CHANGENätverket ändrades (efter startNetworkWatch()).
AUTH_SUCCESSAnvändaren bekräftades.
AUTH_FAILEDIngen 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

Enkel
€19 / år
  • Licens för en AIR-applikation
  • Alla uppdateringar i 12 månader
  • Ingen support
Köp Enkel
Standard
€149 / år
  • Licens för en AIR-applikation
  • Alla uppdateringar i 12 månader
  • Svar via e-post inom 7 dagar
Köp Standard
Prioritet
€299 / år
  • Licens för en AIR-applikation
  • Alla uppdateringar i 12 månader
  • Svar via e-post inom 48 timmar
Köp Prioritet
Skatter beräknas i kassan av Link (Stripe). Du anger application ID för din AIR-app under köpet.

Krav

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