2017-10-03 6 views
1

Je dois m'abonner à un événement pour gérer les appels téléphoniques entrants. Depuis iOS version 11.0 CTCallCenter est obsolète, nous devons utiliser CXCallObserver. J'ai implémenté avec succès la solution pour CTCallCenter, mais je ne suis pas en mesure de m'abonner à CXCallObserver. Quelqu'un at-il une solution de travail pour CXCallObserver?Comment utiliser CXCallObserver dans Xamarin?

Voici mon code pour s'abonner événement pour CTCallCenter ..

_callCenter = new CTCallCenter(); 
_callCenter.CallEventHandler += CallEvent; 

private void CallEvent(CTCall call) 
{ 
    CoreFoundation.DispatchQueue.MainQueue.DispatchSync(() => 
    { 
     if(call.CallState.Equals(call.StateIncoming)) 
      //Do something 
    }); 
} 

Répondre

1

Mettre en oeuvre le délégué pour CXCallObserver:

public class MyCXCallObserverDelegate : CXCallObserverDelegate 
{ 
    public override void CallChanged(CXCallObserver callObserver, CXCall call) 
    { 
     Console.WriteLine(call); 
    } 
} 

Ensuite, dans votre code, créez une instance de CXCallObserver (maintenir une référence forte pour cela), puis attribuer le délégué:

cXCallObserver = new CXCallObserver(); 
cXCallObserver.SetDelegate(new MyCXCallObserverDelegate(), null); 
+0

Savez-vous également comment libérer correctement les ressources de ce délégué? –

+0

@ JanNepraš Il n'y a pas de délégué faible pour 'CXCallObserverDelegate', donc personnellement je garde une référence aux deux instances' CXCallObserver' et 'CXCallObserverDelegate', et' Dispose' les deux manuellement. – SushiHangover