Suche…


Fangen Sie Anrufe von Ihrer App auch aus dem Hintergrund ab

Aus der Apple-Dokumentation:

Verwenden Sie die CTCallCenter-Klasse, um eine Liste der aktuellen Mobiltelefonanrufe abzurufen und auf Statusänderungen für Anrufe zu reagieren, z. B. von einem Wählzustand in einen verbundenen Zustand. Solche Zustandsänderungen werden als zellulare Anrufereignisse bezeichnet.

Der Zweck von CTCallCenter besteht darin, dem Entwickler die Möglichkeit zu geben, den Status seiner App während eines Anrufs zu unterbrechen, um dem Benutzer die beste Benutzererfahrung zu bieten.

Ziel c:

Zuerst definieren wir einen neuen Klassenmitglied innerhalb der Klasse, mit der wir die Interceptions behandeln möchten:

@property (atomic, strong) CTCallCenter *callCenter;

Innerhalb unserer Klasse init (Konstruktor) werden wir unserem Klassenmitglied neuen Speicher zuweisen:

[self setCallCenter:[CTCallCenter new]];

Anschließend rufen wir unsere neue Methode auf, die die Interceptions tatsächlich behandelt:

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

Wenn der Benutzer Ihre App verwendet und einen Anruf erhält, können Sie diesen Anruf unterbrechen und Ihre App für einen Sicherungsstatus bearbeiten.

Es ist erwähnenswert, dass es 4 Anrufzustände gibt, die Sie abfangen können:

CTCallStateDialing
CTCallStateIncoming
CTCallStateConnected
CTCallStateDisconnected

Schnell:

Definieren Sie Ihren Teilnehmer in der betreffenden Klasse und definieren Sie ihn:

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

Was passiert, wenn sich Ihre App im Hintergrund befindet und Sie Anrufe abfangen müssen, während sich die App im Hintergrund befindet?

Wenn Sie beispielsweise eine Unternehmensanwendung entwickeln , können Sie auf der Registerkarte "Funktionen" im Wesentlichen nur zwei Funktionen (VOIP und Hintergrundabruf) hinzufügen:

Ihr Projektziel -> Funktionen -> Hintergrundmodi -> Markieren Sie Voice over IP und Hintergrundabruf

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow