2016-08-03 9 views
7

पृष्ठभूमि में रहते हुए लाल रिकॉर्डिंग बार प्रदर्शित करने के लिए यहां बहुत सारे प्रश्न हैं। यह पूरी तरह से स्पष्ट है कि मुझे इसके लिए AVAudioSession श्रेणी AVAudioSessionCategoryPlayAndRecord का उपयोग करना चाहिए। मेरा सवाल यह है कि मेरे ऐप में एक सक्रिय वीओआईपी कॉल होने पर मैं एक अग्रभूमि ऐप में एक हरे रंग की इन-कॉल बार (या कम से कम लाल बार) कैसे प्रदर्शित कर सकता हूं? तो मैं Whatsapp या स्काइप करता है, जैसे स्टेटसबार क्षेत्र को टैप करने के लिए यूआई कॉल पर वापस आ सकता हूं।डिवाइस पर अग्रभूमि ऐप में डबल ऊंचाई हरे रंग की स्थिति पट्टी (इन-कॉल) कैसे दिखाएं?

क्या मैं पहले से ही की कोशिश की है:

  • voip और audio मोड Info.plist + setCategory:AVAudioSessionCategoryPlayAndRecord + setActive सुझाव in this SO answer (मुझे एक लाल स्थिति बार देता है जब पृष्ठभूमि जा रहा है, लेकिन कुछ भी नहीं में UIBackgroundModes कुंजी में जबकि अग्रभूमि में)
  • पिछला + AVAudioSession + setMode:AVAudioSessionModeVoiceChat - काम नहीं किया
  • pjsip स्रोतों में सॉकेट से kCFStreamNetworkServiceTypeVoIP ध्वज सेट करें और फिर कंपाइल यह - मदद नहीं की। इसके अलावा, के बाद से पदावनत आईओएस 8.
  • एक अलग सॉकेट बनाया गया, InputStream/outputStream के लिए वीओआईपी ध्वज सेट: [self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType] (here से नमूना कोड ले लिया)

कॉल के लिए pjsip का उपयोग करना। मैं सभी UI को नीचे ले जाने, स्टेटसबार ऊंचाई बढ़ाने के लिए और क्या प्रयास कर सकता हूं? क्या ऐसा करने के लिए कोई मानक तरीका है, या मुझे रूट UIWindow का आकार बदलकर और स्टेटसबार के तहत एक और हरा UIWindow सेट करके इसे स्वयं ही हैक करना चाहिए?


संपादित: के बाद से कोई जवाब नहीं एक मानक तरीका है कि, स्वीकार किए जाते हैं @ रोमन-Ermolov जवाब करने के लिए पाया जाता है। जो लोग एक जवाब के लिए खोज करेंगे के लिए मैं इसे खुद के लिए कई विकल्प का सुझाव हो सकता है:

  1. Apple's iAdSuite with Storyboards example में, कंटेनर के अंदर अपनी जड़ ViewController लपेटें की तरह। उदाहरण के लिए मेरे sample project पर एक नज़र डालें। संभवतः उस बार को बनाने का सबसे अच्छा तरीका।
  2. हैक UINavigationBar ऊंचाई (this दृष्टिकोण देखें) - परिदृश्य के लिए अभी तक काम नहीं करता है, लेकिन शायद अपने मुख्य UIWindow के फ्रेम को हल किया जा सकता है
  3. नियंत्रण अपने आप को, वांछित सामग्री के साथ स्थिति बार के तहत एक और UIWindow जगह।
+0

मेरा उत्तर सहायक था या आप कार्यान्वयन विवरण के लिए देख रहे हो सकता है? यदि हां, तो क्या आप अपनी आवश्यकताओं के बारे में अतिरिक्त जानकारी प्रदान कर सकते हैं? –

+0

यह बहुत उपयोगी था, धन्यवाद। मुझे अभी भी उम्मीद है कि इन-कॉल बार चालू करने का कोई तरीका है, यदि कोई है। अगर कोई इसे नहीं ढूंढता है, तो मैं आपका जवाब स्वीकार करूंगा –

उत्तर

5

मैं दोनों क्षुधा की एक जांच (WhatsApp & स्काइप) बना दिया है और सीखा है कि वे इस कार्यक्षमता को प्राप्त करने के लिए अपने स्वयं UIView इस्तेमाल किया है।

यह स्काइप है: Skype status bar

यह WhatsApp (प्रकट वास्तविक स्नैपशॉट नहीं मिल सकता है, लेकिन यह मूल विचार पहुंचाता) है: यह एक UIView जो शीर्ष पर शुरू होता है enter image description here

दोनों ऐप्लिकेशन में स्क्रीन के प्रारूप और प्रारूप आउटपुट टेक्स्ट/हैंडल स्पर्श के लिए कई विधियों।

आईओएस में 10 ऐप्पल ने CallKit.framework पेश किया, लेकिन ऐसा लगता है कि इसमें ऐसी कार्यक्षमता भी नहीं है, इसलिए इसे करने का एकमात्र तरीका - इसे स्वयं करें।

1

रोमन Ermolov के जवाब में बताया कि कुछ एप्लिकेशन को इस कार्यशीलता के लिए अपने स्वयं के UIView उपयोग करें, लेकिन स्पष्ट नहीं होता है कि कैसे। जिस तरह से मैं इसे देखता हूं, आपके पास कुछ विकल्प हैं।

आप (और कवर) के शीर्ष पर दृश्य बिछाने के लिए वर्तमान दृश्य नियंत्रक चाहते हैं, आप एक एक UILabelUIWindow साथ UIView या अपना स्वयं का बना सकते हैं और है कि जोड़ने के लिए अपने 'keyWindow आवेदनों की एक subview के रूप सकता है।

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

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