2016-10-04 10 views
2

私はVoipアプリケーションにCallKitを統合しようとしています。 Apple WWDCのSpeakerBoxサンプルコードを参照しました。私はProviderDelegateクラスを作成しました。reportNewIncomingCallメソッドを呼び出した後、着信UIを見ることができます。CXProviderDelegateメソッドがトリガーされていません

しかし、「回答」/「終了」ボタンをタップすると、それぞれのプロバイダの代理人は解雇されません。ここで何が間違っているのでしょうか?

CallProviderDelegateをインスタンス化すると、「providerDidBegin」が呼び出されます。

発信者クラスで
@implementation CallProviderDelegate 

- (instancetype)init 
{ 
    self = [super init]; 
    if (self) { 
     _providerConfiguration = [self getProviderConfiguration]; 
     _provider = [[CXProvider alloc] initWithConfiguration:_providerConfiguration]; 
     [_provider setDelegate:self queue:nil]; 
    } 
    return self; 
} 

- (void)providerDidBegin:(CXProvider *)provider { 
    // this is getting called 
} 

- (void)provider:(CXProvider *)provider performAnswerCallAction:(CXAnswerCallAction *)action { 
    // this is not getting called when the Answer button is pressed 
} 

- (void)reportNewIncomingCallWithUUID:(nonnull NSUUID *)UUID handle:(nonnull NSString *)handle 
          completion:(nullable void (^)(NSError *_Nullable error))completion { 

    CXCallUpdate *update = [[CXCallUpdate alloc] init]; 
    update.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:handle]; 
    update.hasVideo = NO; 

    [_provider reportNewIncomingCallWithUUID:UUID update:update completion:^(NSError * _Nullable error) { 
     completion(error); 
    }]; 
} 

:あなたの「呼び出し側」のクラスでは

CallProviderDelegate *providerDelegate = [[CallProviderDelegate alloc] init]; 
[providerDelegate reportNewIncomingCallWithUUID:[NSUUID UUID] handle:@"Raj" completion:^(NSError * _Nullable error) { 
      // 
}]; 

答えて

2

、あなたがCallProviderDelegateクラスをインスタンス化し、providerDelegate変数に代入するコードは、あなたがproviderDelegateオブジェクト参照を格納している、すなわち、インスタンスの変数やプロパティに?一時的なローカル変数に代入されている場合は、CallProviderDelegateオブジェクトは呼び出し側メソッドの実行が終了した後に割り当てが解除され、CallProviderDelegateオブジェクトが割り当て解除された場合、それ以上のCXProvider委任メッセージは配信されません。

CallProviderDelegateオブジェクトが誤って割り当て解除されていないことを確認したいと思います。

+0

はい、私はこの間違いを犯して後で修正しました。スレッドを更新するのを忘れました。スチュアートに答える時間をとってくれてありがとう。 – Rajavelu

+0

@Rajavelu:APKのCallKit UIフロントをどうやって持ってくることができますか教えてください。 –

+0

@SaurabhPrajapatiプロバイダのデリゲートから 'reportNewIncomingCall'メソッドを呼び出す必要があります。 – Rajavelu

関連する問題