वास्तव में, आपको दूरस्थ सूचना का उपयोग करने के लिए UIBackgroundModes को .plist में जोड़ने की आवश्यकता नहीं है।
मुझे पता है कि मैं वारिस को थोड़ा अलग कर रहा हूं (दूसरा जवाब ज्यादातर शानदार है, और शायद आईओएस 11 के रूप में कुछ नया है), लेकिन सवाल पृष्ठभूमि अपडेट की आवश्यकता वाले नोटिफिकेशन को पुश करने के लिए संदर्भित करता है, और वे नहीं करते हैं।
यहाँ भेद यह है कि दो अलग-अलग विधियाँ हैं जो AppDelegate पर अधिसूचनाएँ स्वीकार करती हैं;
यह आपको UIBackgroundModes का उपयोग करने की आवश्यकता नहीं है:
optional func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
उपरोक्त को iOS 11 के रूप में दर्शाया गया है:
optional func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any])
और यह एक पृष्ठभूमि मोड क्षमता की आवश्यकता है:
optional func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
यहां महत्वपूर्ण बात यह है कि पूर्व एक (और इसे हटा दिया गया है) केवल तभी चलता है जब ऐप अग्रभूमि में होता है। यदि ऐप अग्रभूमि या पृष्ठभूमि में है, तो बाद वाला भाग चलेगा। इस विशिष्ट डली के लिए युक्ति देखें :
अपने ऐप के लिए आने वाले दूरस्थ सूचनाओं को संसाधित करने के लिए इस पद्धति का उपयोग करें। एप्लिकेशन के विपरीत (_: didReceiveRemoteNotification :) विधि, जिसे केवल तभी कहा जाता है जब आपका ऐप अग्रभूमि में चल रहा हो, सिस्टम इस पद्धति को तब कॉल करता है जब आपका ऐप अग्रभूमि या पृष्ठभूमि में चल रहा हो।
इसलिए, यदि आपको पुश सूचनाओं की आवश्यकता है, तो तय करें कि क्या आपको पृष्ठभूमि में चलने की आवश्यकता है - केवल अगर आपको दोनों की आवश्यकता है तो आपको चेतावनी द्वारा सुझाए गए तरीके को लागू करना चाहिए।