バーコード読み取りモバイルアプリケーションRayBarcode Readerの画面をカスタマイズする方法を説明します。
ここでは、カスタマイズ可能な箇所やVisualforceまたはLightning Auraコンポーネント、Lightning Webコンポーネントを使ったカスタマイズ方法について説明します。
上記の画像のように以下の要素を設定できます。
gcbc:GcBarcodeScannerVFコンポーネントの「title」「font-color」「font-size」「background-color」「opacity」属性値を設定することで実装可能です。
gcbc:GcBarcodeScannerVFコンポーネントの属性の詳細については、こちらを参照してください。
まずは、読み取り結果を受け取るコントローラーを作成します。
// Tutorial6Controller.cls
public with sharing class Tutorial6Controller {
// 読み取り結果を格納するSingleScanResultプロパティ
public string singleScanResult {get;set;}
// 読み取り結果を表示する要求に対して読み取り結果を返す
public string getSingleScanOutputMessage() {
// 読み取り結果に値が存在する場合
if (this.singleScanResult != null) {
// UTF-8でURLエンコードした結果を返す
return EncodingUtil.urlDecode(this.singleScanResult, 'UTF-8');
}
return this.singleScanResult;
}
}
次に「読み取り開始」ボタンを置く画面となるVisualforceページ「Tutorial6.vfp」を作成します。この画面は「読み取り開始」ボタンと「読み取り結果の表示領域」を持ちます。
後述のソースコードを貼り付けて、「保存」ボタンをクリックする。
<!-- RayBarcode Readerモバイルアプリケーションの画面カスタマイズ サンプルコード -->
<!-- Tutorial6.vfp -->
<apex:page controller="Tutorial6Controller">
<!-- Lightning Design Systemを有効にする -->
<apex:slds />
<!-- 見出しを表示する -->
<apex:sectionHeader title="チュートリアル6"/>
<!-- 読み取りボタンを表示する -->
<gcbc:GcBarcodeScannerVF id="scanButton"
title="RayBarcodeウェブセミナー"
font-color="Yellow"
font-size="20"
background-color="DarkGreen"
opacity="1"
buttonText="読み取り開始"
continuousScan="false"
reRender="singleScanOutput"
scanResults="{!SingleScanResult}"
styleClass="slds-button slds-button--brand slds-m-top--medium"
style="width:200px;" />
<!-- 結果の表示領域 -->
<apex:outputPanel id="singleScanOutput" layout="block">
{!SingleScanOutputMessage}
</apex:outputPanel>
</apex:page>
作成したVisualforceページをSalesforceモバイルアプリケーションから表示できるようにするため、タブをナビゲーションメニューに追加する。
Salesforce Classicの場合:
Lightning Experienceの場合:
作成したVisualforceページがモバイルナビゲーションに追加されていることを確認する。
「読み取り開始」ボタンをタップし、RayBarcode Readerモバイルアプリケーションの画面がカスタマイズされていることを確認する。
gcbc:GcBarcodeScannerLTコンポーネントの「title」「font-color」「font-size」「background-color」「opacity」属性値を設定することで実装可能です。
gcbc:GcBarcodeScannerLTコンポーネントの属性の詳細については、こちらを参照してください。
まずは、gcbc:GcBarcodeScannerLTコンポーネントを使って新しいLightning Auraコンポーネントを作成します。
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes" access="global" >
<aura:attribute name="singleScanResult" type="String"/>
<aura:attribute name="singleScanResultOutout" type="String"/>
<h1>チュートリアル7</h1>
<br/>
<gcbc:GcBarcodeScannerLT
aura:id="single-scan-button"
title="RayBarcodeウェブセミナー"
font-color="Yellow"
font-size="20"
background-color="DarkGreen"
opacity="1"
buttonText="読み取り開始"
scanResults="{!v.singleScanResult}"
onScanComplete="{!c.onSingleScanComplete}"
/>
<br/>
<ui:outputText value="{!v.singleScanResultOutout}"/>
</aura:component>
5. 右の一覧から「CONTROLLER」をクリックする。 6. 「Tutorial7Controller.js」に次のコードを入力し、キーボードの「Ctrl + S」を押下して保存する。このコードはonScanCompleteイベントをハンドルして読み取り終了通知を受け取ります。サンプルに対して定義された onSingleScanCompleteメソッドは、次のようになります。
({
onSingleScanComplete: function (component, event, helper) {
var result = event.getParam("success");
if (result){
var data = component.get("v.singleScanResult");
// データがデコードされていない場合、
// コンマ(,)はエスケープ文字列(%2C)になります
var decodedData = decodeURIComponent(data);
component.set("v.singleScanResultOutout", decodedData);
}else{
alert("読み取り失敗");
}
},
})
7. 「開発者コンソール」のウィンドウを閉じる。
次にLightningアプリケーションビルダーを使ってLightningアプリケーションにさきほど作成したLightning Auraコンポーネントを配置します。
モバイルアプリケーションに表示が反映するまで時間がかかることがあります。 すぐに動作を確認したい場合はモバイルアプリケーションのキャッシュクリアや再ログインを試してください。
gcbc-gc-barcode-scanner-lwcコンポーネントの「title」「font-color」「font-size」「background-color」「opacity」属性値を設定することで実装可能です。
gcbc-gc-barcode-scanner-lwcコンポーネントの属性の詳細については、こちらを参照してください。
この手順は、Salesforce CLIやVisual Studio CodeなどLightning Webコンポーネントの開発環境が整っており、組織を操作するSalesforce DXプロジェクトでLightning WebコンポーネントやApexクラスなどを作成およびデプロイすることを前提としています。
myFirstCustomAppLwc.html
<template>
<h1>画面のカスタマイズ</h1>
<div slot="actions">
<gcbc-gc-barcode-scanner-lwc data-id="single-scan-button" button-text="読み取り開始"
title="RayBarcodeウェブセミナー"
font-color="Yellow"
font-size="20"
background-color="DarkGreen"
opacity="1"
onscancomplete={onSingleScanComplete}>
</gcbc-gc-barcode-scanner-lwc>
</div>
<lightning-formatted-text value={singleScanResultOutput}></lightning-formatted-text>
</template>
myFirstCustomAppLwc.js
import { LightningElement, track } from 'lwc';
export default class MyFirstCustomAppLwc extends LightningElement {
@track singleScanResultOutput;
onSingleScanComplete(event) {
const data = event.detail;
if (data && data.success) {
const results = data.scanResults;
this.singleScanResultOutput = decodeURIComponent(results);
} else {
alert("読み取りはできませんでした。");
}
}
}
myFirstCustomAppLwc.js-meta
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>55.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__Tab</target>
</targets>
</LightningComponentBundle>
次に、作成したLightning Webコンポーネントをタブに設定します。
動作を確認します。次の手順で、このページに表示されているQRコードを読み取れるか確認してください。
モバイルアプリケーションに表示が反映するまで時間がかかることがあります。 すぐに動作を確認したい場合はモバイルアプリケーションのキャッシュクリアや再ログインを試してください。