Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
847 kez görüntülendi
ios development kategorisinde tarafından

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
tarafından
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.

tarafından
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ı ?

tarafından

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

tarafından

Şö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.

tarafından

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.

tarafından

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.

...