2011-11-05 18 views
6

Yeni iCloud hizmetinin birçok olası yapılandırması vardır. Kullanıcımın aygıtının, yalnızca aygıtta depolamak yerine çekilen fotoğrafları iCloud sunucusuna göndermek üzere yapılandırıldığını nasıl bilebilirim?iOS - iCloud fotoğraf aktarma özelliğinin etkin olup olmadığını nasıl öğrenebilirim?

+0

Fotoğraf Akışı hakkında mı konuşuyorsunuz yoksa iCloud yedeklerinden mi bahsediyorsunuz? –

+0

@MichaelDautermann: Fotoğraf akışı hakkında konuşuyorum, ancak yorumunuzu okuyarak, iPhone fotoğraflarını iCloud'a okunabilir bir şekilde gönderebilecek herhangi bir ortalamadan bahsediyorum, dolayısıyla yedeklemeler bu kapsamda. – Oliver

cevap

1

iCloud aktive olmadığını bilmek isterseniz basitçe diyebiliriz: iCloud hiç varsa

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil]; 
if (cloudURL != nil) { 
    // iCloud is available 
} 

Bu bir ipucu verebilir. Resimleri saklamak için iCloud kullanmak istiyorsanız kendi eşyalarınızı oluşturabilirsiniz. Ne yapmayı planladığınızdan emin değilim.

+0

Uygulamamla çekilen resimler iCloud'da depolanacaksa bir uyarı görüntülemek istiyorum. – Oliver

1

sürece vermek olarak yönteminin altında geçerli bir anda her yerde konteyner tanımlayıcı YES dönmelidir:

static NSString *UbiquityContainerIdentifier = @"ABCDEFGHI0.com.acme.MyApp"; 

- (BOOL) iCloudIsAvailable 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSURL *ubiquityURL = [fileManager URLForUbiquityContainerIdentifier:UbiquityContainerIdentifier]; 
    return (ubiquityURL) ? YES : NO; 
} 

Ancak, ben URLForUbiquityContainerIdentifier: çağıran bir oturum içinde ilk defa bir zaman (birkaç saniye) sürebilir saptadık . Bu nedenle, arka planda UI'yi geçici olarak engellemek için aradığınızdan emin olun:

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(backgroundQueue,^{ 
    BOOL isAvailable = [self iCloudIsAvailable] 
    /* change to the main queue if you want to do something with the UI. For example: */ 
    dispatch_async(dispatch_get_main_queue(),^{ 
     if (!isAvailable){ 
      /* inform the user */ 
      UIAlertView *alert = [[UIAlertView alloc] init...] 
      [alert show]; 
      [alert release]; 
     } 
    }); 
});