Zoeken…


Oproepen van uw app onderscheppen, zelfs vanaf de achtergrond

Uit Apple-documentatie:

Gebruik de klasse CTCallCenter om een lijst met huidige mobiele oproepen te verkrijgen en om te reageren op statuswijzigingen voor oproepen, zoals van een kiesstatus naar een verbonden status. Dergelijke statuswijzigingen staan bekend als cellulaire oproepgebeurtenissen.

Het doel van CTCallCenter is om de ontwikkelaar de mogelijkheid te bieden zijn app-status te pauzeren tijdens een oproep om de gebruiker de beste ervaring te bieden.

Doelstelling C:

Eerst zullen we een nieuw lid van de klas definiëren binnen de klas die we willen afhandelen:

@property (atomic, strong) CTCallCenter *callCenter;

Binnen onze klasse init (constructor) zullen we nieuw geheugen toewijzen voor ons klaslid:

[self setCallCenter:[CTCallCenter new]];

Daarna zullen we onze nieuwe methode gebruiken die daadwerkelijk de onderscheppingen afhandelt:

- (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");
     }
 }];
}

Dat is alles, als de gebruiker uw app gebruikt en een telefoontje ontvangt, kunt u dit gesprek onderscheppen en uw app afhandelen voor een veilige status.

Het is vermeldenswaard dat er vier oproepstatussen zijn die u kunt onderscheppen:

CTCallStateDialing
CTCallStateIncoming
CTCallStateConnected
CTCallStateDisconnected

Snel:

Definieer uw klaslid bij de relevante klasse en definieer deze:

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

Wat gebeurt er als uw app op de achtergrond staat en u oproepen moet onderscheppen terwijl de app op de achtergrond is?

Als u bijvoorbeeld een enterprise- app ontwikkelt, kunt u in principe gewoon 2 mogelijkheden (VOIP en achtergrond ophalen) toevoegen op het tabblad Mogelijkheden:

Uw projectdoel -> Mogelijkheden -> Achtergrondmodi -> markeer Voice over IP & Achtergrond ophalen

CallKit - iOS 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow