Есть приложение. Суть заключается в том, чтобы работодатель мог видеть своих сотрудников на карте и отправлять на заявку ближайшего. Я создал приложение, которое отсылает геометку, сделал Alamofire запрос на отправку на сервер. Пока приложение запущено, данные отправляются верно, но при свернутом оно уже не отправляет (при этом отслеживает в фоне, но опять же не отправляет)
ContentView.swift:
Код
import SwiftUI
import Combine
import Alamofire
struct ContentView: View {
@StateObject var deviceLocationService = DeviceLocationService.shared
@State var tokens: Set<AnyCancellable> = []
@State var coordinates: (lat: Double, lon: Double) = (1,1)
var body: some View {
VStack{
Text("Latitude: \(coordinates.lat)")
.font(.largeTitle)
Text("Longitude: \(coordinates.lon)")
.font(.largeTitle)
}
.onAppear{
observeCoordinateUpdates()
observeLocationAccessDenied()
deviceLocationService.requestLocationUpdates()
}
}
func observeCoordinateUpdates(){
deviceLocationService.coordinatesPublisher
.receive(on: DispatchQueue.main)
.sink { completion in
if case .failure(let error) = completion {
print(error)
}
} receiveValue: { coordinates in
self.coordinates = (coordinates.latitude, coordinates.longitude)
sendGeo()
}
.store(in: &tokens)
}
func observeLocationAccessDenied(){
deviceLocationService.deniedLocationAccessPublisher
.receive(on: DispatchQueue.main)
.sink{
print("Show alert")
}
.store(in: &tokens)
}
func sendGeo(){
let params = ["lat" : coordinates.lat, "lon": coordinates.lon]
AF.request("https://sup.api.lyncore.net:1494/location",
method: .post,
parameters: params)
.responseDecodable(of: baseResponse<String>.self){response in
if response.response?.statusCode == 200 {
print("good")
}
else {
print("bad")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}