Как добавить поддержку штрих-кода в мобильное приложение Salesforce

Как добавить поддержку штрих-кода в мобильное приложение Salesforce

22 марта 2022 г.

Мобильные устройства прочно вошли в нашу жизнь. Конечно, это может быть хорошо и плохо. Однако для целей этой статьи я сосредоточусь на том, как мобильные устройства обогащают нашу жизнь.


На самом деле, когда мой сын-старшекурсник Эрик приезжает к нам, наши разговоры часто провоцируют Эрика использовать свой телефон для поиска и проверки информации, связанной с нашими обсуждениями. Сумасшествие в том, что независимо от того, о чем мы говорим, его любимая поисковая система и навыки преобразования голоса в текст дают почти немедленный ответ.


Мое использование технологий распространяется даже на экономные подходы к покупкам, когда я могу отсканировать штрих-код интересующего продукта, чтобы узнать, доступен ли тот же продукт по более выгодной цене.


Это заставило меня задуматься, насколько легко я могу внедрить технологию штрих-кода в пользовательское приложение или компонент.


Поддержка штрих-кодов в мобильных приложениях Salesforce


Команда инженеров Salesforce знает, что штрих-коды — это быстрый и простой способ для пользователей мобильных устройств точно определить информацию. И штрих-коды UPC, и QR-коды существуют уже несколько десятилетий, и их использование не исчезает.


Используя мобильный клиент Salesforce и камеру на мобильном устройстве, штрих-коды можно легко интегрировать в приложение через BarcodeScanner API. Вот несколько распространенных вариантов использования для создания веб-компонента Lightning (LWC), который включает API BarcodeScanner:


  • Выполните поиск в Salesforce, используя штрих-код в качестве первичного ключа.

  • Автоматическое заполнение данных формы путем чтения контактных данных внутри QR-кода.

  • Сделать внешний системный вызов с данными штрих-кода, например, отследить доставку через сторонний API.

В этой статье я рассмотрю первый вариант, когда отсканированный штрих-код выполняет поиск данных, хранящихся в Salesforce.


Salesforce DX и VS Code


Salesforce DX делает разработку на платформе Salesforce простой, открытой, интегрированной и совместной. С помощью Salesforce DX разработчики могут работать вместе и непрерывно работать над проектом. В сочетании с Visual Studio (VS) Code и Salesforce Extension Pack, работа с Salesforce становится плавной операцией.


Например, сочетание клавиш Command-Shift-P или Windows-Shift-P обеспечивает быстрый доступ к командам SFDX, подобным показанным ниже:


Увидев эти улучшения воочию, я взволнован возможностью использовать VS Code и Salesforce Extension Pack для создания чего-то для платформы Salesforce.


Случай использования счетчика калорий


Мои заядлые читатели могут вспомнить, что у меня есть возможность работать на 100% удаленно. Большую часть недели я делю наш дом со своей женой Николь и нашим маленьким сыном Финни.


Николь очень добросовестно относится к правильному питанию, и моя любовь к закускам является для нас деликатной темой. По сути, это хороший способ сказать, что Николь считает, что я слишком много перекусываю.


Я заметил, что каждая из этих закусок…



… имеет свой уникальный штрих-код.



Учитывая мой текущий сценарий, я решил создать веб-компонент Lightning (LWC) для мобильного приложения Salesforce под названием «Счетчик калорий». Это приложение будет использовать API BarcodeScanner для считывания UPC и предоставления количества калорий для закуски по моему выбору.


В долгосрочной перспективе я мог бы использовать эту логику для отслеживания потребления перекусов, помогая мне оставаться в допустимых пределах. Однако сейчас мы пойдем, прежде чем побежим.


Создание объекта Snack


Для простоты я создал объект Snack__c в Salesforce DX, который содержал следующие свойства:


  • Название (уже существует в Salesforce) для описания закуски.

  • Калории (как Calories__c), чтобы указать количество калорий на порцию.

  • Штрих-код Значение (как UPC__c), которое служит уникальным ключом для каждой закуски.

Используя мои закуски (на фото выше), я мог быстро ввести ожидаемые данные для этого варианта использования:



Создание счетчика калорий


Понимая мою структуру данных и простой вариант использования, я наметил следующие шаги:


  1. Создайте LWC для интеграции с BarcodeScanner API.

  1. Если результат штрих-кода существует, используйте отсканированное значение для вызова контроллера Apex в Salesforce.

  1. Контроллер Apex вызывает объект Snack__c, используя значение штрих-кода.

  1. Если для отсканированного значения существует результат Snack__c, верните данные объекта в LWC.

  1. LWC отображает данные об устройстве, делающем запрос.

