← Alla tillägg

Inbyggt tillägg

KlugRegister

com.klug.register.KlugRegister

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

Skapar QR-koder och skannar dem med en inbyggd helskärmsskanner för kameran, så att en andra enhet kan loggas in genom att rikta kameran mot den första, utan att skriva användarnamn eller lösenord.

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

Översikt

Många appar behöver en andra enhet: en kamera och en tittare, en telefon och en surfplatta, en kiosk och en administratörstelefon. Inloggningen på den andra enheten är där användare ger upp: de måste komma ihåg ett användarnamn, skriva ett lösenord eller vänta på en e-postkod.

KlugRegister gör det steget till ett enda kamerakort. Den första enheten skapar en QR-kod; den andra enheten skannar den med en inbyggd skanner och appen loggar in. QR-koden bär det din app behöver, vanligtvis en engångskod från din server, aldrig själva lösenordet.

Båda delarna är inbyggda: QR-koderna genereras av systemet (skarpa i valfri storlek, som en AIR-BitmapData redo att visas), och skannern är inbyggd: en kameravy i helskärm med din egen hjälptext på iOS, och Googles kodskanner på Android, som inte kräver någon kamerabehörighet alls.

KlugRegister körs i den aktuella versionen av våra appar, vårt proof of concept: efter registreringen visar appen en QR-kod, och den andra enheten paras ihop på några sekunder, även direkt efter att appen installerats från butiken.

Funktioner

  • Fristående: ett ANE, inget kärnbibliotek eller beroende-ANE:er att lägga till
  • Skapa QR-koder från valfri text eller URL, returneras som BitmapData med en korrekt tyst zon
  • Välj storlek i pixlar per modul, skarpt på alla skärmar
  • Inbyggd kameraskanner i helskärm med egen hjälptext och avbrytknapp
  • Ber om kamerabehörighet och rapporterar när den nekas
  • Android: Googles kodskanner från Play services, ingen kamerabehörighet behövs
  • Fungerar i stående och liggande läge, på telefoner och surfplattor
  • iOS och macOS: endast systemramverken; Android: ZXing och Googles kodskanner, som löses automatiskt när appen paketeras

Plattformar som stöds

Android skapa + skanna
iOS skapa + skanna · arm64
macOS skapa + skanna (macOS 13+) · arm64 · x86_64
iPad på Mac skapa + skanna

Där en funktion inte är tillgänglig returnerar isSupported och isScanSupported false, så att samma kod kan ligga kvar i alla appar.

Kom igång

Lägg till tillägget i din applikationsbeskrivning (application descriptor):

app.xml
<extensions>
    <extensionID>com.klug.register.KlugRegister</extensionID>
</extensions>

För skanning på iOS lägger du till en beskrivning av kameraanvändningen i InfoAdditions:

app.xml · InfoAdditions
<key>NSCameraUsageDescription</key>
<string>Scan the QR code of your first device</string>

Kodexempel

Fyra kompletta flöden för att para ihop en andra enhet. Att skapa en kod sker omedelbart; skannerns resultat kommer som en KlugRegisterEvent. Fullständig dokumentation →

1 · Visa en ihopparningskod på den första enheten
PairingCode.as
import com.klug.register.KlugRegister;
import com.klug.register.KlugRegisterEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;

var reg:KlugRegister = KlugRegister.getInstance();

if ( reg.isSupported )   // Android, iOS, macOS
{
    // a short-lived one-time code from your server, never the password
    var bmp:BitmapData = reg.createQRCode( "https://your.server/pair?t=" + oneTimeCode, 10 );
    if ( bmp != null )    // null: no code could be made from the text
    {
        var qr:Bitmap = new Bitmap( bmp );   // black on white, 4-module quiet zone included
        qr.x = ( stage.stageWidth - qr.width ) / 2;
        qr.y = 120;
        addChild( qr );
    }
}
2 · Skanna den på den andra enheten
Scan.as
reg.addEventListener( KlugRegisterEvent.SCANNED,  onScanned );
reg.addEventListener( KlugRegisterEvent.CANCELED, onScanCanceled );
reg.addEventListener( KlugRegisterEvent.ERROR,    onScanError );

function startScan():void
{
    if ( !reg.isScanSupported )
    {
        showCodeEntry();   // your app function: type the one-time code instead
        return;
    }
    // iOS: full-screen scanner with your hint and button; macOS 13+: a sheet on the app window;
    // Android: Google's own localized scanner, hint and cancel title are not used
    if ( !reg.scanQRCode( "Point the camera at the code on your first device", "Cancel" ) )
        trace( "a scanner is already open" );
}
3 · Lös in koden hos din server
Redeem.as
function onScanned( e:KlugRegisterEvent ):void
{
    var prefix:String = "https://your.server/pair?t=";
    if ( e.text.indexOf( prefix ) != 0 )
    {
        showMessage( "This is not a pairing code." );   // your app function
        return;
    }

    var vars:URLVariables = new URLVariables();
    vars.t = e.text.substr( prefix.length );
    var req:URLRequest = new URLRequest( "https://your.server/pair" );
    req.method = URLRequestMethod.POST;
    req.data = vars;

    var loader:URLLoader = new URLLoader();
    loader.addEventListener( Event.COMPLETE, function( ev:Event ):void {
        signInWith( String( loader.data ) );   // your app function: the server's answer
    });
    loader.load( req );
}
4 · Avbrott och fel
ScanErrors.as
function onScanCanceled( e:KlugRegisterEvent ):void
{
    showPairingScreen();   // the user closed the scanner: back to the screen, no message
}

function onScanError( e:KlugRegisterEvent ):void
{
    switch ( e.errorCode )
    {
        case "denied":     // iOS, macOS: camera permission refused
            showMessage( "Allow camera access in Settings to scan the code." );
            break;
        case "nocamera":   // iOS, macOS: no usable camera
            showCodeEntry();
            break;
        default:           // Android: "scanner" (e.g. scanner not ready yet) or "empty"
            showMessage( "The scanner could not start: " + e.errorMessage );
    }
}

API-översikt

KlugRegister.getInstance()Returnerar den enda instansen.
isSupportedTrue där QR-koder kan skapas (Android, iOS, macOS).
isScanSupportedTrue där skannern är tillgänglig: Android, iOS samt macOS 13 eller senare med kamera.
createQRCode(text, modulePx)Returnerar QR-koden som BitmapData, svart på vitt, med fyra moduler tyst zon; modulePx pixlar per modul (standard 8). Null om ingen kod kunde skapas.
scanQRCode(hint, cancelTitle)Öppnar skannern: helskärm på iOS, ett ark (sheet) på Mac, Googles skanner på Android (hint och titel används inte där). Resultatet kommer som en händelse. Returnerar false om en skanner redan är öppen.
KlugRegisterEventtext, errorCode, errorMessage.

Händelser

KlugRegisterEvent.SCANNEDEn kod lästes; e.text innehåller dess innehåll.
KlugRegisterEvent.CANCELEDAnvändaren stängde skannern.
KlugRegisterEvent.ERRORe.errorCode: denied (ingen kamerabehörighet) · nocamera på iOS och macOS; scanner · empty på Android. Detaljer i e.errorMessage.

Köp KlugRegister

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)
AndroidAndroid 6 eller senare, Google Play services (skanner)
iOSiOS 13 eller senare
macOSmacOS 10.15 eller senare (skapa QR-koder); macOS 13 eller senare för skanning
BehörigheteriOS och macOS: kamera, för skanning (NSCameraUsageDescription); Android: inga