← Alle Erweiterungen

Native Erweiterung

KlugDialog

com.klug.dialog.Dialog

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

Native Dialoge für AIR-Apps auf Android, iOS und macOS: Hinweise, Dialoge mit Textfeldern, die über der Tastatur bleiben, und ein Fortschrittsdialog, den Ihr Code aktualisiert und schließt.

AndroidiOSmacOS Im Produktiveinsatz Ab €19 / Jahr · Kaufen

Überblick

Der eingebaute Hinweis von AIR sieht auf dem Mac aus, als stamme er aus einem anderen Jahrzehnt. KlugDialog zeigt das Original: native macOS-Alert-Sheets, die am App-Fenster hängen, mit App-Symbol, Systemschrift und den vertrauten Schaltflächenstilen.

Über einfache Hinweise hinaus deckt es ab, was Desktop-Apps täglich brauchen: Dialoge mit Textfeldern (zum Beispiel Benutzername und Passwort, auch als sichere Felder), mehrere Schaltflächen mit eigenen Stilen und ein Fortschritts-Sheet („Verbindung wird hergestellt …“), das Ihr Code aktualisiert und schließt, wenn die Arbeit erledigt ist.

Alles ist asynchron: show() kehrt sofort zurück, und Ihr Callback erhält die gewählte Schaltfläche. KlugDialog läuft in der Mac-Version unserer Apps, unseres Praxisbeweises.

Neu unter Android: dieselben Dialoge als native Android-Dialoge. Textfelder bleiben auf jedem Bildschirm über der Tastatur, auch im Querformat auf Tablets, wo die Schaltflächen früher dahinter verschwanden; Passwörter, Benutzernamen und E-Mail-Adressen werden nie automatisch großgeschrieben, und E-Mail-Felder erhalten die E-Mail-Tastatur. Die Android-Version stapelt außerdem lange Schaltflächenlisten, bietet einen schlichten Spinner und läuft in der Android-Version unserer Apps.

Auch unter iOS: Seit Version 1.2 zeigt dieselbe API native iOS-Hinweise, Dialoge mit Textfeldern und einen Fortschrittsdialog, sodass ein Codepfad Android, iOS und macOS bedient.

Funktionen

  • Eigenständig: eine ANE, keine Kernbibliothek und keine abhängigen ANEs, die Sie ergänzen müssten
  • Native macOS-Alert-Sheets mit bis zu drei Schaltflächen
  • Stile für Information, Warnung und kritische Meldung
  • Dialoge mit beliebig vielen Schaltflächen und Textfeldern, einschließlich sicherer Felder
  • Fortschritts-Sheet, das aus dem Code aktualisiert und geschlossen werden kann
  • Dialoge lassen sich aus dem Code schließen
  • Callbacks mit der gewählten Schaltfläche und den eingegebenen Werten
  • Android: Felder über der Tastatur, keine automatisch großgeschriebenen Passwörter, E-Mail- / Zahlentastaturen, helles und dunkles Design

Unterstützte Plattformen

Android Hinweise · Textfelder · Fortschritt · lange Schaltflächenlisten
iOS arm64 · Hinweise · Textfelder · Fortschritt
macOS arm64 · x86_64

Auf anderen Plattformen gibt isSupported false zurück, sodass Ihre App dort auf ihre gewohnten Dialoge zurückfallen kann.

Erste Schritte

Fügen Sie die Erweiterung Ihrem Application Descriptor hinzu:

app.xml
<extensions>
    <extensionID>com.klug.dialog.Dialog</extensionID>
</extensions>

Codebeispiele

Fünf vollständige Abläufe. Jeder Aufruf kehrt sofort zurück; das Ergebnis kommt später in Ihrem Callback an, sodass die App nie blockiert, während ein Dialog geöffnet ist. Vollständige Dokumentation →

1 · Unterstützung prüfen und einen einfachen Hinweis anzeigen
Setup.as
import com.klug.dialog.Dialog;

var dialog:Dialog = Dialog.getInstance();

