Soru & Cevap

IOS Backgroun Fetch yenilemiyor ...

23.05.2014 - 12:02

Merhabalar, performfetchwithcompletionhandler ile veriler ilk çalıştırıldığında geliyor, bir daha yenilenmiyor. Nasıl güncellerim?

8 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-61002-1442578942.jpg
mahirtarlan
23.09.2015 - 12:48

Merhaba,

Background fetch, malesef bizim beklentimiz doğrultusunda çalışmıyor. Tanımladığımız setMinimumBackgroundFetchInterval parametresi, minimum bu aralıkta çalıştır manasına geliyor fakat bunun maksimum bir değeri yok. Buna iOS kendisi karar veriyor. Yani setMinimumBackgroundFetchInterval olarak UIApplicationBackgroundFetchIntervalMinimum set etsek bile background fetch çağrılma aralığını iOS kendisi belirliyor. Bunun için bildiğim kadarıyla iOS, kullanıcının uygulamayı ne zamanlar ve ne sıkılıkla açtığı bilgisini kullanarak kendince bir düzen belirliyor.

Eğer background fetch kodunu debug etmek istiyorsanız XCode'da Debug menüsü altında Simulate Background Fetch seçeneği var. Onu kullanabilirsiniz. Fakat, dediğim gibi, sabit bir aralıkta bir kodu çalıştırmanız gerekiyorsa background fetch ihtiyacınızı karşılamayacaktır.

Ek bir bilgi olarak, background fetch çalıştığında AppDelegate'te implement ettiğiniz performFetchWithCompletionHandler metodu çalışmaya başlar. Bu metodun 30 saniye çalışma süresi bulunmaktadır. 30 saniye içinde işinizi tamamlayıp completionHandler'ı çağırmanız önemlidir. Eğer zamanında completionHandler'ı çağırmazsanız, bir sonraki background fetch çağrımına karar verirken iOS sizin uygulamanızın önceliğini düşürebiliyor. 30 saniyeden fazla zamana ihtiyacınız varsa UIBackgroundTaskIdentifier'ı araştırmanızı öneririm.