Оповещение, когда песня недоступна
У меня есть хороший маленький запрос, что, когда пользователь нажимает "кнопку воспроизведения", вызывается название, и если песня с таким названием существует в его iTunes, она начинает воспроизводиться. Я застрял сейчас, потому что я не уверен, как показать предупреждение, когда песня не существует.
Вот запрос:
- (void) queryMusic
{
MPMediaQuery *q = [[MPMediaQuery alloc] init];
[q addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:@"Beyoncé" forProperty:MPMediaItemPropertyArtist comparisonType:MPMediaPredicateComparisonEqualTo]];
[q addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:_DetailModal[0]
forProperty:MPMediaItemPropertyTitle comparisonType:MPMediaPredicateComparisonEqualTo]];
[q setGroupingType:MPMediaGroupingTitle];
self.player = [MPMusicPlayerController applicationMusicPlayer];
[self.player setRepeatMode:MPMusicRepeatModeAll];
[self.player setShuffleMode:MPMusicShuffleModeSongs];
[self.player setQueueWithQuery: q];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleStateChanged:)
name:MPMusicPlayerControllerPlaybackStateDidChangeNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector (handle_PlaybackStateChanged:)
name: MPMusicPlayerControllerPlaybackStateDidChangeNotification
object: self.player];
[self.player beginGeneratingPlaybackNotifications];
}
С handle_PlaybackStateChanged:
- (void) handle_PlaybackStateChanged: (id) notification {
MPMusicPlaybackState playbackState = [self.player playbackState];
if (playbackState == MPMusicPlaybackStatePaused) {
self.textLabel.text = @"play";
[PlayButton setTitle:@"STOP" forState:UIControlStateNormal]; // To set the title
NSLog (@"This is paused");
self.playBarButton.title = @"Play";
self.PlayButton = PlayButton;
[self.PlayButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[playPauseButton setImage:[UIImage imageNamed:@"playbss.png"] forState:UIControlStateNormal];
} else if (playbackState == MPMusicPlaybackStatePlaying) {
self.textLabel.text = @"pause";
[PlayButton setTitle:@"Pause" forState:UIControlStateNormal];
self.PlayButton = PauseButton;
[playPauseButton setImage:[UIImage imageNamed:@"pausesss@2x.png"] forState:UIControlStateNormal];
NSLog (@"This is playing");
} else if (playbackState == MPMusicPlaybackStateStopped) {
self.textLabel.text = @"Play";
self.PlayButton = PlayButton;
[playPauseButton setImage:[UIImage imageNamed:@"playbss.png"] forState:UIControlStateNormal];
[self.player stop];
}
}
Я только что попробовал это:
MPMediaItem * nowPlayingItem = self.player.nowPlayingItem;
NSString *title = [nowPlayingItem valueForProperty:MPMediaItemPropertyTitle];
if (title == (id)[NSNull null] || title.length == 0) {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Hello World!"
message:@"This is your first UIAlertview message."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[message show];
}
но не работает. Помогите.
1 ответ
Решение
Пытаться
if( q.items.count < 1 ) {
[self showAlert];
return;
}
до
[self.player setQueueWithQuery: q]