Мобильная платформа. Уникальный идентификатор устройства Android при помощи внешней компоненты. Не IMEI

28.08.21

Разработка - Разработка внешних компонент

Идентифицируем устройства, на которых установлены копии нашего приложения.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Package.zip
.zip 3,10Mb
17
17 Скачать (3 SM) Купить за 2 450 руб.

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

В классическом приложении для андроид результатом работы этой процедуры будет IMEI. С одной оговоркой:

В файле манифеста сначала нужно задекларировать потребность в данных телефона. Пользователь будет уведомлен при установке приложения о том что оно собирается собирать такую информацию. И может отказать приложению в этом. 

В самом простом случае для получения IMEI в мобильной платформе нужно написать нативное приложение с соответствующим функционалом, проинсталлировать его на устройство пользователя и запускать его в нужный момент из 1С с возвратом результата работы обратно. Более изящный способ - внешняя компонента для реализации такой, казалось бы, насущной потребности, не столь проста в исполнении по причине того факта, что она как то должна получить разрешение на сами возможности работы с телефонией. Манифест нативного мобильного приложения, встраиваемого во внешнюю компоненту не берётся в расчёт мобильной платформой. Не знаю по каким причинам, да это уже и не важно с приходом Android 10.

Если верить официальной документации от Google по разработке приложений для Android, начиная с 10 версии операционной системы разрешение типа "READ_PHONE_STATE" имеют право запрашивать только системные приложения. И все имеющиеся наработки в данном направлении становятся никому не нужны. Даже я сам на своём собственном телефоне в моих личных целях собственноручно написанным кодом IMEI больше никогда не получу. По крайней мере в Android 10 гарантированно нет. 

В результате представляю внешнюю компоненту, которая возвращает в 1С не IMEI, но всё же очень длинный номер, который так же уникален, несменяем и легко доступен. Использую из него первые 15 знаков, и пока этого было достаточно для добрых дел.

Package.zip необходимо загрузить в макет внешней компоненты.

Использование в коде:

Procedure Demo ()
			
	AttachAddIn ( "CommonTemplate.phone_id", "Sample", AddInType.Native );
	Lib  =  New ( "AddIn.Sample.SimonsID" );	

	//Кириллица
	uid = Lib.ПолучитьАйДи ();

	//Латиница
	uid = Lib.GetID ();
	
EndProcedure

Работа компоненты проверена на платформе 8.3.15.59.

И на некоторых телефонах от Samsung, Xiaomi, Motorola, Huawei. 

Тестирование на ТСД от SUNMI на базе Android 9, к сожалению выявило невозможность применения данной компоненты. В итоге, малоизвестные китайские версии железа ( а может андроида на этом железе ) могут не давать никаких гарантий.

 

Компонента для шифрования строк

IMEI Android Мобильная платформа.

См. также

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38463    109    163    

203

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    97605    591    189    

323

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    59490    193    103    

173

Логистика, склад и ТМЦ Сканер штрих-кода Терминал сбора данных Мобильная разработка Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

3450 руб.

28.04.2023    9584    15    0    

9

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    53753    9    69    

46

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    46880    122    66    

66
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 215 25.06.20 23:39 Сейчас в теме
Проблема не в READ_PHONE_STATE, как раз разрешение работает,рефлексия тоже, но только на уровне системы получить IMEI уже нельзя
Caused by: java.lang.SecurityException: getImeiForSlot: The user 10159 does not meet the requirements to access device identifiers.
2. WKBAPKA 215 25.06.20 23:42 Сейчас в теме
Я использовал вот такой вот код

 public static String getDeviceIDAndroidQ() {
        String uniquePseudoID = "35" +
                Build.BOARD.length() % 10 +
                Build.BRAND.length() % 10 +
                Build.DEVICE.length() % 10 +
                Build.DISPLAY.length() % 10 +
                Build.HOST.length() % 10 +
                Build.ID.length() % 10 +
                Build.MANUFACTURER.length() % 10 +
                Build.MODEL.length() % 10 +
                Build.PRODUCT.length() % 10 +
                Build.TAGS.length() % 10 +
                Build.TYPE.length() % 10 +
                Build.USER.length() % 10;
        String serial = Build.getRadioVersion();
        String uuid = new UUID(uniquePseudoID.hashCode(), serial.hashCode()).toString();
        return uuid;
    }
