Alternativamente , un truco desagradable que funciona Para mí (tm).
- (MPMediaItem *)getMediaItemForURL:(NSURL *)url {
// We're going to assume that the last query value in the URL is the media item's persistent ID and query off that.
NSString *queryString = [url query];
if (queryString == nil) // shouldn't happen
return nil;
NSArray *components = [queryString componentsSeparatedByString:@"="];
if ([components count] < 2) // also shouldn't happen
return nil;
id trackId = [components objectAtIndex:1];
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:trackId forProperty:MPMediaItemPropertyPersistentID]];
NSArray *items = [query items];
if ([items count] < 1) // still shouldn't happen
return nil;
return [items objectAtIndex:0];
}
Comentarios apreciados por donde esto podría salir mal o la forma de mejorarlo. Prefiero pasar la URL en lugar de PersistentID ya que tengo varias fuentes de medios, todas las cuales pueden usar URL. Usar PersistentID significaría mucho "si esto es una identificación de medios, haz esto, de lo contrario, hazlo con la URL".
gracias su ayuda, funciona :) – flatronka
¿Cómo se pasa el elemento de medios desde el host al lado del cliente usando la conectividad del multiplicador? –