Использование Android Studio для изучения Salesforce Mobile SDK

Использование Android Studio для изучения Salesforce Mobile SDK

1 апреля 2022 г.

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


  • [Использование Salesforce с помощью Spring Boot] (https://hackernoon.com/how-to-leverage-the-salesforce-api-without-the-salesforce-client)

  • [Использование Salesforce с помощью клиента, написанного на Svelte] (https://hackernoon.com/how-to-leverage-salesforce-using-a-client-writing-in-svelte)

  • [Использование Salesforce с помощью клиента, написанного на Vue.js] (https://hackernoon.com/leveraging-salesforce-using-a-client-writing-in-vuejs)

  • [Использование Salesforce с помощью мобильных приложений, написанных (один раз) на React Native] (https://hackernoon.com/leveraging-salesforce-using-mobile-applications-writing-once-in-react-native)

  • [Использование Salesforce с помощью клиента, написанного на Angular] (https://hackernoon.com/how-to-leverage-salesforce-via-a-client-writing-in-angular)

Графическое представление серии показано ниже:



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


Недавно я начал новую серию, чтобы продемонстрировать [Salesforce Mobile SDK] (https://developer.salesforce.com/docs/atlas.en-us.mobile_sdk.meta/mobile_sdk/intro.htm), который использует возможности платформу Salesforce в рамках автономных мобильных приложений.


Графическое представление этой новой серии показано ниже:



«[Изучение мобильного SDK Salesforce с помощью React Native] (https://hackernoon.com/build-a-mobile-app-using-react-native-and-the-salesforce-mobile-sdk)» — первая статья в эта серия Mobile SDK. В этой статье я сосредоточусь на использовании Android Studio для создания такого же приложения.


Преимущества Salesforce Mobile SDK


Salesforce Mobile SDK предоставляет ряд преимуществ для разработчиков программного обеспечения:


  • Позволяет пользовательским приложениям для мобильных устройств использовать функции и возможности Salesforce.

  • Полный доступ к функциям Salesforce (не нужно изобретать велосипед)

  • Приложения можно распространять с помощью магазина приложений нативного устройства

  • Обработка push-уведомлений от Salesforce

  • Возможность работы с данными Salesforce в автономном режиме

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


Преимущества использования Android Studio


Если вашей клиентской базе требуется поддержка устройств Android и вы хотите использовать Android Studio для разработки приложений, вам будет полезен интерфейс командной строки Forcedroid для быстрого начала работы с функциями Salesforce.


Основные функции для команд, использующих Android Studio, включают в себя:


  • Использует Java или Kotlin в качестве основного языка программирования

  • Обеспечивает 100% встроенную поддержку функций и функций на устройствах Android.

  • Позволяет опытным разработчикам Android быстро использовать функциональные возможности Salesforce Mobile SDK.

  • Долгосрочная дорожная карта возможностей/функциональности — наряду с качеством текущей поддержки — имеет тенденцию отдавать предпочтение Android Studio по сравнению с React Native.

Теперь, когда мы готовы погрузиться, давайте кратко рассмотрим наш вариант использования.


Finny’s Foods: пример использования


Рождение сына (Финни) с особыми потребностями привело к личному желанию понять и оценить продукты, которые мы используем в нашей повседневной жизни. За несколько лет до рождения Финни мы с женой (Николь) вели здоровый образ жизни. Однако когда Николь начала углубляться в изучение ингредиентов продуктов, составляющих наш ежедневный рацион, мы получили столь необходимый тревожный сигнал.


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


Для этой серии наше приложение Finny’s Foods предоставляет простой список блюд, которые приемлемы для нас и нравятся Финни. Сейчас мы включим два простых атрибута для каждого приема пищи:


  • Название блюда

  • Рейтинг (от 1 до 5, где рейтинг 5 — абсолютный фаворит для Финни)

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


Начало работы с Android Studio


Помимо установки git и npm на свой MacBook Pro, я удостоверился, что моя версия Android Studio обновлена. Затем я посетил следующий URL-адрес, чтобы убедиться, что все установлено и настроено должным образом:


Настройте среду разработки для Android


Эти шаги включают в себя установку Android Studio, Android SDK и как минимум одного эмулятора Android (AVD) и интерфейса командной строки Forcedroid.


Затем я выполнил forcedroid из сеанса терминала со следующими параметрами:


```javascript


принудительное создание


Введите тип вашего приложения (native_kotlin или native, оставьте пустым для native_kotlin): native


Введите имя вашего приложения: finnys-foods-android


Введите имя вашего пакета: com.gitlab.johnjvester.finnysfoods.android


Введите название вашей организации (Acme, Inc.): JVC


Введите выходной каталог для вашего приложения (оставьте пустым для текущего каталога):


После завершения я запустил Android Studio и импортировал новый проект finnys-foods-android, как описано в следующем URL-адресе:


https://developer.salesforce.com/docs/atlas.en-us.noversion.mobile_sdk.meta/mobile_sdk/android_new_project.htm


Создание объекта Meal в Salesforce


Прежде чем я смог приступить к созданию нового приложения в Android, мне нужно было установить объект Meal в Salesforce.


У меня уже была организация разработчиков, которую я мог использовать. (Вы можете создать новый здесь. Итак, я просто вошел в систему, используя свой адрес электронной почты. адрес и пароль для этой организации. Затем я перешел к Apps | Диспетчер приложений и перспектива Настройка в Salesforce.


Я создал новое приложение Lightning под названием Meal:



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


Затем я посетил Объекты и поля | Параметр меню «Диспетчер объектов» в настройках Salesforce. Как только я нашел только что созданный элемент питания, я использовал компонент раскрывающегося списка, чтобы редактировать объект.


Я переключился с подменю Подробности на Поля и отношения . Я быстро понял, что мне не нужно создавать свойство Name для объекта Meal, поскольку Salesforce уже позаботилась об этом за меня. Мне просто нужно было добавить поле Рейтинг.


С помощью кнопки Создать я выбрал тип поля число и заполнил Шаг 2, как указано ниже:



Я использовал значения по умолчанию и сохранил свое новое поле. Теперь я могу использовать поля имени и рейтинга в своем приложении для Android.



Используя клиент Salesforce, я заполнил некоторые исходные данные для разработки приложения в Android Studio. Ниже приводится сводка представленных значений:



Судя по выборочным данным, Финни всегда предпочитает «Пиццу», а не «Курицу с рисом».


Добавление функциональности еды в Android Studio


После настройки исходного объекта и данных я использовал свое приложение IntelliJ IDEA, чтобы впервые открыть проект ./finnys-foods-android.


Для простоты исходный код моего приложения для Android будет находиться в файле ./android/MainActivity.java. Разработчики функций, создающие бизнес-приложения, должны учитывать принципы проектирования своих приложений для Android. Статья «Организация исходных файлов» команды CodePath предоставляет отличную информацию по этой теме.


Файл `MainActivity.java  уже содержит достаточно информации для подключения к Salesforce и упрощения работы над ним. Сначала я представил статическую строку SOQL для размещения простого запроса на доступ к объекту Meal__c:


```javascript


private static final String SOQL = "SELECT Name, Rating__c FROM Meal__c ORDER BY Name ASC";


Вместо нажатия кнопки для просмотра данных в приложении я обновил метод onResume(RestClient client) для вызова метода sendRequest() для запроса данных из Salesforce:


```javascript


@Override


public void onResume (клиент RestClient) {


этот.клиент = клиент;


пытаться {


послать запрос();


} поймать (UnsupportedEncodingException e) {


Toast.makeText(MainActivity.this,


MainActivity.this.getString(R.string.sf__generic_error,


e.toString()), Toast.LENGTH_LONG).show();


// Показать все


findViewById(R.id.root).setVisibility(View.VISIBLE);


Я обновил метод sendRequest(), чтобы не только получать данные из Salesforce, но и предоставлять визуальное представление рейтинга для каждого элемента:


```javascript


private void sendRequest() выдает UnsupportedEncodingException {


RestRequest restRequest = RestRequest.getRequestForQuery(


ApiVersionStrings.getVersionNumber(this), SOQL);


client.sendAsync (restRequest, новый AsyncRequestCallback () {


@Override


public void onSuccess (запрос RestRequest, окончательный результат RestResponse) {


результат.consumeQuietly(); // использовать перед возвратом в основной поток


runOnUiThread(() -> {


пытаться {


списокАдаптер.очистить();


Записи JSONArray = result.asJSONObject().getJSONArray("records");


for (int i = 0; i < records.length(); i++) {


listAdapter.add(records.getJSONObject(i).getString("Имя") + " "


  • getRating(records.getJSONObject(i).getInt("Rating__c")));

} поймать (Исключение e) {


при ошибке (е);


@Override


public void onError (окончательное исключение) {


runOnUiThread(() -> Toast.makeText(MainActivity.this,


MainActivity.this.getString(


R.string.sf__generic_error, exception.toString()),


Тост.LENGTH_LONG).show());


частная строка getRating (целый рейтинг) {


переключатель (рейтинг) {


случай 5:


вернуть " * * *";


случай 4:


вернуть " * *";


случай 3:


вернуть " * ";


случай 2:


вернуть " ";


По умолчанию:


вернуть "*";


Для простоты я решил показать пятизвездочный рейтинг с помощью символа звездочки. Таким образом, элемент с пятью звездами появится, как показано ниже:


Пицца * * * * *


Я добавил проблему в свой репозиторий GitLab, чтобы заменить звездочки значками со звездочками, такими как предоставленные Font Awesome, чтобы пустые звездочки отображались, когда рейтинг меньше пяти.


Представляем пользовательское текстовое представление


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


В папке ./app/res/layout я создал новый файл XML с именем custom_text_vew.xml и включил следующую информацию:


```javascript



<TextView xmlns:android="http://schemas.android.com/apk/res/android"


android:id="@android:id/text1"


android:fontFamily="без засечек"


Android: paddingTop = "10dip"


Android: paddingBottom = "10dip"


Android: paddingLeft="1dip"


Android: layout_width = "fill_parent"


android:layout_height="wrap_content"


android:textSize="9pt" >


Я смог настроить шрифт и информацию о размещении в соответствии со своими ожиданиями.


Имея XML, все, что мне нужно было сделать, это сослаться на пользовательское текстовое представление со следующим обновлением:


```javascript


listAdapter = новый ArrayAdapter<>(этот, R.layout.custom_text_view, новый ArrayList<>());


Окончательная очистка и стилизация


Поскольку я хотел, чтобы мое приложение соответствовало версии React Native, я внес следующие изменения в файл ./app/res/layout/header.xml :


```javascript



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"


Android: layout_width = "match_parent"


андроид:layout_height="100dp"


Android: layout_marginTop = "5pt"


Android: layout_marginBottom = "0pt"


андроид: заполнение = "3dp" >


<текстовый вид


android:id="@+id/text_title"


Android: layout_width = "wrap_content"


android:layout_height="wrap_content"


андроид: layout_centerVertical = "истина"


андроид:текст="@строка/имя_приложения"


андроид: textSize = "12pt"


android:fontFamily="без засечек"


андроид: textFontWeight = "600"


Android: layout_marginLeft = "3dp"


Android: paddingBottom = "0pt"


андроид: paddingLeft="7pt"



<Вид


android:layout_below="@id/text_title"


Android: layout_width = "match_parent"


андроид: layout_height = "2dp"


Android: layout_marginTop = "5pt"


android:background="@android:color/darker_gray" >



Наконец, я просмотрел файл ./finnysfoods/android/MainActivity.java и удалил все неиспользуемые методы в результате обновления файла header.xml. Android Studio, как и IntelliJ IDEA, отлично подходит для изменения цвета имен неиспользуемых методов, которые можно удалить, не влияя на функциональность приложения во время выполнения.


Finny’s Foods в действии


Используя Android Studio, я использовал пункт меню «Выполнить» и выбрал параметр Запустить «приложение» , который также соответствует сочетанию клавиш Shift-F10 .


При первом использовании будет автоматически перенаправлено на экран входа в систему Salesforce, где я использовал тот же адрес электронной почты и пароль для доступа к своей организации разработчиков. После входа в систему появилось приложение Finny’s Foods, включая пятизвездочное значение рейтинга для каждого элемента.



За считанные минуты мы смогли создать приложение для Android с помощью Android Studio и Salesforce Mobile SDK.


Заключение


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


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


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


- Дж. Вестер


Salesforce Mobile SDK, безусловно, соответствует моему личному заявлению о миссии, которое принесет пользу любой функциональной группе, которой требуется функциональность Salesforce как часть пользовательских мобильных приложений, работающих на устройствах Android. Разработчикам программного обеспечения в этой области разработки обязательно следует рассмотреть возможность добавления Salesforce Mobile SDK в качестве зависимости от проекта.


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


https://gitlab.com/johnjvester/finnys-foods-android


В заключительной статье серии я планирую использовать Salesforce Mobile SDK с xCode для создания собственного приложения для устройств iOS.


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


Также опубликовано [Здесь] (https://dzone.com/articles/exploring-the-salesforce-mobile-sdk-using-android)



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