Показать


но как практика показала, результат меняется,иногда
3. kinan 34 26.06.20 10:50 Сейчас в теме
До читателя я пытаюсь донести тот факт, что проблема как раз в получении диалогового окна запрашивающего разрешения от пользователя. Не важно какое разрешение. Важно что технология разработки компонент для мобильной платформы полностью игнорирует такую необходимость. И разработать компоненту возвращающую IMEI без энциклопедических знаний JNI не получится даже при условии, что она будет использоваться в Android более ранних версий.
4. Umix 132 05.09.20 09:49 Сейчас в теме
Не совсем понятно.
Перелопатил много разной информации, но уникальный код, подобный IMEI,S/N без разрешения "простому разработчику" так и удалось получить.
В итоге, либо получаемый код не уникален, либо изменяется при переустановки приложения, либо при сбросе к заводским настройкам.

Результат вашего кода действительно уникален как IMEI?
5. kinan 34 05.09.20 15:25 Сейчас в теме
(4)Уникален. Не изменяется. Проверено на Huawei Nexus 6P / API 27. На всех остальных телефонах сброс к заводским настройкам делать не буду, может быть и изменяется где-то... Уникальность результата уникальна в рамках пакета. То есть, для приложения "А" ID будет "x", для приложения "B" ID уже "y". Чтоб его сменить, надо сменить "Полный идентификатор приложения для Android" в сборщике.
6. Umix 132 05.09.20 19:35 Сейчас в теме
(5) интересно, т.к. к чему только не привязывался уникальность получалась неуникальной.
Опять же не пойму это ID приложения, тогда он одинаков для всех устройств, а нужно, чтобы уникальность каждого устройства.
8. kinan 34 05.09.20 21:33 Сейчас в теме
(6)В описании я описал. Повторюсь. Проблема была у меня, важная. Для себя я её решил как нужно мне. Если у кого такая же, решение вот оно.
7. Umix 132 05.09.20 19:51 Сейчас в теме
Если же вы привязывайтесь к рекламному ID (Android ID (он же SSAID) ), то это тоже не выход, его можно сбросить.
9. kinan 34 05.09.20 21:34 Сейчас в теме
10. ratinc 06.11.20 22:52 Сейчас в теме
Можно ли немного больше раскрыть тему?
Архив скачал, пытаюсь подключить компоненту
ПодключитьВнешнююКомпоненту( "ОбщиеМакеты.phone_id", "Sample", ТипВнешнейКомпоненты.Native)

Получаю - ложь.
В макете именно zip архив.
Платформа 8.3.16.142
11. kinan 34 07.11.20 13:23 Сейчас в теме
(10) мне трудно судить о причинах ошибки что у Вас возникает. Сначала делается макет. Правый клик по разделу "Общие макеты" - "Добавить". В открывшемся окне в разделе "Выберите тип макета" выбирается пункт "Внешняя компонента". "Готово". "Загрузить из файла". Выбирается zip-архив с компонентой.

Использовать после этого в коде:

AttachAddIn ( "CommonTemplate.phone_id", "Sample", AddInType.Native );
Lib = New ( "AddIn.Sample.SimonsID" );

uid = Lib.GetID ();
12. ratinc 07.11.20 14:22 Сейчас в теме
(11) Я понимаю что вероятно проблема не в вашей компоненте.
Но, не получается её подключить.
Вроде все по феншую
https://drive.google.com/file/d/1Cumg8STmHGAKyfJH5tP2WKYMoAHPOY3j/view?usp=sharing
В отладчике при подключении все равно выдает ложь.
И макет правильный и код подключения вроде тоже )))
Однако процесс не идет
13. kinan 34 08.11.20 14:19 Сейчас в теме
(12)В процессе разработки компоненты её постоянно нужно заново загружать в макет компоненты в тестовой конфигурации и проверять работу на телефоне. Так вот опытным путём установлено, что однажды попав в телефон, при первой загрузке базы в мобильной платформе, компонента не обновляется при обновлении конфигурации на сервере. Чтоб всё-таки загрузить обновлённую компоненту в телефон для теста я постоянно удаляю тестовую базу из телефона и загружаю её заново.

