2017-10-03 35 views
1

着信通話を処理するためにイベントを購読する必要があります。 iOSバージョン11.0のCTCallCenterは廃止予定ですので、CXCallObserverを使用する必要があります。 CTCallCenterのソリューションを正常に実装しましたが、CXCallObserverのイベントを購読できません。誰かがCXCallObserverのために働く解決策を持っていますか?ここで XamarinでCXCallObserverを使用するには?

はCTCallCenterのためのイベントをサブスクライブするために私のコード..です

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

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

答えて

1

CXCallObserverのためのデリゲートを実装します、あなたのコード内で次に

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

CXCallObserverのインスタンスを作成して強い参照を維持しますこれに代理人を割り当てます):

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

あなたも知っていますかこのデリゲートのリソースを適切に解放する方法は? –

+0

@JanNepraš 'CXCallObserverDelegate'のウィークデリゲートはありませんので、私は個人的に' CXCallObserver'と 'CXCallObserverDelegate'インスタンスの両方への参照を保持し、両方を手動で' Dispose'します。 – SushiHangover

関連する問題