MPMusicPlayerControllerNowPlayingItemDidChange被调用两次

时间:2016-10-05 13:23:52

标签: ios swift mpmusicplayercontroller

我正在使用let player = MPMusicPlayerController.systemMusicPlayer()作为播放器。

这是复制此问题所需的全部代码:

import UIKit
import MediaPlayer

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let player = MPMusicPlayerController.systemMusicPlayer()
        player.beginGeneratingPlaybackNotifications()
        player.setQueueWithStoreIDs(["401187194"])
        player.play()


        NotificationCenter.default.addObserver(
            self,
            selector: #selector(now_playing_item_changed),
            name: NSNotification.Name.MPMusicPlayerControllerNowPlayingItemDidChange,
            object: nil)
    }

    func now_playing_item_changed(_ notification: Notification){
        NSLog("CALLED")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

只需启动一个新的视图swift应用程序并使用上面的代码填充ViewController.swift文件。它只适用于您拥有苹果音乐订阅。你可以用setQueueWithStoreIDs换取其他东西,让它在不拥有苹果音乐的情况下运作。

除了问题之外,当我启动应用程序时,通知会被抛出2-4次,每当歌曲结束或更改时,它都会被抛出两次。

我不知道在没有一些hacky编码的情况下区分这两个调用的正确方法(比如计算调用等)。

有谁知道为什么这些通知会被抛出两次,或者如何以理智的方式区分这些通知?

0 个答案:

没有答案