2015-12-02 4 views
0

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

 func applicationDidEnterBackground(application: UIApplication) { 
    print("entered background") 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "getNowPlayingItem", name: MPMusicPlayerControllerNowPlayingItemDidChangeNotification, object: nil) 
    musicPlayer.beginGeneratingPlaybackNotifications() 
} 

func getNowPlayingItem() { 
    if let nowPlaying = musicPlayer.nowPlayingItem { 
     let title = nowPlaying[MPMediaItemPropertyTitle] as? String 
     let artisttest = nowPlaying[MPMediaItemPropertyTitle] 
     if let artist = nowPlaying[MPMediaItemPropertyArtist] as? String{ 

      let objectPointer = PFObject(className: "Pointer") 
      let object = PFObject(className: "MasterSongs") 

      // print("Artist: " + artist) 


      let query = PFQuery(className: "Pointer") 
      query.findObjectsInBackgroundWithBlock({ 
       (objects: [AnyObject]?, error: NSError?) -> Void in 
       var objectIDs = objects as! [PFObject] 

       for i in 0...objectIDs.count-1{ 
        self.Parsearray.append((objectIDs[i].valueForKey("title") as? String)!) 

        // print(self.Parsearray) 
       } 


       if self.Parsearray.contains(title!){ 
        print("already in db") 
       }else{ 
        objectPointer["title"] = title 
        objectPointer["user"] = PFUser.currentUser() 
        objectPointer["artist"] = artist 
        objectPointer.saveInBackground() 


       } 

      }) 




     }else{ 
      let object = PFObject(className: "MasterSongs") 
      object.setObject(title!, forKey: "title") 
      //object.setObject(artist!, forKey: "artist") 
      object.saveInBackground() 

      let objectPointer = PFObject(className: "Pointer") 


      let query = PFQuery(className: "Pointer") 
      query.findObjectsInBackgroundWithBlock({ 
       (objects: [AnyObject]?, error: NSError?) -> Void in 
       var objectIDs = objects as! [PFObject] 

       for i in 0...objectIDs.count-1{ 
        self.Parsearray.append((objectIDs[i].valueForKey("title") as? String)!) 

        // print(self.Parsearray) 
       } 


       if self.Parsearray.contains(title!){ 
        print("already in db") 
       }else{ 
        objectPointer["title"] = title 
        objectPointer["user"] = PFUser.currentUser() 
        objectPointer["artist"] = "No artist found :(" 
        objectPointer.saveInBackground() 


       } 

      }) 





     } 


    } 


} 

ответ

2

Apple поддерживает некоторые из фонового режима. Если вы используете какую-либо инфраструктуру Apple для воспроизведения звука, выберите целевое приложение и перейдите в опции Capabilites и включите режим фона и выберите соответствующие параметры.

Проверьте скриншот. enter image description here

+0

Поэтому я думаю, что знаю, что не так, я вызываю функцию в представлении, и поскольку приложение будет работать в фоновом режиме, viewWillAppear не будет вызываться, пока приложение не будет открыто, будет ли ваш метод исправлять это ? – tman0542

+0

Просто включите режим фона, как указано в ответе, а затем проверьте свой код. – Muneeba

+0

Нет, это не сработает. Я также добавил его к plist http://puu.sh/lGm9b/3459d6f072.png – tman0542

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