GeoFire с Swift

Я планирую использовать GeoFire для фильтрации моих данных о базе данных на основе местоположения. Не уверен, как начать с этим, потому что я только начал развиваться. У меня есть картинка, подпись и т. Д., Которые я создаю в одном классе:

    @IBAction func shareDidTap(_ sender: Any) {
            if let image = image, let caption = textView.text {
                let newMedia = Media(type: "image", caption: caption, createdBy: user, image: image)
                    newMedia.save(completion: { (error) in
                        if let error = error {
                            self.alert(title: "Oops!", message: error.localizedDescription, buttonTitle: "OK")
                        } else {
                            self.user.share(newMedia: newMedia)

в отдельном классе "Пользователь" (MVC) я сохраняю его в Firebase с

    func share(newMedia: Media) {
            DatabaseReference.users(uid: uid).reference().child("media").childByAutoId().setValue(newMedia.uid)
        }

Где я могу создать ссылку на GeoFire? Должен ли я использовать Core Location, чтобы получить свой Lat и Lon? Любая помощь будет оценена. Спасибо.

1 ответ

Добавление GeoFire

Установить с помощью стручковpod 'GeoFire', :git => 'https://github.com/firebase/geofire-objc.git'

Затем импортируйте в проект import GeoFire

Создайте ссылку на него, используя

let rootRef = Database.database().reference()
let geoRef = GeoFire(firebaseRef: rootRef.child("user_locations"))

Чтобы получить текущее местоположение пользователя, вы можете использовать Менеджер местоположений через какао: https://github.com/varshylmobile/LocationManager

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

пример:

geoFire!.setLocation(myLocation, forKey: userID) { (error) in
        if (error != nil) {
            debugPrint("An error occured: \(error)")
        } else {
            print("Saved location successfully!")
        }
    }

Затем вы запрашиваете базу данных местоположений, используя CircleQueryВы можете указать радиус, в котором вы хотите запрашивать базу данных в пределах определенного местоположения (пользовательского местоположения).

пример:

let query = geoRef.query(at: userLocation, withRadius: 1000)

query?.observe(.keyEntered, with: { key, location in
    guard let key = key else { return }
    print("Key: " + key + "entered the search radius.")
})

Я использовал действительно хороший учебник: https://www.youtube.com/watch?v=wr19iKENC-k&t=600s

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

Другие вопросы по тегам