Uzaktan push bildirimleri Info.plist'e UIBackgroundModes eklemeyi gerektirir mi?


105

Uzaktan push bildirimlerini entegre ettim ancak şu uyarıyı alıyorum:

didReceiveRemoteNotification:fetchCompletionHandler:], ancak yine remote-notificationde, ’nizdeki desteklenen’ UIBackgroundModeleriniz listesine " " eklemeniz gerekir Info.plist.

Xcode sürümüm 8.3.1. Bunu gerçekten eklemek istiyorum Info.plist. Bazı dersleri de takip ettim ama onlar da bundan bahsetmediler. Gerçekten ne yapmalıyım?

Yanıtlar:


247

Evet, arka plan güncellemeleri için uzaktan bildirimleri kullanabilmek için Arka Plan Modlarını / Uzaktan bildirimleri etkinleştirmelisiniz.

Bunu yapmanın en kolay yolu proje ayarlarıdır. Gezinin Hedefler -> Sizin App -> Yetenekleri -> Arkaplan Modları ve kontrol Uzaktan bildirimleri . Bu, gerekli ayarları otomatik olarak etkinleştirecektir.

Proje Ayarlarında Arka Plan Modları açılır listesi


3
Bu alanı zaten kontrol ettim ama hala aynı hatayı alıyorum.
Anuj

Anuj aşağıdaki
cevabıma

1
Bu cevaba katılmıyorum. Arka planda güncelleme yapmak için uzaktan bildirim kullanıyorsanız, yalnızca Arka Plan modlarını -> Uzaktan bildirimleri etkinleştirmelisiniz. Lütfen buradaki belgelere bakın Bir Arka Plan Güncelleme Bildirimini Yapılandırma
jzeferino

1
@jzeferino Bildirim için teşekkürler, cevabıma bazı açıklamalar ekledim. Asıl sorunun, application(_:didReceiveRemoteNotification:fetchCompletionHandler:)veri getirmeyi ele almak için kullanılan işlevle ilgili olduğunu unutmayın .
Tamás Sengel

Bu harika, ancak arka plan güncellemeleri için özelliğe ihtiyacınız olup olmadığı sorusuna cevap veriyor, tabii ki bunu yapıyorsunuz. Arka plan modlarını sadece push bildirimleri için ayarlamanız gerekip gerekmediğine dair bir cevap gönderdim (spoiler, siz değilsiniz).
mobob

30

Ayrıca gerekli info.plist'i düzenleyebilir (Farklı Aç -> Kaynak Kodu) ve yapıştırabilirsiniz:

<dict>
<key>UIBackgroundModes</key>
    <array>
        <string>remote-notification</string>
    </array>

7
Artık Arka Plan Modlarında Uzaktan Bildirimler kontrol edilirken Xcode tarafından otomatik olarak ekleniyor
Vinoth Vino

2
Benim için değil: Sürüm 11.4.1 (11E503a)
paiego

4

Aslında, yalnızca uzak bildirimleri kullanmak için UIBackgroundModes'u .plist'e eklemenize gerek yoktur.

Mirasçıları biraz ayırdığımı biliyorum (diğer cevap çoğunlukla harika ve belki de iOS 11'den itibaren yeni bir şey var), ancak soru arka plan güncellemelerini gerektiren push bildirimlerine atıfta bulunuyor ve bunlar değil.

Buradaki ayrım, AppDelegate'te bildirimleri kabul eden iki farklı yöntem olmasıdır;

Bu, UIBackgroundModes kullanmanızı gerektirmez:

optional func userNotificationCenter(_ center: UNUserNotificationCenter, 
                         willPresent notification: UNNotification, 
               withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)

Yukarıdakiler, iOS 11'den itibaren kullanımdan kaldırılanların yerini alır:

optional func application(_ application: UIApplication, 
didReceiveRemoteNotification userInfo: [AnyHashable : Any])

Ve bu, arka plan modları yeteneği gerektirir:

optional func application(_ application: UIApplication, 
didReceiveRemoteNotification userInfo: [AnyHashable : Any], 
   fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

Buradaki kilit nokta, eski olanın (ve değiştirildiği kullanımdan kaldırılanın) yalnızca uygulama ön plandayken çalıştığıdır. İkincisi, uygulama ön plandaysa VEYA arka plandaysa çalışacaktır. Bkz spec bu özel külçe için:

Uygulamanıza gelen uzaktan bildirimleri işlemek için bu yöntemi kullanın. Yalnızca uygulamanız ön planda çalışırken çağrılan uygulamanın (_: didReceiveRemoteNotification :) yönteminin aksine, sistem, uygulamanız ön planda veya arka planda çalışırken bu yöntemi çağırır.

Bu nedenle, push bildirimlerine ihtiyacınız varsa, arka planda çalıştırmanız gerekip gerekmediğine karar verin - yalnızca her ikisine de ihtiyacınız varsa, uyarı tarafından önerilen yöntemi uygulamalısınız.


3

Yeteneklerde uzaktan bildirim arka plan modunu ayarladıktan sonra bile başıma geldi. Sorun şuydu: Biri üretim, biri qa ve diğeri sahneleme için üç hedefim vardı. Üç hedefin hepsinde uzaktan bildirimler ayarlamak zorunda kaldım ve bu uyarıyı düzeltti.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.