2010-07-23 16 views
10

में कॉल स्टेटस का पता लगाना मैं जानना चाहता हूं कि क्या उपयोगकर्ता यह पता लगाने की संभावना है कि उपयोगकर्ता वर्तमान में पृष्ठभूमि में मौजूद किसी एप्लिकेशन से कॉल कर रहा है या नहीं।आईओएस 4

या, मेरे ऐप से कॉल शुरू होने पर कॉल समाप्त होने पर अधिसूचना प्राप्त होती है।

या उससे भी अधिक - क्या यह पता लगाने की संभावना है कि कौन सा ऐप अग्रभूमि में है?
मुझे विश्वास नहीं है कि यह संभव है लेकिन मुझे कोशिश करनी थी ... ;-)

किसी भी जानकारी की सराहना की जाएगी।

धन्यवाद।

+0

आपका मतलब किसी अन्य ऐप में * फोन * कॉल में है? पृष्ठभूमि में चल रहे स्काइप में एक कॉल की तरह? – progrmr

+0

कृपया देखें http://stackoverflow.com/questions/3319805/detecting-call-state-in-ios4 –

उत्तर

20

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

उदाहरण के लिए:

CTCallCenter *callCenter = [[CTCallCenter alloc] init]; 
callCenter.callEventHandler=^(CTCall* call){ 
    if (call.callState == CTCallStateDisconnected) 
    { 
     //handle disconnect 
    } 
}; 

संपादित करें: अपने प्रश्न को फिर से पढ़ना, आप इन घटनाओं जब तुम निलंबित कर रहे हैं, सही करना चाहते हैं? मुझे नहीं लगता कि यह संभव है।

docs से:

यदि आपका आवेदन जब एक कॉल घटना घटती है सक्रिय है, सिस्टम तुरंत अपने हैंडलर को घटना डिस्पैचिज। हालांकि, आपका आवेदन निलंबित होने पर कॉल ईवेंट भी हो सकते हैं। हालांकि इसे निलंबित कर दिया गया है, आपके आवेदन को कॉल इवेंट प्राप्त नहीं होते हैं। जब आपका एप्लिकेशन सक्रिय स्थिति को फिर से शुरू करता है, तो उसे प्रत्येक कॉल के लिए एकल कॉल ईवेंट प्राप्त होता है जो राज्य बदलता है-इससे कोई फर्क नहीं पड़ता कि आपके एप्लिकेशन को निलंबित करते समय कॉल कितने राज्य को प्रभावित करता है। सक्रिय ऑपरेशन पर लौटने पर आपके आवेदन पर आपके हैंडलर को भेजा गया एकल कॉल ईवेंट उस समय कॉल के राज्य का वर्णन करता है।

+0

धन्यवाद। लगता है कि कोर टेलीफोनी मेरे लक्ष्य की सेवा कर सकता है। क्या आप जानते हैं कि मैं अपने ऐप को पृष्ठभूमि से आगे ला सकता हूं? –

+1

नहीं, आप अपने आप से अग्रभूमि में नहीं जा सकते हैं। और, आप जो घटनाएं प्राप्त करते हैं उसमें आप सीमित रहेंगे। सबसे अच्छा आप कर सकते हैं राज्य संक्रमण अधिसूचनाओं के लिए सुनो और चीजों को उचित तरीके से संभाल लें। सी एफ http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html – Don

+0

धन्यवाद। मैं कुछ आईओएस 3 परियोजनाओं के साथ फंस गया हूं और सभी आईओएस 4 नवाचारों को जानने के लिए कोई समय नहीं है ... –

8

यदि आप एप्लिकेशन पृष्ठभूमि में चल रहा है और एक AVAudioSession जा रहा है, तो आपको यह बताने कि आपके AVAudioSession जब एक फोन आया है बाधित कर दिया गया AVAudioSessionDelegate पर कॉलबैक प्राप्त होगा है। AFAIK वह सारी जानकारी है जो आपको मिलती है।

+0

धन्यवाद। बीटीडब्लू का मतलब यह है कि मैं फ़ोन कॉल के दौरान ध्वनि/संगीत नहीं चला सकता? भले ही मेरा ऐप सामने है (और फोन ऐप पृष्ठभूमि में है)? –

+2

मुझे अपने ऐप (पृष्ठभूमि में) फोन कॉल के दौरान ध्वनि बजाने में समस्या थी। मैंने AVAudioSessionDelegate कॉलबैक का उपयोग यह ट्रैक रखने के लिए किया था कि यह बाधित हो गया है या नहीं, और अगर ऐप बाधित हो जाता है तो ऐप बजाना बंद कर देता है। – progrmr

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