Разделение данных на устройства Android/Iphone в веб-приложении?

Итак, я работаю над архитектурой базы данных веб-приложения, которое также разработало бы приложения для Android и iphone.

И для этого я хочу создать имя столбца device_id в MySQL database , чтобы отслеживать, использует ли пользователь приложение через веб-приложение или < strong> android-app или iphone-app .

Ниже приведены несколько функциональных пунктов:

Создание/Регистрация

  • Может быть выполнено с помощью приложения web-app/android-app/iphone-app.

Вход

  • Не имеет значения, где было создано пользовательское создание, Пользователь может войти в систему со всех сторон на основе центральной базы данных в Интернете (используя веб-службу входа).

Проблемная область

У вас нет никаких фактов, но некоторые из моих технических специалистов сообщили, что:

Iphone and Android those would provide a UDID and ANDROID_ID earlier are not going to do so in the future releases.

Теперь,

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

В некоторых случаях может быть тот же пользователь, который также использует приложение с различных устройств и веб-сайтов , чтобы данные синхронизировались на устройстве и сети.

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

---Редактировать---

В случае заводского сброса и укороченного устройства убедитесь, что устройство не будет   вернуть уникальный идентификатор, а также различные фирмы-разработчики   работая над настройкой Android и, следовательно, это не гарантия для   уникальный идентификатор устройства. Итак, как я могу получить лучшее решение?   логика в конце и в Интернете.

1
nl ja de
@jlordo Очевидно, что он может работать, но снова, поскольку я сказал, что это не проблема, но я хочу отслеживать, с какого устройства пользователь регистрируется и синхронизируется только с этим конкретным устройством. И как это гарантирует, что если я выполнил синхронизацию с одного устройства, а не другого.
добавлено автор Prateek, источник
@jlordo Позже предположим, что я хочу создать отчет о том, сколько устройств используется человеком для использования того же приложения, как я могу это сделать?
добавлено автор Prateek, источник
Я не уверен, но ответ ниже говорит об этом. Вы говорите о том же.
добавлено автор Prateek, источник
добавлено автор Prateek, источник
Использует ли пользователь логин (сеть) с использованием комбинации имени пользователя и пароля? Если да, не можете ли вы также использовать это на мобильных устройствах?
добавлено автор jlordo, источник
Я прочитал, что он будет синхронизироваться после нажатия кнопки. Таким образом, после нажатия кнопки на вашем устройстве будет создано подключение к вашему серверу, синхронизация и закрытие этого соединения. Таким образом, он будет синхронизирован только с этим устройством.
добавлено автор jlordo, источник
Правильно ли вы решаете проблему? и Вы решаете правильную проблему? - это два разных вопроса;)
добавлено автор jlordo, источник
Если важно знать, что это одно и то же устройство, даже после мигания разных ромов, я не знаю, возможно ли это вообще. Считаете ли вы использование MAC-адресов устройств? Он переживает мигание разных ромов.
добавлено автор jlordo, источник
Что-то вроде этого, но я думаю, что ответ ниже будет генерировать разные идентификаторы для одного и того же устройства с разными ромами.
добавлено автор jlordo, источник

2 ответы

Угадав, что вы закончили процесс синхронизации (сообщение @Nishant B), теперь для уникального идентификатора здесь приведен фрагмент кода, который работает почти для всех устройств Android (Tab + Mobile).

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

TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId();//Requires READ_PHONE_STATE

String m_szDevIDShort = "35" + //we make this look like a valid IMEI
Build.BOARD.length()%10+ Build.BRAND.length()%10 +
Build.CPU_ABI.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 ; //13 digits


WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);

BluetoothAdapter m_BluetoothAdapter = null;//Local Bluetooth adapter
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();
String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();


String m_szLongID = m_szImei + m_szDevIDShort + m_szWLANMAC + m_szBTMAC;
// compute md5
MessageDigest m = null;
try {
     m = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}

m.update(m_szLongID.getBytes(),0,m_szLongID.length());
// get md5 bytes
byte p_md5Data[] = m.digest();
// create a hex string
String m_szUniqueID = new String();

