Tôi chắc chắn điều này là không thể thông qua bất kỳ API công khai nào. Ứng dụng Ecoute mà @sooper đề cập phải sử dụng API riêng tư. Tôi đã làm một thử nghiệm nhỏ trong codebase của ứng dụng âm nhạc của riêng tôi. Trước tiên tôi sử dụng mã này để liệt kê tất cả các phương pháp trong máy nghe nhạc iPod (đặt #import <objc/runtime.h>
ở đầu trang):
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);
này bật lên một số tên phương pháp hấp dẫn như numberOfItems
và nowPlayingItemAtIndex:
. Vì vậy, tôi thêm vào thể loại này ở phía trên cùng của tập tin:
@interface MPMusicPlayerController (Private)
- (NSInteger)numberOfItems;
- (MPMediaItem*)nowPlayingItemAtIndex:(NSInteger)index;
@end
và tôi chạy mã này:
NSInteger numberOfItems = [[MPMusicPlayerController iPodMusicPlayer] numberOfItems];
for (NSInteger i = 0; i < numberOfItems; i++) {
MPMediaItem* mi = [[MPMusicPlayerController iPodMusicPlayer] nowPlayingItemAtIndex:i];
NSLog(@"%@", [mi valueForProperty:MPMediaItemPropertyTitle]);
}
và chắc chắn đủ, nó in ra danh sách nhạc mà tôi đã xếp hàng trong ứng dụng Nhạc !
Tất nhiên, nếu bạn gọi những phương pháp này theo cách này, Apple sẽ từ chối ứng dụng của bạn, nhưng có một cách để hide private API calls from Apple.
Tôi chắc chắn rằng điều này là có thể. 'Ecoute' trong App Store bằng cách nào đó có thể truy lục hàng đợi hiện tại bằng cách nào đó, và điều này không liên quan gì đến việc quản lý hàng đợi từ bên trong ứng dụng. Ví dụ: hoàn toàn thoát khỏi ứng dụng, truy cập ứng dụng Nhạc và tạo danh sách phát với một vài bản nhạc và phát nó. Sau đó quay trở lại ứng dụng trên màn hình hiện đang phát và nhấn vào biểu tượng đồng hồ ở trên cùng bên phải để xem hàng đợi. Bạn sẽ thấy rằng tất cả các bản nhạc trong danh sách phát đó đều có trong hàng đợi. Làm cách nào để biết danh sách phát nào? Họ có đang sử dụng các API không có giấy tờ không? – sooper
@sooper Tôi nghĩ rằng họ đang sử dụng các API không có giấy tờ. Xem câu trả lời của tôi dưới đây. – bugloaf