0

現在、アプリでMPNowPlayingInfoCenterを使用して、再生中の曲を表示していますが、HTTP Live Streamingをアプリケーションに組み込んで、バックグラウンドでさまざまなトラックが発生するようにしています。

アプリケーションが実際にはバックグラウンドで実行されていない場合でも、アプリケーションがバックグラウンドにあるときにnowPlayingInfoを設定する方法はありますか(一定時間後に関数を呼び出しますか?)?

または、適切な情報を返すサーバー上の単純な呼び出しを使用して、現在再生中の情報を設定する方法はありますか?文字列または画像を返すAPI呼び出しを使用しますか?

Songzaはすでにそれを行っているので、それは可能だと私は知っていますが、おそらく彼らはAppleから特定のプライベートメソッドを使用する許可を得ています(それがあなたにできることでさえあれば)。

4

1 に答える 1

1

クラスを使用していてAVPlayer、アプリの主な目的が音楽の再生である場合は、バックグラウンドで実行できるためnowPlayingInfo、トラックが変更されたときに を更新できます。

簡単な例:

- (void)viewDidLoad {
    [super viewDidLoad]

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        [self becomeFirstResponder];
        //These two steps are important if you want the user to be able to change tracks with remote controls (you'll have to handle the remote control events yourself).
    }
    self.yourPlayer = [[AVPlayer alloc] init];
}

deallocメソッドでリモート コントロール イベントの登録を解除します。

[[UIApplication sharedApplication] endReceivingRemoteControlEvents]

info.plistのRequired Background ModesApp plays audioに変更します

于 2012-11-23T21:10:20.367 に答える