Sök…


Avlyssna samtal från din app även från bakgrunden

Från Apple-dokumentation:

Använd klassen CTCallCenter för att få en lista med aktuella mobilsamtal och för att svara på tillståndsändringar för samtal, t.ex. från ett uppringningstillstånd till ett anslutet tillstånd. Sådana tillståndsändringar är kända som cellulära samtalshändelser.

Syftet med CTCallCenter är att ge utvecklaren möjlighet att pausa sitt app-tillstånd under ett samtal för att ge användaren den bästa upplevelsen.

Objective-C:

Först kommer vi att definiera en ny klassmedlem inom klassen som vi vill hantera avlyssningar:

@property (atomic, strong) CTCallCenter *callCenter;

Inuti vår klassinit (konstruktör) tilldelar vi nytt minne för vår klassmedlem:

[self setCallCenter:[CTCallCenter new]];

Efteråt kommer vi att åberopa vår nya metod som faktiskt hanterar avlyssningarna:

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

Det är det, om användaren använder din app och tar emot ett telefonsamtal kan du fånga upp detta samtal och hantera din app för att spara tillstånd.

Det är värt att nämna att det finns fyra samtalstillstånd som du kan fånga:

CTCallStateDialing
CTCallStateIncoming
CTCallStateConnected
CTCallStateDisconnected

Snabb:

Definiera din klassmedlem i relevant klass och definiera den:

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

Vad händer om din app är i bakgrunden och du måste avlyssna samtal medan appen är i bakgrunden?

Om du till exempel utvecklar en företagsapp kan du i princip bara lägga till två funktioner (VOIP & Bakgrundshämtning) på fliken Funktioner:

Ditt projektmål -> Funktioner -> Bakgrundslägen -> markera Voice over IP & Background hämta

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow