← Alle utvidelser

Native utvidelse

KlugRegister

com.klug.register.KlugRegister

INGEN APM NØDVENDIG. Last ned og bruk. Det blir ikke enklere enn dette.

Lager QR-koder og skanner dem med en native fullskjerms kameraskanner, slik at en andre enhet kan logges inn ved å peke kameraet mot den første, uten å skrive inn brukernavn eller passord.

AndroidiOSmacOSiPad på Mac I produksjon Fra €19 / år · Kjøp

Oversikt

Mange apper trenger en andre enhet: et kamera og en visning, en telefon og et nettbrett, en kiosk og en admin-telefon. Innlogging på den andre enheten er der brukerne gir opp: de må huske et brukernavn, skrive et passord eller vente på en e-postkode.

KlugRegister gjør det trinnet til ett kamerabilde. Den første enheten lager en QR-kode; den andre enheten skanner den med en native skanner, og appen logger inn. QR-koden bærer det appen din trenger, vanligvis en engangskode fra serveren din, aldri selve passordet.

Begge delene er native: QR-kodene genereres av systemet (skarpe i enhver størrelse, som en AIR-BitmapData klar til visning), og skanneren er native: en fullskjerms kameravisning med din egen hjelpetekst på iOS, og Googles kodeskanner på Android, som ikke trenger kameratillatelse i det hele tatt.

KlugRegister kjører i den nåværende utgivelsen av appene våre, vårt proof of concept: etter registrering viser appen en QR-kode, og den andre enheten kobles til på sekunder, selv rett etter at appen er installert fra butikken.

Funksjoner

  • Selvstendig: én ANE, ingen kjernebibliotek eller avhengige ANE-er å legge til
  • Lag QR-koder fra enhver tekst eller URL, returnert som BitmapData med riktig stille sone
  • Velg størrelsen i piksler per modul, skarpt på enhver skjerm
  • Native fullskjerms kameraskanner med din egen hjelpetekst og avbryt-knapp
  • Ber om kameratillatelse og rapporterer når den nektes
  • Android: Googles kodeskanner fra Play-tjenester, ingen kameratillatelse nødvendig
  • Fungerer i stående og liggende format, på telefoner og nettbrett
  • iOS og macOS: bare systemrammeverkene; Android: ZXing og Googles kodeskanner, løses automatisk når appen pakkes

Støttede plattformer

Android lag + skann
iOS lag + skann · arm64
macOS lag + skann (macOS 13+) · arm64 · x86_64
iPad på Mac lag + skann

Der en funksjon ikke er tilgjengelig, returnerer isSupported og isScanSupported false, slik at den samme koden kan bli værende i alle apper.

Kom i gang

Legg utvidelsen til i applikasjonsbeskrivelsen din:

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

For skanning på iOS legger du til en kamerabruksbeskrivelse i InfoAdditions:

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

Kodeeksempler

Fire komplette flyter for å koble til en andre enhet. Å lage en kode skjer umiddelbart; skannerresultatet kommer som en KlugRegisterEvent. Full dokumentasjon →

1 · Vis en tilkoblingskode på den første 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 · Skann den på den andre 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 inn koden hos serveren din
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 · Avbrudd og feil
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-oversikt

KlugRegister.getInstance()Returnerer den ene instansen.
isSupportedTrue der QR-koder kan lages (Android, iOS, macOS).
isScanSupportedTrue der skanneren er tilgjengelig: Android, iOS og macOS 13 eller nyere med kamera.
createQRCode(text, modulePx)Returnerer QR-koden som BitmapData, svart på hvitt, med en stille sone på 4 moduler; modulePx piksler per modul (standard 8). Null hvis ingen kode kunne lages.
scanQRCode(hint, cancelTitle)Åpner skanneren: fullskjerm på iOS, et ark på Mac, Googles skanner på Android (hjelpetekst og tittel brukes ikke der). Resultatet kommer som en hendelse. Returnerer false hvis en skanner allerede er åpen.
KlugRegisterEventtext, errorCode, errorMessage.

Hendelser

KlugRegisterEvent.SCANNEDEn kode ble lest; e.text inneholder innholdet.
KlugRegisterEvent.CANCELEDBrukeren lukket skanneren.
KlugRegisterEvent.ERRORe.errorCode: denied (ingen kameratillatelse) · nocamera på iOS og macOS; scanner · empty på Android. Detaljer i e.errorMessage.

Kjøp KlugRegister

En årslisens for én AIR-applikasjon, med alle oppdateringer i 12 måneder. Etter betaling mottar du utvidelsen, ActionScript-biblioteket og dokumentasjonen på e-post, vanligvis innen én virkedag. Lisens og vilkår

Enkel
€19 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Ingen støtte
Kjøp Enkel
Standard
€149 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 7 dager
Kjøp Standard
Prioritet
€299 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 48 timer
Kjøp Prioritet
Skatter og avgifter beregnes ved kassen av Link (Stripe). Du oppgir applikasjons-ID-en til AIR-appen din under kassen.

Krav

AIR SDK51.x (HARMAN)
AndroidAndroid 6 eller nyere, Google Play-tjenester (skanner)
iOSiOS 13 eller nyere
macOSmacOS 10.15 eller nyere (opprette QR-koder); macOS 13 eller nyere for skanning
TillatelseriOS og macOS: kamera, for skanning (NSCameraUsageDescription); Android: ingen