i have nice little query when user clicks "play button," title called , if song of title exists in itunes, song begins playing. i'm stuck because not sure how show alertview when song doesn't exist.
here's query:
- (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]; }
with handle_playbackstatechanged being:
- (void) handle_playbackstatechanged: (id) notification { mpmusicplaybackstate playbackstate = [self.player playbackstate]; if (playbackstate == mpmusicplaybackstatepaused) { self.textlabel.text = @"play"; [playbutton settitle:@"stop" forstate:uicontrolstatenormal]; // set title nslog (@"this 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 playing"); } else if (playbackstate == mpmusicplaybackstatestopped) { self.textlabel.text = @"play"; self.playbutton = playbutton; [playpausebutton setimage:[uiimage imagenamed:@"playbss.png"] forstate:uicontrolstatenormal]; [self.player stop]; } }
i have tried this:
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 first uialertview message." delegate:nil cancelbuttontitle:@"ok" otherbuttontitles:nil]; [message show]; }
but doesn't work. help.
try
if( q.items.count < 1 ) { [self showalert]; return; }
before
[self.player setqueuewithquery: q]