← Alle Erweiterungen

Native Erweiterung

KlugSystem

com.klug.system

KEIN APM NÖTIG. Herunterladen und loslegen. Einfacher geht es nicht.

Die Systemdienste, die jede App braucht, in einer kleinen Erweiterung: Webseiten in einem In-App-Browser öffnen, wissen, ob das Gerät online ist und ob per WLAN oder Mobilfunk, den Nutzer per Fingerabdruck oder Face ID bestätigen und um eine Store-Bewertung bitten.

iOSAndroid Im Produktiveinsatz Ab €19 / Jahr · Kaufen

Überblick

Hilfeseiten, Nutzungsbedingungen und Datenschutzerklärungen sollten in der App aufgehen und den Nutzer nicht in einen Browser hinauswerfen. Der Netzwerkstatus entscheidet, ob vor dem Streamen über Mobilfunk gewarnt wird. Eine Fingerabdruck- oder Face-ID-Prüfung ersetzt die Passworteingabe auf einem gemeinsam genutzten Gerät. KlugSystem deckt alle drei mit den systemeigenen Komponenten ab.

Der In-App-Browser ist unter Android ein Chrome Custom Tab (keine zusätzliche Bibliothek nötig) und unter iOS SFSafariViewController, mit der Farbe Ihrer Symbolleiste; Ihre App erfährt, wann der Nutzer zurück ist. Der Netzwerkstatus meldet Erreichbarkeit sowie WLAN oder Mobilfunk und sendet bei einer Änderung ein Ereignis. Die Biometrie nutzt BiometricPrompt ab Android 9 und LocalAuthentication unter iOS; Fehler kommen auf beiden Plattformen mit denselben Fehlercodes, sodass ein Handler überall funktioniert.

KlugSystem läuft im nächsten Release unserer Apps, unseres Praxisbeweises, für Hilfeseiten, die Mobilfunk-Warnung und die Bestätigung einer Geräte-Abmeldung.

Funktionen

  • Eigenständig: eine ANE, keine Kernbibliothek und keine abhängigen ANEs, die Sie ergänzen müssten
  • In-App-Browser: Chrome Custom Tab (Android) / SFSafariViewController (iOS), Symbolleistenfarbe, Closed-Ereignis
  • Netzwerk: erreichbar, WLAN oder Mobilfunk, Änderungsereignisse (ConnectivityManager / NWPathMonitor)
  • Biometrie: Fingerabdruck und Face ID / Touch ID mit Ihrem Begründungstext und Abbrechen-Beschriftung
  • Dieselben Fehlercodes auf beiden Plattformen (Abbruch, Fallback, gesperrt, nicht eingerichtet)
  • Keine Bibliotheken von Drittanbietern; unter Android nutzt die Store-Bewertung die eigene Play-Review-Bibliothek von Google
  • isSupported-Prüfung, sodass derselbe Code auf jeder Plattform läuft

Unterstützte Plattformen

iOS Browser · Netzwerk · Face ID / Touch ID · arm64
Android Browser · Netzwerk · Fingerabdruck (Android 9+)

Geräte ohne biometrischen Sensor melden canAuthenticate = false, sodass Ihre App auf das Passwort zurückfallen kann.

Erste Schritte

Fügen Sie die Erweiterung Ihrem Application Descriptor hinzu:

app.xml
<extensions>
    <extensionID>com.klug.system</extensionID>
</extensions>

Android: Fügen Sie USE_BIOMETRIC, USE_FINGERPRINT und ACCESS_NETWORK_STATE zu den Manifest-Ergänzungen hinzu. iOS: Fügen Sie NSFaceIDUsageDescription zu den InfoAdditions hinzu.

Codebeispiele

Fünf vollständige Abläufe. Jeder Aufruf kehrt sofort zurück; die Ergebnisse von Browser, Netzwerk und Biometrie kommen als Ereignisse vom Typ KlugSystem.* an. Vollständige Dokumentation →

