Bu açık hiçbir API aracılığıyla mümkün değildir eminim. @sooper'dan bahsettiğimiz Ecoute uygulaması, özel API'leri kullanmalıdır. Kendi müzik uygulamamın kod tabanında küçük bir deney yaptım. Önce iPod müzik çalar (üstündeki #import <objc/runtime.h>
koymak) 'de tüm yöntemleri listelemek için bu kodu kullandı:
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);
Bu numberOfItems
ve nowPlayingItemAtIndex:
gibi bazı ilginç yöntem adlarını ele geçirildi. Bu yüzden dosyanın üstündeki bu kategori eklendi:
@interface MPMusicPlayerController (Private)
- (NSInteger)numberOfItems;
- (MPMediaItem*)nowPlayingItemAtIndex:(NSInteger)index;
@end
ve ben bu kodu koştum:
NSInteger numberOfItems = [[MPMusicPlayerController iPodMusicPlayer] numberOfItems];
for (NSInteger i = 0; i < numberOfItems; i++) {
MPMediaItem* mi = [[MPMusicPlayerController iPodMusicPlayer] nowPlayingItemAtIndex:i];
NSLog(@"%@", [mi valueForProperty:MPMediaItemPropertyTitle]);
}
ve tabii ki, ben Müzik uygulamasında sıraya etmişti çalma listesi çıktısı ! Tabii
, bu şekilde bu yöntemleri çağırırsanız, Apple uygulamanızı reddeder, fakat bir yol hide private API calls from Apple için var.
Ben bu mümkün olduğundan emin değilim. App Store'daki 'Ecoute', bir şekilde programlı bir şekilde mevcut kuyruğu almayı gerektirir ve bunun, uygulamanın içinden kuyruğu yönetmeyle alakası yoktur. Örneğin Uygulamadan tamamen çıkın, Müzik uygulamasına gidin ve birkaç parça içeren bir oynatma listesi oluşturun ve oynayın. Ardından sıradaki oynatma ekranına uygulamaya geri dönün ve sırayı görmek için sağ üstteki saat simgesine dokunun. Bu oynatma listesindeki tüm parçaların sırada olduğunu göreceksiniz. Hangi şarkı listesini biliyordu? Belgelenmemiş API'ler kullanıyorlar mı? – sooper
@sooper Belgelendirilmemiş API'leri kullandıklarını düşünüyorum. Cevabımı aşağıya bakın. – bugloaf