for (int i=0;i

здесь мы приняли IMEI, подробную информацию о производителе, адрес Wifi и адрес Bluetooth (не принимая ANDROID_ID как его изменение при сбросе настроек). с комбинацией этого ключа можно сгенерировать уникальный ключ ( m_szUniqueID ) с помощью MD5.

Я уверен, что с помощью этого выше вы можете генерировать уникальный ключ каждый раз.

Хорошие моменты:

  • Он не меняется на последовательном поколении на одном устройстве, что означает, что одно устройство будет иметь только один идентификатор и, следовательно, уникальный.
  • Даже работа с незарегистрированным устройством, то есть устройством без номеров IMEI.
  • также работает с планшетами.
4
добавлено

Вы находитесь на правильном пути для процесса синхронизации.

Устройство UDID (для iPhone) и Android_ID (для Android) используется только для Push Notification.

Вы можете достичь процесса синхронизации без этого.

Для этого вам нужно выполнить следующие шаги:

1) Когда приложение открывается в первый раз на устройстве (iPhone/Android), то на сервере отправляется пустая ("") дата. Таким образом, он предоставит вам все данные.

2) Храните все данные в локальной базе данных для использования в автономном режиме. А также локально хранить дату сервера.

3) Теперь, когда пользователь откроет приложение в следующий раз, затем передайте ранее сохраненные данные на сервере, и он предоставит только последние добавленные/обновленные данные.

4) Внесите необходимые изменения в локальную базу данных.

5) This way, you will have same data in web and both apps (iPhone & Android).

6) Когда пользователь вносит изменения в локальные данные, тогда установите его бит «TRUE» в локальной базе данных. Итак, когда следующая синхронизация выполняется, проверьте бит SET и загрузите все данные на сервер.

7) Таким образом, все данные будут обновлены на всех веб-сайтах, iphone и Android.

Надеюсь, у тебя есть идея.

Счастливое кодирование.

Ура!

2
добавлено
Я понимаю идею синхронизации, но я не получил трюк о пустой дате, которая должна быть отправлена ​​на сервер в первый раз. Также выполняется алгоритм для синхронизации, но то, что я просто испортил, - это уникальная проблема с идентификатором. Еще одно сомнение было бы неплохо сказать, что ANDROID_ID и UDID будут устаревшими.
добавлено автор Prateek, источник
прочитайте мой отредактированный комментарий.
добавлено автор Prateek, источник
@jlordo Если кто-то использует приложение Android ежедневно и не синхронизировал приложение с Интернетом, то, если он переключится на iOS, у него будет новая база данных, загруженная из Интернета, поскольку веб-сайт не знает состояния устройства и активности Android. Но в другом случае, когда пользователь синхронизировал приложение Android с веб-сайтом, и через несколько месяцев он запускается в iOS, а затем при первом входе в систему из приложения iOS соответствующие файлы с конкретными изменениями будут загружены и заполнены на устройстве iOS.
добавлено автор Prateek, источник
@pKs: Как вы обрабатываете синхронизацию в следующем сценарии: кто-то использует приложение на Android (ежедневно), а затем (после нескольких месяцев) переключается на iOS. Как выполняется первая синхронизация с устройством iOS?
добавлено автор jlordo, источник
Чистая дата означает: вы синхронизируете данные в первый раз. Поэтому, если вы пройдете «пустую» дату, тогда сервер вернет все данные вместе с датой сервера. Теперь сохраните эту дату сервера локально. И когда вы синхронизируете второй раз или дальше, затем передайте ранее сохраненную дату сервера, поэтому сервер вернет обновленные данные после этой даты сервера. Понял.
добавлено автор Nishant B, источник
Не достать тебя.
добавлено автор Nishant B, источник
@pKs: отлично. Надеюсь, Йлордо получил ответ.
добавлено автор Nishant B, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Разработка СУБД
Разработка СУБД
143 участник(ов)

Android Rus
Android Rus
68 участник(ов)