1 · Eine Hilfeseite im In-App-Browser öffnen
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 · Vor dem Streamen über Mobilfunk warnen
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 · Den Nutzer per Fingerabdruck oder Face ID bestätigen
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 · Um eine Store-Bewertung bitten
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 · Sauberes Herunterfahren
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-Übersicht

KlugSystem.getInstance()Gibt die einzige Instanz zurück.
isSupportedTrue, wo der native Teil vorhanden ist (iOS und Android).
openBrowser(url, toolbarColor)Öffnet den In-App-Browser, Symbolleistenfarbe 0xRRGGBB (Standard Weiß). Gibt false zurück, wenn er nicht geöffnet werden konnte; BROWSER_CLOSED, wenn der Nutzer zurück ist.
isReachable() / isWWAN()Überhaupt online / per Mobilfunk.
startNetworkWatch() / stopNetworkWatch()NETWORK_CHANGE bei jeder Änderung; lesen Sie isReachable() und isWWAN() im Handler.
canAuthenticate(type)True, wenn die Biometrie verfügbar und eingerichtet ist. iOS: BIOMETRY_FINGERPRINT = Touch ID, BIOMETRY_FACE = Face ID. Android 9+: BIOMETRY_FINGERPRINT = beliebige Biometrie, BIOMETRY_FACE immer false.
authenticate(reason, cancelLabel)Zeigt die Systemabfrage; AUTH_SUCCESS oder AUTH_FAILED. Gibt false zurück, wenn keine Abfrage angezeigt werden kann (Android unter 9).
lastAuthErrorFehler des letzten AUTH_FAILED, iOS-Nummern auf beiden Plattformen: -1 fehlgeschlagen, -2 Abbruch, -3 Fallback, -4 Systemabbruch, -6 nicht verfügbar, -7 nicht eingerichtet, -8 gesperrt.
cancelAuthenticate()Schließt eine laufende Abfrage.
requestReview()Fordert beim App Store oder bei Google Play den In-App-Bewertungsdialog an; der Store entscheidet, ob er angezeigt wird.
BIOMETRY_FINGERPRINT, BIOMETRY_FACETypen für canAuthenticate(): 1 und 2.

Ereignisse

BROWSER_CLOSEDDer In-App-Browser wurde geschlossen: „Fertig“ unter iOS, zurück in Ihrer App unter Android.
NETWORK_CHANGEDas Netzwerk hat sich geändert (nach startNetworkWatch()).
AUTH_SUCCESSDer Nutzer wurde bestätigt.
AUTH_FAILEDKeine Bestätigung; der Grund steht in lastAuthError.

KlugSystem kaufen

Eine Jahreslizenz für eine AIR-Anwendung, mit allen Updates für 12 Monate. Nach der Zahlung erhalten Sie die Erweiterung, die ActionScript-Bibliothek und die Dokumentation per E-Mail, in der Regel innerhalb eines Werktags. Lizenz und Bedingungen

Simple
€19 / Jahr
  • Lizenz für eine AIR-Anwendung
  • Alle Updates für 12 Monate
  • Kein Support
Simple kaufen
Standard
€149 / Jahr
  • Lizenz für eine AIR-Anwendung
  • Alle Updates für 12 Monate
  • Antwort per E-Mail innerhalb von 7 Tagen
Standard kaufen
Priority
€299 / Jahr
  • Lizenz für eine AIR-Anwendung
  • Alle Updates für 12 Monate
  • Antwort per E-Mail innerhalb von 48 Stunden
Priority kaufen
Die Steuern werden an der Kasse von Link (Stripe) berechnet. Die Application-ID Ihrer AIR-App geben Sie beim Bezahlen ein.

Voraussetzungen

AIR SDK51.x (HARMAN)
iOSiOS 13 oder neuer
AndroidAndroid 6 oder neuer; Biometrie ab Android 9
BerechtigungenAndroid: USE_BIOMETRIC, USE_FINGERPRINT, ACCESS_NETWORK_STATE · iOS: NSFaceIDUsageDescription