Подтвердить что ты не робот

MPNowPlayingInfoCenter defaultCenter не будет обновлять или извлекать информацию

Я работаю над обновлением MPNowPlayingInfoCenter и имею немного проблем. Я пробовал совсем немного до такой степени, что я в недоумении. Ниже приведен мой код:

    self.audioPlayer.allowsAirPlay = NO;

    Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter");

    if (playingInfoCenter) {

        NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];

        MPMediaItemArtwork *albumArt = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"series_placeholder"]];

        [songInfo setObject:thePodcast.title forKey:MPMediaItemPropertyTitle];
        [songInfo setObject:thePodcast.author forKey:MPMediaItemPropertyArtist];
        [songInfo setObject:@"NCC" forKey:MPMediaItemPropertyAlbumTitle];
        [songInfo setObject:albumArt forKey:MPMediaItemPropertyArtwork];

        [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];


    }

Это не работает, я также пробовал:

   [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:nil];

В попытке заставить его удалить существующую информацию из приложения iPod (или что-то там, где может быть информация). Кроме того, просто чтобы узнать, могу ли я выяснить проблему, я попытался получить текущую информацию о запуске приложения:

  NSDictionary *info = [[MPNowPlayingInfoCenter defaultCenter] nowPlayingInfo];
  NSString *title = [info valueForKey:MPMediaItemPropertyTitle];
  NSString *author = [info valueForKey:MPMediaItemPropertyArtist];

  NSLog(@"Currently playing: %@ // %@", title, author);

и я получаю Currently playing: (null) // (null)

Я исследовал это совсем немного, и следующие статьи объясняют это довольно подробно, однако я все еще не могу заставить это работать должным образом. Я что-то упускаю? Будет ли что-нибудь вмешиваться в это? Является ли это услугой, которую мое приложение должно регистрировать для доступа (не видели это в каких-либо документах)?

Apple Docs

Изменить фоновый контроль звука фона экрана блокировки

Теперь игнорируется игра с информацией

4b9b3361

Ответ 1

Я, наконец, выяснил проблему, я не предлагал моему приложению получать события дистанционного управления, просто добавив эту строку, исправил проблему:

 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

Ответ 2

Я использую приведенный ниже код и всегда работает. Я также использую MPMoviePlayer, как вы. Вы проверили, действительно ли NSClassFromString(@"MPNowPlayingInfoCenter") возвращает YES? Установили ли вы приложение для воспроизведения звука в фоновом режиме в вашем plist?

- (void) loadMPInformation
{
    NSDictionary *mpInfo;

    if([savedTrack.belongingAlbum.hasAlbumArt boolValue] == NO){
        mpInfo = [NSDictionary dictionaryWithObjectsAndKeys:savedTrack.belongingAlbum.album, MPMediaItemPropertyAlbumTitle, 
                  savedTrack.belongingArtist.artist, MPMediaItemPropertyArtist, savedTrack.name, MPMediaItemPropertyTitle, nil];   
    } else {
        UIImage *artImage = [UIImage imageWithData:savedTrack.belongingAlbum.art];
        MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:artImage];
        mpInfo = [NSDictionary dictionaryWithObjectsAndKeys:savedTrack.belongingAlbum.album, MPMediaItemPropertyAlbumTitle, 
                  savedTrack.belongingArtist.artist, MPMediaItemPropertyArtist, savedTrack.name, MPMediaItemPropertyTitle, artwork, MPMediaItemPropertyArtwork, nil];
    }
    [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = mpInfo;

}