--> -->
#blog2navi() *NativeScriptでQRコードを出力する [#ob9b54c6] NativeScriptでQRコードを出力するには、[[NativeScript ZXing:https://www.npmjs.com/package/nativescript-zxing]]が一般的なようです。~ ライセンスはApache2.0で一見問題無いように見えますが、よく読むと以下の記述があります。 >However for entities that need a support contract, changes, enhancements and/or a commercial license please contact me at http://nativescript.tools. < > ただし、サポート契約、変更、機能強化、および商用ライセンスが必要な事業体については、http://nativescript.toolsで私に連絡してください。 < 商用で使う場合は連絡しろとあり、HPを見に行くと有料のような気配。私は製品に組み込みたかったので、他の手段を探したところ、[[QR Code Generator:https://www.npmjs.com/package/qrcode-generator]]というものがありました。~ 以下、組み込み方です。 + jsファイルの配置~ qrcode.jsを適当な場所に配置します。私は &inlinecode{common/qrcode.js};~ + 生成用メソッドを作成~ QRコードを生成するメソッドを作成し同一ディレクトリに置きました。パラメータは固定にしています。XML内にbase64形式で埋め込むため、サンプルにはありませんでしたが &inlinecode{createDataURL()};という関数を呼び出してします。&inlinecode{createImgTag()};ではHTMLのIMGタグもセットで生成されますが、&inlinecode{createDataURL()};だとbase64形式の画像データ文字列だけを返してくれます。 #code(JavaScript){{{ const qrcode = require("./qrcode"); /** * QRコードを生成する */ function createQrcode(text) { const typeNumber = "0"; const mb = "UTF-8"; const errorCorrectionLevel = "M"; // L/M/Q/H const mode = "Byte"; // 日本語が入る場合は Kanji qrcode.stringToBytes = qrcode.stringToBytesFuncs[mb]; var qr = qrcode(typeNumber || 4, errorCorrectionLevel || 'M'); qr.addData(text, mode); qr.make(); // return qr.createTableTag(); // return qr.createSvgTag(); // return qr.createImgTag(); return qr.createDataURL(); } exports.createQrcode = createQrcode; }}} + XMLを用意する~ QRコードを表示したい場所に以下のようにImageタグを書きます。 #code(JavaScript){{{ <Image class="qrcode" src="{{ qrcode }}"/> }}} + 埋め込み~ あとは &inlinecode{qrcode};に&inlinecode{createDataURL()};で生成した文字列を埋め込めばOKです。 #code(JavaScript){{{ const qrcodeGenerator = require("../../common/qrcode/qrcode-generator"); : let context; const url = "適当なURL"; context.qrcode = qrcodeGenerator.createQrcode(url); component.bindingContext = context; }}} 画像サイズはCSSなどで適当に調整してみてください。~ あとは別のスマホで正常に読み込めれば完了です。 #htmlinsert(twitterbutton.html) RIGHT:Category: [[[NativeScript>日記/Category/NativeScript]]] - 11:53:09 ---- RIGHT:&blog2trackback(); #comment(above) #blog2navi()