react-native-callkeep
react-native-callkeep copied to clipboard
Native callback for call rejects
This callback helps in cases when JS context is not loaded and call rejection have to be instantly reported to backend
@sboily hey, could you review once more
@remigijusbalc could you help me create an event for cancel a call. My context is when a call is coming and then user press wake/sleep button in order to cancel a call. I really need that event please help me
@khanhduy62 till this PR gets a review, you could just fork my repo and use it like this:
[RNCallKeep setup:@{ @"appName": @"Name", @"maximumCallGroups": @1, @"maximumCallsPerCallGroup": @1, @"supportsVideo": @YES, @"includesCallsInRecents": @NO, } callRejectHandler: ^(NSString* uuid, void (^completion)(void)) {
NSString *cancelUrl = @""; // server url
NSString *paramValue = @"value";
NSDictionary *parameters = @{
@"param": paramValue,
};
NSData *callEndData = [NSJSONSerialization dataWithJSONObject: parameters options: NSJSONWritingPrettyPrinted error: nil];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL: [NSURL URLWithString: cancelUrl]];
[request setHTTPMethod: @"POST"];
[request addValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
[request setHTTPBody: callEndData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
if(httpResponse.statusCode == 200) {
NSError *parseError = nil;
NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
NSLog(@"The response is - %@",responseDictionary);
} else {
NSLog(@"Error");
}
completion();
}];
[dataTask resume];
}];
@remigijusbalc thank you, let me check it :D
@manuquentin Hey, could you check this out?
@manuquentin any feedback? Looks good to me.
@sboily @manuquentin Any update on this. required feature, if possible please release a new version with this.
Hello @hussainsherwani, sorry we are quite busy for the moment, but yeah we will review it as soon as possible.
@remigijusbalc I tried with your fork , I am getting an error, could you please help me out
No known class method for selector 'reportNewIncomingCall:handle:handleType:hasVideo:localizedCallerName:supportsHolding:supportsDTMF:supportsGrouping:supportsUngrouping:fromPushKit:payload:withCompletionHandler:'
@hussainsherwani my fork has another feature - to cancel calls and it's not submitted as PR. You can ignore it by passing "isCancelEvent: NO" to reportNewIncomingCall method in your AppDelegate didReceiveIncomingPushWithPayload method.
@remigijusbalc Thanks for the quick reply, I tried to add isCancelEvent: NO
in reportNewIncomingCall but still error persist.
unable to resolve this.

Try reinstalling node_modules and pods, then checkouting to this PR commit
@remigijusbalc Thanks, It was my mistake build successfully, isCancelEvent
should be last parameter in reportNewIncomingCall
, adding after withCompletionHandler
build successfully. Will test it now. Anyway Thanks for the help and Great PR.
@remigijusbalc could you please help me in one more thing how can I get my notification payload when a call decline as it only give a UUID
and we need to send some other values too from notification payload to tell server user declined the call
@hussainsherwani You could simply save payload in your AppDelegate defined dictionary based on uuid and on callReject callback use it
hello @remigijusbalc with your forked repo android app not working, getting error error: incompatible types: int cannot be converted to String super.onReject(rejectReason); ^
Hey @remigijusbalc & @hussainsherwani, Shouldn't the rejection event fire immediately when clicking the cancel button? @remigijusbalc I forked your repo but the rejection event only fires when I open the app after canceling the call. Do you know why this is? Is this the same for you or does it fire immediately?
hey @linus-komnick for me rejection event fire immediately I am using this but in @remigijusbalc forked repo there is an issue for android so when I create android build I use library package for IOS I use forked repo
@hussainsherwani thx, I will take note of that! It's weird though that the cancel event doesn't get triggered in my app. It must be something that I'm doing wrong. My NSLogs don't work either. I'm forced to use post request to log stuff, because NSLog stopped working. So maybe there is a correlation between those two issues...
@hussainsherwani In my app the rejection event fires immediately when receiving a voip/pushkit notification. But not when canceling the call. For you it's the other way around, right?
@remigijusbalc can you please update the PR as there is now a conflict RNCallKeep.m
file. @sboily @manuquentin could you please look into this if now you have time
Hey, @remigijusbalc just to confirm, does this PR solves the issue of not triggering the endCall when the call is rejected when a user presses the reject button in the incoming call? Basically what happens currently is that when a call is rejected through the incoming call the endCall event is triggered which seems weird. So, there's no way of handling the reject call. I have a usecase where the reject call and hangup button should trigger different WS events. But here in both the scenarios, the endCall event is triggered.
any update on this?