2015-01-20 3 views
16

ऐसा लगता है कि मैं UIBackgroundFetchResultNewData या UIBackgroundFetchResultNoData को निष्पादित करने से निष्पादित करता हूं FetchWithCompletionHandler, यह मेरे ऐप के लिए सभी पिछली सूचनाओं (स्थानीय या पुश) को साफ़ करता है। यह मेरे लिए स्वीकार्य नहीं है।आईओएस पृष्ठभूमि लाने पिछले अधिसूचनाओं को साफ़ करता है

कोई भी जानता है कि मैं कैसे प्राप्त करूं और पिछली अधिसूचनाओं को साफ़ नहीं कर सकता (गायब हो गया)?

+0

didFinishLaunchingWithOptions FYI मैं एक 500 बिंदु इनाम पर डाल application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

  • में प्राप्त अधिसूचना वस्तु जाँच हो रही है यह भी, इस मुद्दे को देखकर, मुझे लगता है कि मैं सभी अधिसूचनाओं को स्वीकार कर सकता हूं चुप लोगों के रूप में और फिर स्थानीय अधिसूचनाओं को फिर से लॉन्च करें लेकिन यह अल्ट्रा अजीब लगता है। –

  • +0

    @ सैमसाफ्रॉन क्या आप कृपया अपने पर्यावरण को स्पष्ट कर सकते हैं? आईओएस संस्करण, डिवाइस/सिम्युलेटर, एक्सकोड या नहीं, आदि से नकली fetches के साथ काम करता है (परीक्षण परियोजना में इस बग को पुन: उत्पन्न नहीं कर सकता)। –

    +0

    @RomanErmolov मुझे लगता है कि आप यहां हैं ... मैं पूरी तरह से इस तथ्य को याद करता हूं कि 0 को बैज सेट करने से सभी अधिसूचनाएं निकल जाएंगी, मुझे संदेह है कि ओपी के साथ क्या हुआ और मेरे साथ क्या हुआ। –

    उत्तर

    5

    मेरा अनुमान है कि आपके पास पृष्ठभूमि बैच था जो आपके बैज नंबर को 0 पर सेट कर रहा था, अगर ऐसा होता है तो आपकी सभी अधिसूचनाएं साफ़ हो जाती हैं।

    3

    स्रोत: Apple's AppDelegate API Reference

    application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 
    

    एप्लिकेशन कि एक दूरस्थ अधिसूचना पहुंचे कि इंगित करता है प्राप्त किया जा करने के लिए डेटा उपलब्ध नहीं है कहता है। अपने ऐप के लिए आने वाली दूरस्थ सूचनाओं को संसाधित करने के लिए इस विधि का उपयोग करें।

    application(_:didReceiveRemoteNotification:) 
    

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

    नोट: आप नीचे दिए गए मामलों 0. टेस्ट करने के लिए सुनिश्चित करें कि अनुप्रयोग अनुप्रयोग की बिल्ला नंबर सेटिंग्स से पहले राज्य के लिए जाँच कर रहा है बनाने की जरूरत है:,

    • आवेदन चल रहा है एक सूचना प्राप्त

    • आवेदन समाप्त, एक अधिसूचना

    • ऐप्लिकेशन लॉन्च सीधे एप्लिकेशन आइकन से प्राप्त करता है

    • अधिसूचना से
    • ऐप्लिकेशन लॉन्च

    प्राप्त अंतर को जानने का के बीच 3 से नीचे का दरवाजा खटखटाया आपके उपयोग के मामले में आवश्यक है।

    1. जाँच अधिसूचना वस्तु application(_:didReceiveRemoteNotification:)

    2. में प्राप्त जाँच हो रही है के लिए UIApplicationLaunchOptionsRemoteNotificationKey

    संबंधित मुद्दे