Swift MPMusicPlayerController.systemMusicPlayer、skipToNextItem()後のplaybackState

5曲をキューに登録して再生。
5曲目でskipToNextItem()コール。
再生は止まるがplaybackStateは.playingのまま。
.pauseや.stoppedにはならない。

以前はなっていたはず。
Objective-Cでアプリを作成しいた頃、下記のコードで期待通り動作し、アプリを公開していた。

- (void)nextMusic:(NSTimer*)timer {
    [player skipToNextItem];
    if(player.playbackState == MPMusicPlaybackStateStopped) {
        self.stopMusic.enabled = NO;
        self.albumSelect.enabled = YES;
    }
    else {
        MPMediaItem* nowItem = [player nowPlayingItem];
        [self setMusicInfo:nowItem];
    }
}

改版を追っていないので仕様が変更されたのかもしれない。
キューの最後から次としただけなので、状態は変わらないという解釈も出来なくはない。
更にskipToNextItem()コールすると.pauseになる。
終わったことの判断はindexOfNowPlayingItemが0になることで出来る。

Swift

Posted by shi-n