2009-12-13 8 views
9

का पता लगाना मैं यह पता लगा सकता हूं कि आईफोन आईफोन चला गया है और एप्लिकेशन WillResignActive और applicationDidBecomeActive का उपयोग कर नींद से वापस आ गया है। लेकिन मैं कैसे पता लगा सकता हूं कि यह किस तरह का बाधा था। मैं एक ऑडियो प्लेयर एप्लिकेशन बना रहा हूं, और जब आईफोन सो जाता है तो ऑडियो बजाना आवश्यक है (जो मुझे पता है कि कैसे करना है)। लेकिन जब संदेश, अलार्म या कम बैटरी बाधा उत्पन्न होती है तो मुझे ऑडियो को बाधित करने की आवश्यकता होती है। घटना खत्म हो जाने पर भी मुझे ऑडियो फिर से शुरू करने की आवश्यकता है।आईफोन के प्रकार को

तो मैं इन विभिन्न इंटरप्ट्स के बीच अंतर कैसे कर सकता हूं।

उत्तर

5

वह जानकारी शायद आपके ऐप के लिए उपलब्ध नहीं है, लेकिन यहां कुछ चीजों को आजमाने की कोशिश है।

  1. applicationWillResignActive: में, अगर कोई संकेत देखते हैं देखने के लिए NSNotification की वस्तु और userInfo गुण की जाँच करें।

  2. रजिस्टर सभी सूचनाएं डिफ़ॉल्ट सूचना केंद्र के लिए तैनात प्राप्त करने के लिए:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveNotification:) name:nil object:nil]; 
    

जब कुछ भी पोस्ट किया जाता है आपका विधि बुलाया जाएगा। अधिसूचना ऑब्जेक्ट और userInfo शब्दकोश लॉग करें और शायद आपको एक उपयोगी अधिसूचना पोस्ट की जा रही है। यदि आपको कोई मिलता है, तो आप इसके लिए पंजीकरण कर सकते हैं।

  1. यह सबसे हैकी है, लेकिन हो सकता है कि आप उस चेतावनी तक पहुंच प्राप्त कर सकें जो प्रदर्शित होता है यदि यह संदेश या बैटरी चेतावनी है। आपके ऐप के मुख्य UIWindow पर UIWindow में अलर्ट प्रदर्शित होते हैं। आप UIWindowDidBecomeVisibleNotification के लिए पंजीकरण कर सकते हैं, फिर यह देखने के लिए विंडो के सबव्यू देखें कि क्या आपको कोई अलर्ट या कुछ अन्य उपयोगी सुराग मिल सकता है या नहीं।

उपर्युक्त सभी विधियां काम करने के लिए अनियंत्रित व्यवहार पर निर्भर रहेंगी, और संभवतः आपके सबमिशन को ऐप स्टोर से खारिज कर दिया जा सकता है। उनमें से कोई भी निजी विधि कॉल नहीं करता है, हालांकि आप तर्क दे सकते हैं कि अनधिकृत अधिसूचना नाम को निजी एपीआई के रूप में गिना जाता है। अंत में, ऐप्पल की राय केवल एक ही है जो मायने रखती है।

व्यक्तिगत रूप से, मैं यह कोशिश करता हूं कि यह सुनिश्चित कर लें कि कोड बदलता है और जब सिस्टम बदलता है तो कोड गहराई से विफल रहता है।

+1

ए और बी की कोशिश की, लेकिन यह सब खाली हो गया। Userinfo में कोई विवरण या कुंजी-मूल्य जोड़े नहीं। ऑब्जेक्ट में कुछ भी नहीं। यह अजीब बात है कि कैसे इस तरह की सरल कार्यक्षमता में सेब याद किया। सी कोशिश नहीं की, क्योंकि यह भी मेरे लिए बहुत हैकी लगता है। – Prashant

+1

आप सी पर पुनर्विचार करना चाहेंगे: यदि आप बस मानते हैं कि * आपके ऐप पर प्रदर्शित होने वाली किसी भी * चेतावनी संगीत को रोकने का कारण है, तो आप कुछ भी अनियंत्रित नहीं करेंगे। यह केवल हास्यास्पद पाठ को पढ़ने के लिए दृश्य पदानुक्रम के चारों ओर पोकिंग है जो हैकी होगा। – benzado

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