Я это к тому, что есть какой-то платформенный изъян в части обмена компонентой между сервером и телефоном. Расскажу как я делаю, чтоб быть на 100% уверенным что компонента на телефон всё же попала и я тестирую базу в которой она действительно есть:

Во-первых, после того как база опубликована на web-сервере (я это делаю через IIS) захожу в папку "C:/inetpub/wwwroot/" и в подпапках опубликованной базы проверяю наличие файлов компоненты с расширением ".apk" и ".so"

После этого запускаю программу "hfs". Она подменяет собой web-сервер. В её окно перетаскиваю папку публикации из "C:/inetpub/wwwroot/" и в телефоне в качестве пути к базе прописываю значение поля "open in browser".

И когда я открываю базу в телефоне, в hfs показывается текст с путями и названиями файлов которые были переданы в телефон. Я обращаю внимание на то были ли переданы с сервера файлы с расширением ".apk" и ".so"

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

Ссылка на скачивание hfs http://www.rejetto.com/hfs/?f=dl

И, тем не менее, работа компоненты проверена на платформе 8.3.15.59.
14. kinan 34 08.11.20 14:22 Сейчас в теме
(12)если не секрет, где Вы взяли эту компоненту?
15. ratinc 08.11.20 16:01 Сейчас в теме
(14) Скачал в этой публикации.
Но не с этого аккаунта. Коллега имеющий на балансе стартмани скачал по моей просьбе.
Это было 5 го ноября.
По поводу вашего предыдущего сообщения проверю. У меня правда апач, но там тоже можно посмотреть запрашивается ли файл с сервера
16. 1cspec 120 09.08.21 19:01 Сейчас в теме
Код ниже в 1С не тоже самое?
	
СистИнф = Новый СистемнаяИнформация;	
ИдентификаторКлиента = СистИнф.ИдентификаторКлиента;


Если переустановить приложение, то ИдентификаторКлиента будет другой.
Если делать через Вашу компоненту, и удалить и снова установить приложение, код будет старый?
17. kinan 34 09.08.21 19:30 Сейчас в теме
(16) будет старый. Возможно изменится при перепрошивке телефона или сбросе к заводским настройкам. Тут уже у кого как.
18. 1cspec 120 04.09.21 22:58 Сейчас в теме
Если на телефон ставить 32 битную версию, то работает. При публикации приложения в гугл, качается на телефон 64 битная версия и приложение падает при чтение драйвера
19. kinan 34 06.09.21 16:53 Сейчас в теме
Работа компоненты проверена на 8.3.15.59 в связке со сборщиком 2.0.10.55
В более ранних версиях сборщика существуют некоторые проблемы с ARM64.
20. Ninolen 24.01.23 14:52 Сейчас в теме
Компонента возвращает один и тот же номер на 3х разных аппаратах - 1 ТСД и два телефона разных марок. Что за развод?
21. kinan 34 24.01.23 18:58 Сейчас в теме
(20)Работа компоненты проверена на платформе 8.3.15.59.

И на некоторых телефонах от Samsung, Xiaomi, Motorola, Huawei.

Тестирование на ТСД от SUNMI на базе Android 9, к сожалению выявило невозможность применения данной компоненты. В итоге, малоизвестные китайские версии железа ( а может андроида на этом железе ) могут не давать никаких гарантий.

Со времён появления Android 10 все были довольны. Пожизненной гарантии тут не предполагалось.
22. kinan 34 13.03.23 17:30 Сейчас в теме
развод это когда разводят тут гнусные инсинуации те кто компоненту не скачивал.
Оставьте свое сообщение