Завдяки великій зацікавленності в розробці отого свого додатку, за минулі кілька днів маю неабиякий прогрес.
Опишу проблему, і її вирішення.
Пишу я цей додаток на react-native, котрий дозволяє написати один, універсальний код на js, котрий потім можна запускати на android та ios. Проблема тільки в тому, що react-native все ж таки не є нативний для пристроїв, і тому деякі фічі, як от GPS локація на ньому не зовсім доступні.
Мені треба було слідкувати за локацією користувача навіть тоді, коли сам додаток повністю закритий. Це стало можливим завдяки foreground service, але мені довелося писати нативний Java код. Цей код запускає сервіс, і в самому сервісі я отримую локацію.
Якщо сам додаток при цьому відкритий, або працює в фоні, то я можу передати цю локацію з Java коду до react-native коду, і там щось з нею робити. Але якщо додаток повністю закритий, то сторона react-native взагалі не працює, працює лише отой сервіс, відповідно, передавати локацію немає куди.
Я це вирішив через підписку на події закриття та відкриття додатку, і коли додаток закритий, то я не передаю локацію до react-native, а зберігаю її в локальний для сервісу масив, і як тільки додаток запускається - я передаю весь масив з локаціями до react-native, і там вже малюю шлях на мапі.
*************************
З подібною проблемою я зіштовхнувся при спробі передати дані на сервер. Їх можна передати http запитом в react-native, але ж я хочу, аби решта користувачів могли бачити поточну позицію один одного (з їхнього дозволу, звісно ж), тому позицію треба відправляти на сервер з самого сервісу, а не з react-native, і тому мені довелося писати ще один шматок коду на Java.
Цікавий та дивний факт - код працює.
*************************
Після цього я вирішив не зупинятись, та потестити додаток (але вже завтра), і для цього мені необхідний сервер, котрий доступний звідусіль, бо на локалці потестити не вийде ж. І за буквально кілька годин я створив акаунт на aws, та підняв безкоштовний інстанс ec2, залив на нього код, налаштував доступ з інтернету, і тепер в мене є все, шо мені треба, аби затестити той функціонал, що маю.
До речі. Я вирішив зберігати дані в mongodb не просто як рядок, або циферки, а саме як координати (там є така фіча), і тому можна переглядати локацію на мапі прямо з Mongodb Compass, і ще одне - в mongodb є фіча - пошук даних за локацією. Наприклад, знайти всіх користувачів в колі з радіусом 1км, і з таким то центром.
************************
Тепер думаю - як би це мені симулювати тисячу користувачів, котрі б їздили по місту, і відправляли дані на сервер. Хочу перевірити, чи самої Mongodb вистачить.
По суті, це мені треба відправляти тисячу запитів з якоюсь локацією, і при цьому робити запит на отримання інформації про позиції користувачів. Це mongodb треба буде тисячу раз обраховувати всіх користувачів в якомусь радіусі...