क्या Info.plist में UIBackgroundModes को जोड़ने के लिए रिमोट पुश नोटिफिकेशन की आवश्यकता है?


104

मैंने दूरस्थ पुश सूचनाएँ एकीकृत की हैं, लेकिन मुझे यह चेतावनी मिल रही है:

didReceiveRemoteNotification:fetchCompletionHandler:], लेकिन आपको अभी भी remote-notificationअपने समर्थित UIBackgroundModes की सूची में " " जोड़ना होगा Info.plist

मेरा Xcode संस्करण 8.3.1 है। मैं वास्तव में इसे जोड़ना चाहता हूं Info.plist। मैंने कुछ ट्यूटोरियल्स का भी अनुसरण किया है लेकिन उन्होंने इसका उल्लेख नहीं किया है। मुझे वास्तव में क्या करना चाहिए?

जवाबों:


245

हां, आपको पृष्ठभूमि अपडेट के लिए दूरस्थ सूचनाओं का उपयोग करने में सक्षम होने के लिए पृष्ठभूमि मोड / रिमोट सूचनाओं को सक्षम करना चाहिए।

ऐसा करने का सबसे आसान तरीका परियोजना सेटिंग्स के माध्यम से है। लक्ष्य पर नेविगेट करें -> आपका ऐप -> क्षमताएं -> पृष्ठभूमि मोड और दूरस्थ सूचनाओं की जांच करें । यह स्वचालित रूप से आवश्यक सेटिंग्स को सक्षम करेगा।

प्रोजेक्ट सेटिंग्स में पृष्ठभूमि मोड ड्रॉपडाउन सूची


3
मैंने पहले ही उस क्षेत्र की जाँच कर ली है लेकिन अभी भी वही त्रुटि हो रही है।
अनुज

अनुज नीचे मेरा जवाब देखें
यहोशू क्लेतुस

1
मैं इस जवाब से सहमत नहीं हूं। यदि आप एक पृष्ठभूमि अद्यतन करने के लिए एक दूरस्थ अधिसूचना का उपयोग कर रहे हैं, तो आपको केवल पृष्ठभूमि मोड -> दूरस्थ सूचनाएं सक्षम करनी चाहिए। कृपया डॉक्स का संदर्भ लें यहां बैकग्राउंड अपडेट नोटिफिकेशन कॉन्फ़िगर करना
jzeferino

1
@jzeferino नोटिस के लिए धन्यवाद, मैंने अपने उत्तर में कुछ स्पष्टीकरण जोड़ा है। ध्यान दें कि मूल प्रश्न application(_:didReceiveRemoteNotification:fetchCompletionHandler:)फ़ंक्शन के बारे में था , जिसका उपयोग डेटा लाने से निपटने के लिए किया जाता है।
तमसेन सेंगेल

यह बहुत अच्छा है, लेकिन इस सवाल का जवाब देता है कि क्या आपको पृष्ठभूमि अपडेट के लिए क्षमता की आवश्यकता है, जो आप निश्चित रूप से करते हैं। मैंने इस बारे में एक उत्तर पोस्ट किया है कि क्या आपको पृष्ठभूमि सूचनाओं को केवल पुश नोटिफिकेशन (स्पॉइलर, आप नहीं) के लिए सेट करने की आवश्यकता है।
मोब

30

आप आवश्यक जानकारी भी संपादित कर सकते हैं। विशेषज्ञ (स्रोत कोड खोलें) और पेस्ट करें:

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

7
बैकग्राउंड मोड्स में रिमोट नोटिफिकेशन
Vinoth Vino

1
मेरे लिए नहीं: संस्करण 11.4.1 (11E503a)
paiego

4

वास्तव में, आपको दूरस्थ सूचना का उपयोग करने के लिए 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 :) विधि, जिसे केवल तभी कहा जाता है जब आपका ऐप अग्रभूमि में चल रहा हो, सिस्टम इस पद्धति को तब कॉल करता है जब आपका ऐप अग्रभूमि या पृष्ठभूमि में चल रहा हो।

इसलिए, यदि आपको पुश सूचनाओं की आवश्यकता है, तो तय करें कि क्या आपको पृष्ठभूमि में चलने की आवश्यकता है - केवल अगर आपको दोनों की आवश्यकता है तो आपको चेतावनी द्वारा सुझाए गए तरीके को लागू करना चाहिए।


3

क्षमताओं में रिमोट नोटिफिकेशन बैकग्राउंड मोड सेट करने के बाद भी मेरे साथ ऐसा हुआ। मुद्दा यह था कि मेरे पास तीन लक्ष्य थे, एक उत्पादन के लिए, एक क्यूए के लिए और एक मंचन के लिए। मुझे तीनों टारगेट में रिमोट नोटिफिकेशन सेट करना था और यह चेतावनी तय कर दी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.