私は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) {
//
}];
はい、私はこの間違いを犯して後で修正しました。スレッドを更新するのを忘れました。スチュアートに答える時間をとってくれてありがとう。 – Rajavelu
@Rajavelu:APKのCallKit UIフロントをどうやって持ってくることができますか教えてください。 –
@SaurabhPrajapatiプロバイダのデリゲートから 'reportNewIncomingCall'メソッドを呼び出す必要があります。 – Rajavelu