如何让程序在后台运行?

时间:2015-12-02 05:13:20

标签: ios swift parse-platform

我有一个程序会记录当前正在播放的歌曲,但我希望该应用程序在后台运行,因此当用户在不同的应用程序或设备被锁定且我的应用程序在后台并且他们转到下一首歌,程序会知道。目前,当应用程序打开时,我可以播放当前播放的歌曲并将其解析。

     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()


                }

            })





        }


    }


}

1 个答案:

答案 0 :(得分:2)

Apple支持一些后台模式。如果您使用任何Apple框架进行音频播放,请选择您的应用目标并进入Capabilites选项并启用后台模式并选择相应的选项。

检查屏幕截图。enter image description here