【问题标题】:Lock Screen iPod Controls Not Working With Spotify Music Player锁定屏幕 iPod 控件不适用于 Spotify 音乐播放器
【发布时间】:2023-03-07 15:06:01
【问题描述】:

我将 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?

【问题讨论】:

    标签: ios background-process spotify lockscreen mpmusicplayercontroller


    【解决方案1】:

    我相信我过去遇到过这种情况。如果我没记错的话,我在

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

    还有

    - (BOOL) canBecomeFirstResponder { return YES; }
    

    到应用程序委托(这也是我的音频控制器所在的位置)。在我想捕捉UIEventTypeRemoteControl 通知期间,我遇到了 UIViewControllers 不存在的问题。

    试试看是否有帮助。

    【讨论】:

    • 我不确定这是否会对我有所帮助。如果我将这些方法添加到我的 appDelegate,它们不会被调用。我怀疑他们没有被调用,因为我的音频播放器不在 appDelegate 中。但这让我深思。也许这与你的建议有关。我会继续努力的。
    • 我还确保我的音频播放器也可以通过 appDelegate 被引用。这样,无论您在哪个视图控制器或视图中,都可以无缝控制。这就是我采取的方法。祝你好运。
    【解决方案2】:

    经过进一步调查,我发现如果在我的应用程序进入后台和接收到远程控制事件时包含以下代码,则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];
    

    【讨论】:

      猜你喜欢
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多