Архитектура облачной базы данных для приложения на основе местоположения - PullRequest
0 голосов
/ 29 мая 2019

В настоящее время я планирую свою базу данных для моего Android-приложения, основанного на местоположении (видение приложения для iOS появится в будущем).

Мне интересно, соответствует ли следующая структура моим потребностям. Краткое изложение того, что включает в себя мое приложение: поиск пользователя в радиусе 2 км (геозона) и отображение его профиля (аналогично сопоставлению с кем-то из Tinder).

Итак, я предполагаю, что каждый пользователь загружает свое LatLon местоположение в мою базу данных через API Google Maps - и Android запрашивает базу данных, чтобы найти пользователя в геозоне.

PS: Как лучше всего запрашивать пользователей в геозоне?

Моя предлагаемая база данных - Google Firestore со следующей настройкой документа:

users: {
    2394824972439 (facebook_id): {
      gender: "male"
      currentLat: 37.234234,
      currentLon: 157.192835,
      profileImg1: googlecloudstorage.com/url/to/img1.png,
      profileImg2: googlecloudstorage.com/url/to/img2.png,
      bio: "This is my bio",
      alreadyMatchedWith: [42304823423, 23423423432, 023948230]
  }
    7388824972439: {
      gender: "female"
      currentLat: 34.234234,
      currentLon: 157.132835,
      profileImg1: googlecloudstorage.com/url/to/img1.png,
      profileImg2: googlecloudstorage.com/url/to/img2.png,
      bio: "Another bio",
      alreadyMatchedWith: [82304823423, 33423423432, 923948230]
  }
}

Таким образом, запрос также будет гарантировать, что идентификатор Facebook другого пользователя (я использую Facebook для входа в систему) еще не сопоставлен. Если он не был сопоставлен, то база данных вернет документ этого пользователя и отобразит информацию о его профиле, а также изображения профиля из облака Google. место хранения.

Есть ли какие-либо красные флажки в этой настройке, о которых я должен беспокоиться - или какие-нибудь лучшие альтернативы?

1 Ответ

1 голос
/ 29 мая 2019

Поскольку вы не упомянули GeoFire и притворяетесь, что делаете запросы, связанные с гео, GeoFire, вероятно, является лучшей альтернативой,

GeoFire для Android / Java

https://github.com/firebase/geofire-java

// creates a new query around [37.7832, -122.4056] with a radius of 2.0 kilometers
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37.7832, -122.4056), 2.0);

В случае, если вам придется реализовать ту же функциональность для IOS:

GeoFire для Objective-C

https://github.com/firebase/geofire-objc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...