Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Gerçek bir cihazde Background Fetch işlemini simüle edebilmek.

0 oy
85 kez görüntülendi
16, Şubat, 2017 ios development kategorisinde huseyinvural tarafından soruldu

Merhaba,

Bir süredir pek sorum olmamıştı, ama yeni bir tane ile geldim.

Appdelegete içinde didFinishLaunchingWithOptions methodu altında değerini gerek minimum gerek 10 saniye olarak verdim test etmek için aslında istediğim bir saate bir istek yapması.

Gerekli izinlerimde açık, çok ufak bir json istek yapıyorum dönen json ilede bir UserDefaults değerini set edip, uygulamama ait widget ın belli aralıklar ile güncellemesini hedefliyorum.

Simülatörde->Debug->Simulate Background Fetch dersem sorun olmuyor performFetchWithCompletionHandler methodu bir kere çalışıyor. Widget içindeki bilgileri getiren userdefaults güncelleniyor.

Fakat gerçek bir cihazda aynı işlemi yaparsam BOM crash oluyor. Saçma bir libsystem_kernel.dylib`__workq_kernreturn hatası alıyorum. Bacground fetch işleminin delegete methodu aşağıdaki şekilde.

Sizce nerde hata yapıyor olabilirim. Build etiğimde crash olmasada Bacground fetch işleminin çalıştığını takip edemiyorum.

enter code here
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    getAndSetGundemData()
    completionHandler(UIBackgroundFetchResult.newData)
}

1 cevap

0 oy
16, Şubat, 2017 yasin tarafından cevaplandı
16, Şubat, 2017 huseyinvural tarafından seçilmiş
 
En İyi Cevap

o bir crash değil. Background fetch'i gerçek bir cihaz da denediğinde bir break point atıyor sadece.
Ctrl + ⌘ + Y ile devam edebilirsin.

16, Şubat, 2017 huseyinvural tarafından yorumlandı
16, Şubat, 2017 huseyinvural tarafından düzenlendi

Crash değil mi :D Rezilik, utandım.
Evet şimdi istediğim servise istek yaptı. Çok teşekkür ederim.

Simule ettiğimde çalışıyor, fakat gerçek app cihazda kuruluyken kendiliğinden yenilendiğini farkedemedim emin olmanın bir yolu var mı ?

17, Şubat, 2017 yasin tarafından yorumlandı

NSlog ile konsol çıktısı alabilirsin mesela.

17, Şubat, 2017 huseyinvural tarafından yorumlandı

Şöyle simüle ettiğimde ilgili alan tetiklensede, gerçek bir cihazda çalıştırıp bekliyorum ve consolu izliyorum çalışcak mı diye, ama bir hareketlilik olmuyor. Interval değerini hem minimum hemde 30 saniye olarak verdim ama sonuç alamadım.

Bende acaba developer ortamında mı çalışmıyor sürekli simüle etmek mi gerekiyor diye düşündüm.

17, Şubat, 2017 yasin tarafından yorumlandı

30 saniye olmaz zaten. oraya girdiğin değer sadece tavsiye niteliğinde. Onu da pek dikkate almıyor sistem zaten.
bir değer belirtmek yerine "UIApplicationBackgroundFetchIntervalMinimum" key'ini gir. ortalama 15~20 dakka beklemen gerekebilir.

17, Şubat, 2017 huseyinvural tarafından yorumlandı

Evet tavsiye niteliğinde olduğunu hatırlıyorum ama ben en azından bi beş dakikada çalışır diye bekliyordum.

Çok teşekkürler, simüle etmeden çalışıyorsa dağıtımda da çalıştığını kabul edeceğim.

...