簡體   English   中英

鎖屏iPod控件無法與Spotify音樂播放器一起使用

[英]Lock Screen iPod Controls Not Working With Spotify Music Player

我將Spotify播放器添加到了我的應用中,該播放器還使用MPMusicPlayerController播放音樂。 從Spotify播放音樂並且鎖定屏幕時,當用戶在鎖定的屏幕上按下這些按鈕時,不會收到播放/暫停和FFW / RWD的遠程控制事件。

如果正在從MPMusicPlayerController播放音樂,則可以基於以下代碼接收遠程控制事件:

-(void) ViewDidLoad {
    ...
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
    ...
}

- (BOOL) canBecomeFirstResponder
{
    return YES;
}

- (void) remoteControlReceivedWithEvent: (UIEvent*) event
{
    // see [event subtype] for details
    if (event.type == UIEventTypeRemoteControl) {
        // We may be receiving an event from the lockscreen
        switch (event.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:
            case UIEventSubtypeRemoteControlPlay:
            case UIEventSubtypeRemoteControlPause:
                // User pressed play or pause from lockscreen
                [self playOrPauseMusic:nil];
                break;

            case UIEventSubtypeRemoteControlNextTrack:
                // User pressed FFW from lockscreen
                [self fastForwardMusic:nil];
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                // User pressed rewind from lockscreen
                [self rewindMusic:nil];
                break;

            default:
                break;
        }
    }
}

當應用程序進入后台時,iPod控件是可見的,但是當我按下暫停鍵時,它們不會響應。 相反,當我按暫停鍵時,iPod控件消失了。 當流音頻(例如Spotify)從鎖定屏幕在后台播放時,需要什么附加功能才能檢測播放/暫停和FFW / RWD?

我相信我過去曾遇到過這種情況。 如果我沒記錯的話,我在

-(void)remoteControlReceivedWithEvent:(UIEvent *) event { ... }

以及

- (BOOL) canBecomeFirstResponder { return YES; }

到應用程序委托(這也是我的音頻控制器所在的位置)。 我遇到了一個問題,在我想捕獲UIEventTypeRemoteControl通知的時間內,UIViewControllers還沒有UIEventTypeRemoteControl

試試看,看看是否有幫助。

經過進一步調查,我發現當我的應用程序進入后台並且接收到遙控器事件時,如果包含以下代碼,則iPod控件不會消失。

// Set up info center to display album artwork within ipod controls (needed for spotify)
MPMediaItemArtwork *ipodControlArtwork = [[MPMediaItemArtwork alloc]initWithImage:artworkImage];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = [NSDictionary dictionaryWithObjectsAndKeys:nowPlayingTitle, MPMediaItemPropertyTitle,
                                                         nowPlayingArtist, MPMediaItemPropertyArtist, ipodControlArtwork, MPMediaItemPropertyArtwork,  [NSNumber numberWithDouble:0.0], MPNowPlayingInfoPropertyPlaybackRate, nil];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM