Ich bin mir ziemlich sicher, dass dies nicht durch eine öffentliche API möglich ist. Die Ecoute-App, die von @sooper erwähnt wird, muss private APIs verwenden. Ich habe ein kleines Experiment in der Codebasis meiner eigenen Musik-App gemacht. Zuerst habe ich diesen Code alle Methoden in der iPod-Musik-Player zur Liste (Put #import <objc/runtime.h>
am oberen Rand):
int i=0;
unsigned int mc = 0;
Method * mlist = class_copyMethodList([MPMusicPlayerController iPodMusicPlayer].class, &mc);
NSLog(@"%d methods for class", mc);
for(i=0;i<mc;i++) {
NSLog(@"\tMethod no #%d: %s", i, sel_getName(method_getName(mlist[i])));
}
free(mlist);
Das stellte einige interessante Methode Namen wie numberOfItems
und nowPlayingItemAtIndex:
auf. Also habe ich diese Kategorie am Anfang der Datei:
@interface MPMusicPlayerController (Private)
- (NSInteger)numberOfItems;
- (MPMediaItem*)nowPlayingItemAtIndex:(NSInteger)index;
@end
und ich lief diesen Code:
NSInteger numberOfItems = [[MPMusicPlayerController iPodMusicPlayer] numberOfItems];
for (NSInteger i = 0; i < numberOfItems; i++) {
MPMediaItem* mi = [[MPMusicPlayerController iPodMusicPlayer] nowPlayingItemAtIndex:i];
NSLog(@"%@", [mi valueForProperty:MPMediaItemPropertyTitle]);
}
und sicher genug, gedruckt es die Playlist, die ich hatte in der Musik-App Warteschlange gestellt !
Natürlich, wenn Sie diese Methoden auf diese Weise aufrufen, wird Apple Ihre App ablehnen, aber es gibt einen Weg zu hide private API calls from Apple.
Ich bin mir sicher, dass dies möglich ist. "Ecoute" im App Store ruft irgendwie programmatisch die aktuelle Warteschlange ab, und das hat nichts damit zu tun, die Warteschlange in der App zu verwalten. Für z.B. Beende die App vollständig, gehe in die Musik-App und erstelle eine Playlist mit ein paar Titeln und spiele sie ab. Gehen Sie dann zurück in die App auf den Bildschirm, der gerade abgespielt wird, und tippen Sie auf das Uhrsymbol oben rechts, um die Warteschlange anzuzeigen. Sie werden sehen, dass sich alle Titel in dieser Wiedergabeliste in der Warteschlange befinden. Woher weiß es, welche Playlist? Verwenden sie nicht dokumentierte APIs? – sooper
@sooper Ich denke, dass sie undokumentierte APIs verwenden. Siehe meine Antwort unten. – bugloaf