2010-08-26 18 views
10

Bazı şarkıları çalmak için iPod kütüphanesini kullanan bir iPhone uygulaması geliştiriyorum. Şarkıları aşağıdaki kod ile yüklüyorum. Sorun, cihaz iTunes ile senkronize edildikten hemen sonra bu kodu çalıştırırken bir sorun var. Anlaşılan iPod kütüphanesinin güncellenmesi gerekiyor ve biraz zaman alıyor. IPod uygulamasına senkronizasyondan hemen sonra gidersem "Kütüphane Güncelleniyor" yazısını gördüm. Bu sırada uygulamamdan "[itemleri]" olarak adlandırırsam, kütüphanede hiç şarkı olmadığını belirten boş bir dizi alıyorum. Güncelleme bittiğinde her şey mükemmel çalışır. Bu sorunu çözmenin bir yolu var mı? Güncellemenin ne zaman bittiğini saptamanın bir yolu olabilir. Alle NSNotifications'ı dinlemeyi denedim, ancak güncelleme bittiğinde hiçbiri çağrılmadı.Senkronizasyondan hemen sonra iPod Kitaplığından şarkı yükle

MPMediaQuery *query = [MPMediaQuery songsQuery]; 

// convert all items to abstracted media item 
NSArray *items = [query items]; 

NSMutableArray *convertedItems = [[NSMutableArray alloc] initWithCapacity:[items count]]; 
for (MPMediaItem *item in items) { 
    REMediaItem *mediaItem = [[REMediaItem alloc] initWithMediaItem:item]; 
    [convertedItems addObject:mediaItem]; 
    [mediaItem release]; 
} 

Umarım birileri yardım edebilir.

Peter

cevap

11

Aslında Güncelleme tamamlandığında görmek için bir yol olduğunu keşfetti. Güncelleme bittiğinde cihaz bir bildirim yayınlayacaktır.

[[MPMediaLibrary defaultMediaLibrary] beginGeneratingLibraryChangeNotifications] 
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
[notificationCenter addObserver:self 
         selector:@selector(iPodLibraryDidChange) 
          name: MPMediaLibraryDidChangeNotification 
         object:nil]; 

tek sorun

Ben cihaz iPod Kütüphane güncellenmesi durumunda olup olmadığının tespiti için bir yol bulamıyorum ve bitirmek veya cihaz sadece kütüphanedeki herhangi şarkı var doesnt için bekleyeceğim gerektiğidir. [sorgu öğeleri] her iki durumda da boş bir dizi döndürür.

+0

Aslında şu anda aynı sorunu yaşıyorum - her neyse çözdünüz mü? – shw

4

@Peter doğrudur - ve aslında onun sorunu için bir çözüm buldum. İlk başta, senkronize edilirken nilnil döndürdüğünü ve başlattığını öğrendim - öncelikle kütüphaneye erişim olup olmadığını kontrol etmek için çalışacağımı düşündüm ama bazen işe yaramıyor. Şimdilik bulduğum tek yol 'un MPMediaLibrary'u kontrol etmektir - değiştiği sürece MPMediaQuery kullanarak sonuç almayacaksınız - değişikliklerinizi bir an için değiştirdiğinizde (istediğiniz zaman) iyi ol. Zaten bunun üzerine bir hata raporu gönderildi - belgeler, bildirim tetiklendiğinde önbelleğe alınmış nesneler kitaplığından yeniden yüklemeniz gerektiğini söylüyor, ancak bulmaya çalıştığınız her nesne için MPMediaQuery, döndürürse açıkça yapamazsınız.

+0

Yanıtı, birisinin gönderisinden kopyaladınız. –

+0

Bu bağlantıdan olabilir http://www.wwml.tech/questions/192391/load-songs-from-ipod-library-right-after-sync –