Создание веб-компонента Lightning (LWC)


В VS Code новый LWC можно создать с помощью параметра SFDX: Создать веб-компонент Lightning. Я использовал название calorieCounter.


Во-первых, я хотел убедиться, что мой новый компонент можно будет использовать практически везде в экосистеме Salesforce. Я обновил calorieCounter.js-meta.xml, как показано ниже:


```javascript




53.0


истина


<цели>


lightning__AppPage


lightning__RecordPage


lightning__HomePage




API BarcodeScanner был добавлен в мой новый компонент с использованием следующей информации, содержащейся в документации по API BarcodeScanner:


```javascript


импортировать {getBarcodeScanner} из 'lightning/mobileCapabilities';


Затем я добавил следующий метод, чтобы определить, может ли клиент, использующий компонент, сканировать штрих-коды:


```javascript


связанныйCallback () {


this.myScanner = getBarcodeScanner();


если (this.myScanner == null || !this.myScanner.isAvailable()) {


this.scanButtonDisabled = истина;


Наконец, я добавил метод handleBeginScanClick() для захвата штрих-кода с камеры устройства. Затем, в случае успеха, результаты передаются контроллеру Apex в Salesforce, чтобы попытаться найти закуску. Я также добавил простую обработку ошибок.


```javascript


handleBeginScanClick (событие) {


// Сбросить scannedBarcode в пустую строку перед началом нового сканирования


this.scannedBarcode = '';


this.resultsFound = ложь;


this.snackFound = ложь;


// Убедитесь, что BarcodeScanner доступен, прежде чем пытаться его использовать


// Примечание: мы также отключаем кнопку "Сканировать", если нет сканера штрих-кода


если (это.myScanner?.isAvailable()) {


const scanOptions = {


Типы штрих-кодов: [


this.myScanner.barcodeTypes.UPC_E


это.myScanner


.beginCapture (параметры сканирования)


.тог((результат) => {


this.resultsFound = истина;


this.scannedBarcode = результат.значение;


this.scannedBarcodeType = result.type;


findSnackByUpcEquals({upcId: this.scannedBarcode})


.then((закуска) => {


this.snackFound = истина;


this.snackName = закуска.Имя;


this.snackCalories = закуска.Calories__c;


this.snackUPC = закуска.UPC__c;


эта.ошибка = не определено;


this.buttonLabel = 'Сканировать другой штрих-код закуски';


.catch((ошибка) => {


выбросить ошибку;


.catch((ошибка) => {


// Здесь обрабатывать отмену и непредвиденные ошибки


консоль.ошибка(ошибка);


this.snackFound = ложь;


this.buttonLabel = 'Сканировать штрих-код';


// Сообщаем пользователю, что мы столкнулись с чем-то непредвиденным


это.dispatchEvent(


новый ShowToastEvent({


title: 'Ошибка сканера штрих-кода',


сообщение:


'Возникла проблема со сканированием штрих-кода: ' +


JSON.stringify(ошибка) +


' Пожалуйста, попробуйте еще раз.',


вариант: 'ошибка',


режим: «липкий»


.finally(() => {


// Очистить, завершив захват,


// завершили ли мы успешно или произошла ошибка


this.myScanner.endCapture();


} еще {


// Сканер штрих-кода недоступен


// Не работает на оборудовании с камерой или какая-то другая контекстная проблема


// Сообщите пользователю, что ему нужно использовать мобильный телефон с камерой


это.dispatchEvent(


новый ShowToastEvent({


title: 'Сканер штрих-кода недоступен',


сообщение:


'Повторите попытку из приложения Salesforce на мобильном устройстве.',


вариант: 'ошибка'


Вот как выглядит шаблон пользовательского интерфейса простого компонента:


```javascript


<шаблон>


<div if:false={resultsFound} class="slds-align_absolute-center slds-text-align_center


slds-text-color_weak">


Нажмите кнопку «Сканировать штрих-код», чтобы открыть вид камеры сканера штрих-кода. Поместите штрих-код в поле зрения сканера, чтобы отсканировать его.



<div if:true={resultsFound} class="slds-var-m-vertical_large slds-var-p-vertical_medium


slds-text-align_center slds-border_top slds-border_bottom">


Найден штрих-код = {scannedBarcode} (type = {scannedBarcodeType})



<div if:true={snackFound} class="slds-var-m-vertical_large slds-var-p-vertical_medium


slds-text-align_center slds-border_top slds-border_bottom">



Название: {snackName}


Калории: {snackCalories}


Значение UPC: {snackUPC}





<lightning-button variant="brand" class="slds-var-m-left_x-small" disabled={scanButtonDisabled}


icon-name="utility:cases" label={buttonLabel} title="Сканирование закуски"


onclick={handleBeginScanClick}>





Доступ к данным о калориях с помощью контроллера Apexr


Контроллер Apex, используемый компонентом счетчика калорий, также имеет простую конструкцию и в основном содержит один запрос Salesforce:


```javascript


public с общим классом SnackController {


@AuraEnabled (кэшируемый = истина)


public static Snack__c findSnackByUpcEquals (строка upcId) {


вернуть [


ВЫБЕРИТЕ Имя, Калории__c, UPC__c


ИЗ Snack__c


ГДЕ UPC__c = :upcId


ПРЕДЕЛ 1


Контроллер получает upcId от компонента и включает значение в запрос объекта Snack__c. Набор результатов ограничен одной записью, которая возвращается компоненту.


Предоставление счетчика калорий через Salesforce Mobile


Когда все было готово, я смог использовать Command-Shift-P и команду SFDX: Развернуть этот источник в организации , чтобы отправить свой код в мою организацию по разработке Salesforce. Это позволило сделать объект закуски, компонент счетчика калорий и контроллер Apex доступными для использования в Salesforce.


Затем я открыл проекцию Настройка в Salesforce и перешел к Приложениям | Страница диспетчера приложений. Я нажал кнопку Новое приложение Lightning и создал новое приложение под названием CalorieCounter:



Затем я перешел к Пользовательскому интерфейсу | Конструктор приложений Lightning . Здесь я создал новую Lightning-страницу под названием Счетчик калорий, которая была разработана как страница приложения с одним регионом.


В левой части экрана в разделе «Пользовательский» я мог видеть свой счетчик калорий. Все, что мне нужно было сделать, это перетащить этот компонент и поместить его в единую область для страницы на основе Lightning.



После сохранения компонента я использовал процесс активации, чтобы открыть страницу Lightning для использования клиентами. На этапе активации я добавил страницу Lightning «Счетчик калорий» в приложение «CalorieCounter»:



Наконец, я посетил Setup | Приложения | Мобильные приложения | Навигация Salesforce и добавили приложение Счетчик калорий в верхнюю часть выбранных приложений:



Счетчик калорий в действии


После загрузки и запуска мобильного приложения Salesforce я увидел только что созданное приложение «Счетчик калорий»:



Затем я коснулся приложения «Счетчик калорий», которое отобразило следующий экран с моим пользовательским LWC:



Я нажал кнопку Сканировать штрих-код и отсканировал UPC в поисках батончика Hershey:



Сканер штрих-кода на моем мобильном устройстве быстро распознал штрих-код и обновил приложение «Счетчик калорий», как показано ниже:



За считанные секунды я смог подсчитать калорийность батончика Hershey и принять решение, готов ли он к употреблению. (Я был, и я сделал.)


Заключение


Начиная с 2021 года, я пытаюсь жить в соответствии со следующим заявлением о миссии, которое, как мне кажется, применимо к любому ИТ-специалисту:


«Сосредоточьте свое время на предоставлении возможностей/функциональности, которые повышают ценность вашей интеллектуальной собственности. Используйте фреймворки, продукты и услуги для всего остального».


- Дж. Вестер


Возможность внедрить поддержку штрих-кода в пользовательское приложение довольно просто при использовании веб-компонентов Lightning (LWC) и API BarcodeScanner.


Менее чем за час мои знания о штрих-кодах превратились из обычного сканера в разработчика, который просто интегрировал штрих-коды в функциональное приложение. Ясно, что команда инженеров Salesforce разрабатывает решения, которые обеспечивают реальную ценность для решения общих задач… и они также помогают мне жить в соответствии с моей текущей миссией.


В современном мире потребители руководствуются тем, что они могут и не могут делать на своих мобильных устройствах. Если у технологии штрих-кодов есть способ дать вам конкурентное преимущество, платформа приложений (например, Salesforce), которая предлагает надежный API штрих-кода, должна быть в вашем коротком списке поставщиков.


Если вас интересует исходный код этой статьи, просто перейдите в следующий репозиторий на GitLab:


https://gitlab.com/johnjvester/lwc-calorie-counter


Хорошего дня!


Совместно опубликовано [здесь] (https://dzone.com/articles/adding-barcode-support-to-a-salesforce-mobile-appl)



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE