2015-11-19 2 views
0

Привет Я хочу, чтобы загрузить некоторые данные, используя Alamofire и NSTimerAlamofire запрос, когда приложение в фоновом режиме

Приложение отлично на переднем плане работы, таймер устанавливается для вызова GetEstado функции каждые 30 секунд, но когда приложение входит фон таймер паузы, и если мой сервер обновляет что-то он фактически не обновляется на приложение

Вот мой код

func GetEstado(){ 
    Alamofire.request(.POST, "https://myurl/getestado.php", parameters: ["id": id]) 
     .responseString { rta in 
      if let dataFromString = rta.result.value!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) { 
       let json = JSON(data: dataFromString) 
       for (key,subJson):(String, JSON) in json { 
        if(key=="e"){ 
         if(subJson.stringValue=="1"){ 
          self.Timer.invalidate() 
          print("ACTUALIZACION") 
          let notification = UILocalNotification() 
          notification.fireDate = NSDate(timeIntervalSinceNow: 5) 
          notification.alertBody = "UPDATED" 
          notification.soundName = UILocalNotificationDefaultSoundName 
          UIApplication.sharedApplication().scheduleLocalNotification(notification) 
          self.performSegueWithIdentifier("UPDATED", sender: self) 
         } 
         else{ 
          print("UPS") 
         } 
        } 
       } 
      } 
    } 
} 

Благодаря

+1

Вы не можете использовать NSTimer, когда ваше приложение находится в фоновом режиме, потому что исполнение приостановлено. Вы можете использовать фоновый выбор, но это будет выполняться только каждые несколько часов. Вы также можете использовать push-сообщения с вашего сервера. Опрос в том, как вы находитесь, очень неэффективен с точки зрения пропускной способности и мощности батареи. – Paulw11

ответ

0

Я думаю, что @ Paulw11 ответит на ваш вопрос в своем комментарии, вы не можете использовать NSTimer в фоновом режиме, у Apple есть известный список задач, которые можно создать в фоновом режиме, вы можете прочитать больше here.

Но пусть на мгновение подумает о том, чего вы пытаетесь достичь, предположим, что вы можете сделать это, используя NSTimer, тогда у вас есть приложение, в котором постоянно используется память и аккумулятор, чтобы ваше устройство обновлялось с вашего устройства. сервер, это не рекомендуется вообще.

Для этого Apple/Google представила уведомления Apple Push (Google: Android Push Notifications), чтобы сообщить, что сервер уведомляет приложение, когда он находится в фоновом режиме или неактивен в отношении любой задачи, запрограммированной на сервере, скажем, новый почта, новое сообщение в случае приложений обмена сообщений и т.д.

Затем варианта вы имеете воспользоваться услугой, предложенной Apple, вы можете прочитать в следующих документах:

Надеюсь, это поможет вам.

Смежные вопросы