if ( dialog.isSupported )
{
    dialog.show( "Saved", "The recording is in your library." );   // one "OK" button
}
else
{
    showAppAlert( "Saved" );   // your app's own fallback dialog, e.g. on Windows
}
2 · Eine Frage mit bis zu drei Schaltflächen stellen
Confirm.as
dialog.show( "Delete recording?", "This cannot be undone.",
    [ "Delete", "Keep" ],
    function( index:int ):void
    {
        // index = position in the buttons array;
        // -1 = closed without a button, e.g. the Android back key
        if ( index == 0 ) deleteRecording();   // your app
    },
    Dialog.STYLE_WARNING );   // alert style of the macOS sheet
3 · Anmeldedialog mit Textfeldern
SignIn.as
var buttons:Array = [
    { label:"Cancel",  style:4, tag:0 },   // style 4 = cancel, 3 = destructive
    { label:"Sign in", style:0, tag:1 }
];
var fields:Array = [
    { placeholder:"E-mail", text:lastEmail, keyboardType:7 },   // 7 = e-mail keyboard
    { placeholder:"Password", secure:true }                 // never auto-capitalised
];

dialog.present( "Sign in", "Please enter your account.", true, buttons, fields,
    function( tag:int, values:Array, cancelled:Boolean = false ):void
    {
        if ( cancelled ) return;   // closed without a button (tag -1)
        if ( tag == 1 ) signIn( values[0], values[1] );   // values in field order
    },
    null, "dark" );   // theme on Android and iOS; macOS follows the system
4 · Fortschrittsdialog, während Ihr Code arbeitet
Connect.as
// your own id: the same dialog is updated and closed with it
dialog.progressShow( "connect", "Connecting", "Contacting the server…", false,
    function():void { trace( "progress dialog closed" ); } );   // fires once

dialog.progressUpdate( "connect", "Signing in…" );

// when the work is done, or has failed
dialog.progressDismiss( "connect" );
5 · Einen Dialog aus dem Code schließen
Waiting.as
// pass your own id as the 7th parameter to close the dialog later
dialog.present( "Waiting for the camera", "Tap Cancel to stop waiting.", false,
    [ { label:"Cancel", style:4, tag:0 } ], null,
    function( tag:int, values:Array ):void { stopWaiting(); },   // your app
    "waitCamera" );

// the camera has answered: close the dialog, no callback fires
dialog.presentDismiss( "waitCamera" );

API-Übersicht

Dialog.getInstance()Gibt die einzige Instanz zurück.
isSupportedTrue unter Android, iOS und macOS; sonst false, zum Beispiel unter Windows.
show(title, message, buttons, callback, style)Hinweis mit bis zu drei Schaltflächen (Standard „OK“); callback(index), -1, wenn ohne Schaltfläche geschlossen wurde. Gibt false zurück, wenn nicht unterstützt.
present(title, message, cancelable, buttons, fields, callback, id, theme)Dialog mit beliebig vielen Schaltflächen und Textfeldern; callback(tag, values, cancelled). Übergeben Sie eine eigene id, um ihn später zu schließen; theme „light“ oder „dark“ unter Android und iOS.
presentDismiss(id)Schließt einen present()-Dialog aus dem Code; es wird kein Callback ausgelöst.
progressShow(id, title, message, cancelable, closeCallback, theme)Fortschrittsdialog mit Spinner; closeCallback wird einmal ausgelöst, wenn er verschwunden ist.
progressUpdate(id, message) / progressDismiss(id)Ändert den Text des Fortschrittsdialogs / schließt ihn.
STYLE_INFO, STYLE_WARNING, STYLE_CRITICALHinweisstile für show(), vom macOS-Alert-Sheet verwendet.
Button {label, style, tag}style: 0 default, 1 positive, 2 negative, 3 destructive, 4 cancel, 5 neutral. Android nutzt alle, iOS nutzt 3 und 4, macOS zeigt alle Schaltflächen gleich.
Field {placeholder, secure, text, keyboardType, autocorrect, autocap}keyboardType: 0 default, 3 URL, 4 number, 5 phone, 7 e-mail, 8 decimal. autocap: 0 none (default), 1 sentences, 2 words, 3 all. Die letzten drei gelten unter Android und iOS.

KlugDialog 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)
AndroidAndroid 6 oder neuer
iOSiOS 13 oder neuer
macOSmacOS 11 oder neuer