gpt4 book ai didi

cocoa-touch - MPMusicPlayerController 不发布通知?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:19 24 4
gpt4 key购买 nike

我正在尝试使用 MPMusicPlayerController 播放音乐,而且我还想接收通知 MPMusicPlayerControllerPlaybackStateDidChange。我几乎只是设置了我的播放器和通知注册就像示例一样(有效,顺便说一句 - 它正确接收通知):

- (id) initWithPlaylist:(MPMediaPlaylist*)list {
if (self = [super init]) {
player = [MPMusicPlayerController applicationMusicPlayer];
[player retain];

NSLog(@"setting up player");
[plaayer setQueueWithItemCollection:list];
[player setShuffleMode:MPMusicShuffleModeOff];
[player setRepeatMode:MPMusicRepeatModeNone];

NSLog(@"registering MPMusicPlayerController Notifications");
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handle_itemChanged:)
name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handle_stateChanged:)
name:MPMusicPlayerControllerPlaybackStateDidChangeNotification
object:nil];

NSLog(@"turning on player notifications");
[player beginGeneratingPlaybackNotifications];
}
}

我得到了很多布吉。方法 handle_itemChanged:handle_stateChanged: 只是空的,除了一个 NSLog 语句来表明它们已经被命中,而且它们从未出现过被击中。 initWithPlaylist: 中的 NSLog 语句按预期打印到日志中。以上只是我应用程序中的一个业务对象。它不是 View 或 View Controller 。

有什么想法吗?奇怪的是 AddMusic 示例对我来说工作得很好,而且我不能说我在 MPMusicPlayerController 及其通知方面做了任何不同的事情。

更新:我在我的应用委托(delegate)中添加了这一行以查看全部通知:

[[NSNotificationCenter defaultCenter] addObserverForName:nil object:nil queue:nil usingBlock:^(NSNotification *n) { NSLog(@"notification: %@", n); }];

我看到控制台打印了各种通知,但媒体播放器 Controller 没有。

最佳答案

您应该在这些行之上添加另一行:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handle_itemChanged:)
name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object:nil];

即:

[myPlayer beginGeneratingPlaybackNotifications];

它对我有用。

关于cocoa-touch - MPMusicPlayerController 不发布通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3904746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com