Как обновить текущий лонг пользователя на сервере API? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть проект, в котором мне нужно обновить координаты текущего местоположения пользователя на сервере API.Как мне этого добиться?Является ли непрерывный вызов API хорошей идеей (я думаю, что нет)?

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

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018
**Step 1 :- Get latitude and long. of the user first.**

Reference URL:- https://stackoverflow.com/questions/12736086/how-to-get-location-latitude-longitude-value-in-variable-on-ios

**Step 2:- Define following variables globally.**

    var timer:Timer? 

    var sourceLatitude = CLLocationDegrees()

    var sourceLongitude = CLLocationDegrees()

**Step 3:- Setup timer for continuous update as below.**

override func viewDidLoad() 
{
   super.viewDidLoad()

   timer = Timer.scheduledTimer(timeInterval: 15, target: self, selector: #selector(self.updateDriverLoction), userInfo: nil, repeats: true)
    }


**Step 4:- call appropriate method for sending and updating lat. long. to the server using any of networking API.(In my case I have used Alamofire)**

 // must be internal or public.

    @objc func updateDriverLoction() {

        if Reachability.isConnectedToNetwork() {

                let param1:[String:String] = [
                    "latitude" : "\(sourceLatitude)",
                    "longitude" : "\(sourceLongitude)"
                ]
                ServerClass.sharedInstance.putRequestWithUrlParameters(param1, path: BASE_CAB_URL + PROJECT_URL.UPDATE_DRIVER_LOCATION_API, successBlock: { (json) in
                    print(json)
                    let success = json["success"].stringValue
                    if success  == "true"  {
                    }
                    else {
                    }
                }, errorBlock: { (NSError) in
                    //                UIAlertController.showInfoAlertWithTitle("Alert", message:  kUnexpectedErrorAlertString, buttonTitle: "Okay")
                })
            }
        }
        else{
            UIAlertController.showInfoAlertWithTitle("Alert", message: "Please Check internet connection", buttonTitle: "Okay")
        }

}
0 голосов
/ 15 декабря 2018

Может быть, вы можете реализовать timer и сделать запрос POST, периодически отправляя свой long long.

class ViewController: UIViewController {
    var timer: Timer!

    override func viewDidLoad() {
        timer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(makeRequest), userInfo: nil, repeats: true)

    }


    @objc func makeRequest() {
        // make your post request here.
    }        

 }

Например, приведенный выше таймер будет вызывать метод makeRequest каждые 10 секунд.

Если вы не очень много знаете о сети, проведите исследование по следующим темам:

Swift Networking Layer, Alamofire, URLSession

...