Получение доступа к железу устройства из Битрикс мобильное приложение

Просмотров: 7461

Документация к мобильному приложению 1С-Битрикс очень куцая. В основном описывает функционал добавляемый BXMobileApp. Хотя, там вскользь и упомянута работа с железном устройства. Явно не хватает примеров реализации данной возможности. Восполняю сей пробел.

Внимание: 1С-Битрикс больше не распостраняет и не поддерживает модуль "Мобильное приложение". Заметка оставлена для истории.
Что бы сделать мобильное приложение для сайта используйте Apache Cordova.
Видеоурок, приложение на Apache Cordova

На самом деле, это Cordova(PhoneGap).

На самом деле, под капотом Битрикс: мобильное приложение обычный PhoneGap, хотя и немного на стероидах. Реализующий некоторые не стандартные для PhoneGap фичи (модуль CMobile)

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

Доступ к камере и медиабиблиотеке устройства.

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

Скрипт обработчик

    var pictureSource;
        var destinationType;
        document.addEventListener("deviceready",onDeviceReady,false);
        function onDeviceReady() {
            pictureSource=navigator.camera.PictureSourceType;
            destinationType=navigator.camera.DestinationType;
        }
        function onPhotoDataSuccess(imageData) {
            var smallImage = document.getElementById('smallImage');
            smallImage.style.display = 'block';
            smallImage.src = "data:image/jpeg;base64," + imageData;
        }
        function onPhotoURISuccess(imageURI) {
            var largeImage = document.getElementById('largeImage');
            largeImage.style.display = 'block';
            largeImage.src = imageURI;
        }
        function capturePhoto() {
            navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
                destinationType: destinationType.DATA_URL });
        }   
        function getPhoto(source) {
            navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
                destinationType: destinationType.FILE_URI,
                sourceType: source });
        }
        function onFail(message) {
            alert('Failed because: ' + message);
        }

Кнопки вызова

    <button onclick="capturePhoto();">Сфотографировать</button> <br>
    <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">Загрузить из биботеки</button><br>
    <button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">Загрузить из альбома</button><br>
    <img style="display:none;width:60px;height:60px;" id="smallImage" src="" />
    <img style="display:none;" id="largeImage" src="" />

Получить данные геолокации с GPS модуля

Выведет на экран полные данные о местоположении пользователя. При чем, это не определение по IP или сотовым вышкам. Это именно данные с GPS модуля

Скрипт обработчик

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
    var element = document.getElementById('geolocation');
    element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br>' +
        'Longitude: ' + position.coords.longitude + '<br>' + '<br>' +
        'Altitude: ' + position.coords.altitude + '<br>' + '<br>' +
        'Accuracy: ' + position.coords.accuracy + '<br>' + '<br>' +
        'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br>' +
        'Heading: ' + position.coords.heading + '<br>' +
        'Speed: ' + position.coords.speed + '<br>' + '<br>' +
        'Timestamp: ' + position.timestamp + '<br>';
   }
   function onError(error) {
        alert(error.code + ' ' + error.message);
    }

Вывод информации

<p id="geolocation">Получение данных с GPS...</p>

Информация об устройстве

Можно получить всю информацию об устройстве. Модель, уникальный индетификатор, операционную систему и.т.д.

document.addEventListener("deviceready", onDeviceReady, false);
        function onDeviceReady() {
            var element = document.getElementById('device');
        element.innerHTML = 'Операционная система' + device.platform + '<br>'
        'Модель телефона' + device.model + '<br>'
'UUID телефона' + device.uuid + '<br>';
}

Вывод

<p id="device">Получение данных об устройстве...</p>

В общем-то, возможностей достаточно много. От получения и создания контактов в телефонной книге, до загрузки и сохранения файлов с/на устройство.

У меня, Вы можете заказать разработку и публикацию мобильного приложения для магазина, портала, информационного ресурса.

Дмитрий Кривой 03.12.2020
Прошу прощения, Михаил. На основе одной статей на тему разработки мобильного приложения Битрикс (и с учётом этой) хотелось бы уточнить - действительно ли функциональность уже встроенных библиотек никак не расширить?
Например, для расширения функциональности Cordova используются плагины, которые можно, конечно же, установить. Но а у Битрикса что, совсем никак?
Допустим, есть плагин, который позволяет включить/отключить вспышку на телефоне. И, получается, в рамках Битрикса я могу попрощаться с этой нужной для некоторых случаев функцией?
Буду очень благодарен за ответ.
Михаил Базаров 04.12.2020
Цитата
Дмитрий Кривой написал:
Прошу прощения, Михаил. На основе одной статей на тему разработки мобильного приложения Битрикс (и с учётом этой) хотелось бы уточнить - действительно ли функциональность уже встроенных библиотек никак не расширить?
Например, для расширения функциональности Cordova используются плагины, которые можно, конечно же, установить. Но а у Битрикса что, совсем никак?
Допустим, есть плагин, который позволяет включить/отключить вспышку на телефоне. И, получается, в рамках Битрикса я могу попрощаться с этой нужной для некоторых случаев функцией?
Буду очень благодарен за ответ.
Встроенных да, ни как. Именно по этому, давно перешел на Cordova - имею ввиду, не пользуюсь битриксовым модулем, делаю все с нуля на чистой Cordova

Блог-note: заметки разработчика

Подключение SSL на Битрикс виртуальная машина

С первого января 2017 года, наличие безопасного соединения HTTPS становится практически обязательным. Ваши сайты будут з...

Создание PWA для сайта на 1С-Битрикс

Технология PWA позволяет создать приложение для любого сайта. Не обязательно работающего на 1С-Битрикс, данная заметка ...

Если предложение SKU в корзине, поменять кнопку добавления на "В корзине"

Данная заметка является дополнением к ранее опубликованной: Если товар в корзине, поменять значение input на "В корзине"...

Создание агента в 1С-Битрикс, на реальном примере

Задача: Каждый час нужно обновлять свойство элементов/товаров с типом строка "В наличии", вписывать в него либ...

Переключатель валюты в каталоге 1С-Битрикс

Задача: Дать пользователю возможность самостоятельно выбирать валюту, в которой он хоxет видеть цены, в разделе каталога...

Вывести свойство привязка к Яндекс Картам в Битрикс

Часто бывает нужно вывести свойство привязка к Яндекс карте в детальном описании элемента. Например в детальной новости ...

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

Задача: после того как заказ, в интернет-магазине, перешел в статус "Выполнен" начислить пользователю 5% от стоимости за...

Свойство: привязка к Яндекс:Картам - вывести из нескольких элементов на одну карту

Предположим, что у вас есть инфоблок со свойством "Привязка к яндекс картам". В этом инфоблоке некоторое количество элем...

Основные функции вывода в шаблонах Битрикс

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