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

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

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

На самом деле, это 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>' +
'Altitude: ' + position.coords.altitude + '<br>' +
'Accuracy: ' + position.coords.accuracy + '<br>' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br>' +
'Heading: ' + position.coords.heading + '<br>' +
'Speed: ' + position.coords.speed + '<br>' +
'Timestamp: ' + position.timestamp + '<br>';
} function onError(error) { alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); }

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

<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>

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

Больше примеров в официальной документации Cordova тут

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