← Toutes les extensions

Extension native

KlugDialog

com.klug.dialog.Dialog

AUCUN APM NÉCESSAIRE. Téléchargez et profitez-en. Impossible de faire plus simple.

Boîtes de dialogue natives pour les applications AIR sur Android, iOS et macOS : alertes, dialogues avec champs de texte qui restent au-dessus du clavier, et boîte de progression que votre code met à jour et ferme.

AndroidiOSmacOS En production À partir de €19 / an · Acheter

Vue d’ensemble

L’alerte intégrée d’AIR sur Mac semble venir d’une autre décennie. KlugDialog affiche la vraie : de véritables feuilles d’alerte macOS attachées à la fenêtre de votre application, avec l’icône de l’app, la police système et les styles de boutons familiers.

Au-delà des simples alertes, il couvre ce dont les applications de bureau ont besoin chaque jour : des dialogues avec champs de texte (par exemple nom d’utilisateur et mot de passe, y compris en champs sécurisés), plusieurs boutons avec leurs propres styles et une feuille de progression (« Connexion… ») que votre code met à jour et ferme une fois le travail terminé.

Tout est asynchrone : show() retourne immédiatement, et votre callback reçoit le bouton choisi. KlugDialog fonctionne dans la version Mac de nos applications, notre preuve de concept.

Nouveau sur Android : les mêmes dialogues sous forme de boîtes de dialogue Android natives. Les champs de texte restent au-dessus du clavier sur tous les écrans, y compris en paysage sur tablette, où les boutons disparaissaient auparavant derrière lui ; les mots de passe, noms d’utilisateur et adresses e-mail ne sont jamais mis automatiquement en majuscules, et les champs e-mail affichent le clavier e-mail. La version Android empile aussi les longues listes de boutons, propose un simple indicateur de chargement (spinner), et fonctionne dans la version Android de nos applications.

Aussi sur iOS : depuis la version 1.2, la même API affiche des alertes iOS natives, des dialogues avec champs de texte et une boîte de progression : un seul chemin de code sert Android, iOS et macOS.

Fonctionnalités

  • Autonome : une seule ANE, sans bibliothèque centrale ni ANE de dépendance à ajouter
  • Feuilles d’alerte macOS natives avec jusqu’à trois boutons
  • Styles informatif, avertissement et critique
  • Dialogues avec un nombre quelconque de boutons et de champs de texte, y compris des champs sécurisés
  • Feuille de progression pouvant être mise à jour et fermée depuis le code
  • Dialogues pouvant être fermés depuis le code
  • Callbacks avec le bouton choisi et les valeurs saisies
  • Android : champs au-dessus du clavier, pas de mots de passe en majuscules automatiques, claviers e-mail / numérique, thème clair et sombre

Plateformes prises en charge

Android alertes · champs de texte · progression · longues listes de boutons
iOS arm64 · alertes · champs de texte · progression
macOS arm64 · x86_64

Sur les autres plateformes, isSupported renvoie false : votre application peut alors se rabattre sur ses dialogues habituels.

Prise en main

Ajoutez l’extension au descripteur de votre application :

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

Exemples de code

Cinq flux complets. Chaque appel retourne immédiatement ; le résultat arrive plus tard dans votre callback, de sorte que l’application ne se bloque jamais pendant l’affichage d’un dialogue. Documentation complète →

1 · Vérifier la prise en charge et afficher une alerte simple
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 · Poser une question avec jusqu’à trois boutons
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 · Dialogue de connexion avec champs de texte
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 · Boîte de progression pendant que votre code travaille
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 · Fermer un dialogue depuis le code
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" );

Aperçu de l’API

Dialog.getInstance()Renvoie l’instance unique.
isSupportedVrai sur Android, iOS et macOS ; faux ailleurs, par exemple sur Windows.
show(title, message, buttons, callback, style)Alerte avec jusqu’à trois boutons (« OK » par défaut) ; callback(index), -1 si fermée sans bouton. Renvoie false si non pris en charge.
present(title, message, cancelable, buttons, fields, callback, id, theme)Dialogue avec un nombre quelconque de boutons et de champs de texte ; callback(tag, values, cancelled). Passez votre propre id pour le fermer plus tard ; thème "light" ou "dark" sur Android et iOS.
presentDismiss(id)Ferme un dialogue present() depuis le code ; aucun callback n’est déclenché.
progressShow(id, title, message, cancelable, closeCallback, theme)Boîte de progression avec indicateur de chargement ; closeCallback se déclenche une fois lorsqu’elle a disparu.
progressUpdate(id, message) / progressDismiss(id)Modifie le texte de la boîte de progression / la ferme.
STYLE_INFO, STYLE_WARNING, STYLE_CRITICALStyles d’alerte pour show(), utilisés par la feuille d’alerte macOS.
Button {label, style, tag}style : 0 par défaut, 1 positif, 2 négatif, 3 destructif, 4 annulation, 5 neutre. Android les utilise tous, iOS utilise 3 et 4, macOS affiche tous les boutons de la même façon.
Field {placeholder, secure, text, keyboardType, autocorrect, autocap}keyboardType : 0 par défaut, 3 URL, 4 nombre, 5 téléphone, 7 e-mail, 8 décimal. autocap : 0 aucune (par défaut), 1 phrases, 2 mots, 3 tout. Les trois dernières valeurs s’appliquent sur Android et iOS.

Acheter KlugDialog

Une licence annuelle pour une application AIR, avec toutes les mises à jour pendant 12 mois. Après le paiement, vous recevez l’extension, la bibliothèque ActionScript et la documentation par e-mail, généralement sous un jour ouvré. Licence et conditions

Simple
€19 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Sans support
Acheter Simple
Standard
€149 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Réponse par e-mail sous 7 jours
Acheter Standard
Priority
€299 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Réponse par e-mail sous 48 heures
Acheter Priority
Les taxes sont calculées lors du paiement par Link (Stripe). Vous saisissez l’identifiant d’application de votre app AIR pendant le paiement.

Prérequis

SDK AIR51.x (HARMAN)
AndroidAndroid 6 ou version ultérieure
iOSiOS 13 ou version ultérieure
macOSmacOS 11 ou version ultérieure