खोज…


बैकग्राउंड से भी आपके ऐप से इंटरसेप्टिंग कॉल

Apple प्रलेखन से:

वर्तमान सेल्युलर कॉल की सूची प्राप्त करने के लिए CTCCCCenter वर्ग का उपयोग करें, और एक डायल करने वाले राज्य से एक कनेक्टेड राज्य जैसे कॉल के लिए राज्य परिवर्तनों का जवाब देने के लिए। ऐसे राज्य परिवर्तनों को सेलुलर कॉल इवेंट के रूप में जाना जाता है।

CTCallCenter का उद्देश्य उपयोगकर्ता को सबसे अच्छा अनुभव देने के लिए एक कॉल के दौरान डेवलपर को अपने ऐप स्टेट को पॉज करने का अवसर देना है।

उद्देश्य सी:

सबसे पहले, हम उस वर्ग के अंदर एक नए वर्ग के सदस्य को परिभाषित करेंगे जिसे हम अंतरविरोधों को संभालना चाहते हैं:

@property (atomic, strong) CTCallCenter *callCenter;

हमारी कक्षा के अंदर (निर्माता) हम अपने वर्ग के सदस्य के लिए नई मेमोरी आवंटित करेंगे:

[self setCallCenter:[CTCallCenter new]];

बाद में, हम अपनी नई विधि लागू करेंगे जो वास्तव में अवरोधों को संभालती है:

- (void)registerPhoneCallListener
{
[[self callCenter] setCallEventHandler:^(CTCall * _Nonnull call) {
    NSLog(@"CallEventHandler called - interception in progress");

     if ([call.callState isEqualToString: CTCallStateConnected])
     {
         NSLog(@"Connected");
     }
     else if ([call.callState isEqualToString: CTCallStateDialing])
     {
         NSLog(@"Dialing");
     }
     else if ([call.callState isEqualToString: CTCallStateDisconnected])
     {
         NSLog(@"Disconnected");

     } else if ([call.callState isEqualToString: CTCallStateIncoming])
     {
         NSLog(@"Incomming");
     }
 }];
}

यही है, अगर उपयोगकर्ता आपके ऐप का उपयोग करेगा और आपको एक फोन कॉल प्राप्त होगा, जो आप इस कॉल को रोक सकते हैं और अपने ऐप को एक बचत स्थिति के लिए संभाल सकते हैं।

यह ध्यान देने योग्य है कि 4 कॉल स्टेट्स हैं जिन्हें आप इंटरसेप्ट कर सकते हैं:

CTCallStateDialing
CTCallStateIncoming
CTCallStateConnected
CTCallStateDisconnected

स्विफ्ट:

संबंधित वर्ग में अपने वर्ग के सदस्य को परिभाषित करें और इसे परिभाषित करें:

    self.callCenter = CTCallCenter()
    self.callCenter.callEventHandler = { call in
        //  Handle your interception
        if call.callState == CTCallStateConnected
        {
        }
    }

अगर आपका ऐप बैकग्राउंड में है तो क्या होगा और ऐप के बैकग्राउंड में होने पर आपको कॉल को इंटरसेप्ट करना होगा?

उदाहरण के लिए, यदि आप एक उद्यम ऐप विकसित करते हैं, तो आप मूल रूप से क्षमताओं टैब में केवल 2 क्षमताएं (वीओआइपी और पृष्ठभूमि लाने के लिए) जोड़ सकते हैं:

आपकी परियोजना का लक्ष्य -> क्षमताएं -> पृष्ठभूमि मोड -> IP और पृष्ठभूमि पर ध्वनि प्राप्त करना

कॉलकिट - आईओएस 10

//Header File

<CallKit/CXCallObserver.h>

CXCallObserver *callObserver = [[CXCallObserver alloc] init];

// If queue is nil, then callbacks will be performed on main queue

[callObserver setDelegate:self queue:nil];

// Don't forget to store reference to callObserver, to prevent it from being released

self.callObserver = callObserver;

// get call status
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {
    if (call.hasConnected) {
        // perform necessary actions
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow