小编Mit*_*lly的帖子

播放(非库)Apple Music内容-请求失败

我正在尝试使用以下代码播放专辑…

let predicate = MPMediaPropertyPredicate(value: "1459938538", forProperty: MPMediaItemPropertyAlbumPersistentID)
let iCloudPredicate = MPMediaPropertyPredicate(value: true, forProperty: MPMediaItemPropertyIsCloudItem)
let query = MPMediaQuery.albums()
query.filterPredicates = [predicate, iCloudPredicate]

let mp = MPMusicPlayerController.applicationMusicPlayer
mp.setQueue(with: query)
mp.play()
Run Code Online (Sandbox Code Playgroud)

但是它失败了

[SDKPlayback] -[MPMusicPlayerController prepareToPlay] timeout

[MediaRemote] MRC <MPCPlayerPath: route=<MPAVEndpointRoute: 0x280f1a280 name=iPhone uid=LOCAL> origin=iPhoneID bundleID=com.apple.MediaPlayer.RemotePlayerService playerID=MPMusicPlayerApplicationController>: Undo optimistic state [failed] command=Play error=Error Domain=MPCPlayerRequestErrorDomain Code=1000 "Failed to send command 0 (MRMediaRemoteCommandHandlerStatus = 1)" UserInfo={NSDebugDescription=Failed to send command 0 (MRMediaRemoteCommandHandlerStatus = 1), MPCPlayerErrorKeyMediaRemoteCommandHandlerStatus=1}

[SDKPlayback] -[MPMusicPlayerController play] completed error: Error Domain=MPCPlayerRequestErrorDomain Code=1000 "Failed to …

mpmusicplayercontroller mpmediaquery ios swift apple-musickit

7
推荐指数
1
解决办法
142
查看次数

如何在 MusicKit 中检测歌曲的结尾?

我试图在我的应用程序中使用 Apple 的 Music Kit 来听音乐。我的问题是播放的第一首歌曲会不断重复。使用以下代码正确播放第一首歌曲:

let mediaArray = [songsApple?[songNumber!]] 
let playableColledction = MPMediaItemCollection.init(items: mediaArray as! [MPMediaItem]) 

applicationMusicPlayer.setQueue(with: playableCollection) 
applicationMusicPlayer.play() 
self.activateAudioSession 
Run Code Online (Sandbox Code Playgroud)

activateAudioSession 方法是:

 do {
   try audioSession.setCategory(AVAudioSessionCategoryPlayback) 
   try audioSession.setActive(true) 
 }
 catch let error {
   print(error.localizedDescription) 
 } 
Run Code Online (Sandbox Code Playgroud)

为了检测歌曲的结尾,我使用了 Apple Music 文档中的以下观察者:

applicationMusicPlayer.beginGeneratingPlaybackNotications() 

NotificationCenter.default.addObserver(self, #selector(didFinishSong), name: Notification.Name.MPMusicPlayerControllerNowPlayingItemDidChange, object: nil) 
Run Code Online (Sandbox Code Playgroud)

didFinishSong 方法用于从songsApple 数组中获取下一首要播放的歌曲的songNumber。然后将此信息传递回播放歌曲的方法以获取 mediaArray。但是,现在,当歌曲播放结束时,didFinishSong 不会被调用,而是从头开始重复播放。

我在检测歌曲结尾时做错了什么吗?还有另一种方法吗?我也尝试使用计时器,但由于某种原因,只要应用程序进入后台,计数就会不准确,它就会停止计数。

预先感谢您提供的任何帮助。如果您需要更多信息,请不要犹豫,我会澄清更多。

audio-player mpmusicplayercontroller swift apple-music apple-musickit

5
推荐指数
0
解决办法
494
查看次数

当我的 IOS 应用程序关闭时如何调用方法

我正在尝试从用户关闭应用程序时设置的 Firebase 数据库中删除数据。是否有一种方法在应用程序关闭时被调用,以便我调用最后一个函数来从数据库中删除数据?

谢谢

objective-c ios firebase swift firebase-realtime-database

2
推荐指数
1
解决办法
4473
查看次数