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

28.08.21

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

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

Скачать файлы

Наименование Файл Версия Размер
Package.zip
.zip 3,10Mb
14
.zip 3,10Mb 14 Скачать

Я рассматриваю 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С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

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

2880 руб.

03.12.2018    54626    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

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

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

13200 9900 руб.

27.12.2021    33296    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

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

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

2000 руб.

22.04.2019    91948    512    186    

293

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент 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 и маркетинг Управленческий учет Платные (руб)

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

16800 руб.

30.05.2017    52110    34    69    

43

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

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

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

12950 руб.

30.05.2023    3388    2    0    

4

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

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

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26245    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

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

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

2400 руб.

04.05.2018    44979    117    64    

60
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 214 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 214 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 131 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 131 05.09.20 19:35 Сейчас в теме
(5) интересно, т.к. к чему только не привязывался уникальность получалась неуникальной.
Опять же не пойму это ID приложения, тогда он одинаков для всех устройств, а нужно, чтобы уникальность каждого устройства.
8. kinan 34 05.09.20 21:33 Сейчас в теме
(6)В описании я описал. Повторюсь. Проблема была у меня, важная. Для себя я её решил как нужно мне. Если у кого такая же, решение вот оно.
7. Umix 131 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 116 09.08.21 19:01 Сейчас в теме
Код ниже в 1С не тоже самое?
	
СистИнф = Новый СистемнаяИнформация;	
ИдентификаторКлиента = СистИнф.ИдентификаторКлиента;


Если переустановить приложение, то ИдентификаторКлиента будет другой.
Если делать через Вашу компоненту, и удалить и снова установить приложение, код будет старый?
17. kinan 34 09.08.21 19:30 Сейчас в теме
(16) будет старый. Возможно изменится при перепрошивке телефона или сбросе к заводским настройкам. Тут уже у кого как.
18. 1cspec 116 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 Сейчас в теме
развод это когда разводят тут гнусные инсинуации те кто компоненту не скачивал.
Оставьте свое сообщение