2016-01-13 6 views
-1

мое приложение работает в фоновом режиме, и я хочу взять данные html с веб-сервера каждые 60 секунд. (с alamofire или nsurlconnection и т. д.), но я не смог найти пример кода, связанного с ним. Можно ли сделать что-то подобное. обновляется каждую минуту, которую я хочу сделать.Функция вызова ios в фоновом режиме

приложение, работающее в фоновом режиме, функция updateServer Я хочу назвать каждое 60-секундным

примечания: с фоном выборки methot не работают каждую минуту. FUNC приложения (приложение: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Пустота) эта функция не вызывая в фоновом режиме через 3 минуты

func updateServer() { 
    self.requesti = request(.POST, "http://www.myserver.com/deerer.aspx" 
     .response { request, response, data, error in 
      let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding) 

      ....... 

      let alis = scanned as! String 
      let satis = scanned as! String 
      self.addDataBase(alis, satis: satis) 
    } 
} 
func addDataBase(alis: String, satis: String) { 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let kur = NSEntityDescription.insertNewObjectForEntityForName("Kur", inManagedObjectContext: appDelegate.managedObjectContext) as! Entity 

    kur.alis = alis 
    kur.satis = satis 
    kur.tarih = NSDate() 

    appDelegate.saveContext() 

    let notification = UILocalNotification() 
    notification.alertBody = "testtesttest" 
    notification.fireDate = NSDate(timeIntervalSinceNow: 1) 
    notification.soundName = UILocalNotificationDefaultSoundName 
    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
} 
+1

Возможный дубликат [AlamoFire Скачать в фоновой сессии] (http://stackoverflow.com/questions/30134652/alamofire-download-in-background-session) – fishinear

+0

эта функция не вызывая в фоновом режиме через 3 минуты – user2512558

ответ

0

Там хороший учебник по выполнению задач в фоновом режиме http://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial

и вот фрагмент, который я только что проверил, который, кажется, работает хорошо. Этот только пытается загрузить веб-страницу и отобразить html в ярлыке, но он должен показать важные бит!

class ViewController: UIViewController 
{ 
    var bDataLoaded : Bool = false 
    var bTimerRunning : Bool = false 

    var backgroundTask: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid 
    var updateTimer = NSTimer() 

    @IBOutlet weak var lblLabel1: UILabel! 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 

    @IBAction func cmdButton(sender: AnyObject) 
    { 
     tryToDownload() 
    } 

    func tryToDownload() 
    { 
     if bDataLoaded 
     { 
      return 
     } 

     var html: NSString = "" 
     do 
     { 
      html = try NSString(contentsOfURL: NSURL(string: "http://www.myserver.com/deerer.aspx")!, encoding: NSUTF8StringEncoding) 
     } 
     catch _ 
     { 
      print("Still nothing - try again") 
      updateTimer = NSTimer.scheduledTimerWithTimeInterval(60, target: self, 
       selector: "tryToDownload", userInfo: nil, repeats: true) 
      registerBackgroundTask() 

      bTimerRunning = true 
     } 

     if html != "" 
     { 
      lblLabel1.text = html as String 
      bDataLoaded = true 
      endBackgroundTask() 
     } 
    } 

    func registerBackgroundTask() { 
    backgroundTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler { 
     [unowned self] in 
      self.endBackgroundTask() 
     } 
     assert(backgroundTask != UIBackgroundTaskInvalid) 
    } 

    func endBackgroundTask() { 
     NSLog("Background task ended.") 
     UIApplication.sharedApplication().endBackgroundTask(backgroundTask) 
     backgroundTask = UIBackgroundTaskInvalid 
    } 
} 
+0

Эта функция не вызывается в фоновом режиме через 3 минуты – user2512558

+0

Прочитайте статью, которая связана. В нем объясняется, как установить фоновый режим, который позволяет загружать файлы через 3 минуты. – fishinear