From fd8a2510214e3a7ca31e1a51b270f77ba10ca0c5 Mon Sep 17 00:00:00 2001 From: ARKALYK AKASH Date: Wed, 14 Feb 2018 20:53:32 +0100 Subject: [PATCH 01/11] contactIdentifier added to startCall action. --- index.js | 4 ++-- ios/RNCallKit/RNCallKit.m | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 60a5e06..fe2bad9 100644 --- a/index.js +++ b/index.js @@ -71,9 +71,9 @@ export default class RNCallKit { _RNCallKit.displayIncomingCall(uuid, handle, handleType, hasVideo, localizedCallerName); } - static startCall(uuid, handle, handleType = 'number', hasVideo = false) { + static startCall(uuid, handle, handleType = 'number', hasVideo = false, contactIdentifier?: String) { if (Platform.OS !== 'ios') return; - _RNCallKit.startCall(uuid, handle, handleType, hasVideo); + _RNCallKit.startCall(uuid, handle, handleType, hasVideo, contactIdentifier); } static reportConnectedOutgoingCallWithUUID(uuid) { diff --git a/ios/RNCallKit/RNCallKit.m b/ios/RNCallKit/RNCallKit.m index e78967b..17e2dbe 100644 --- a/ios/RNCallKit/RNCallKit.m +++ b/ios/RNCallKit/RNCallKit.m @@ -114,9 +114,10 @@ - (void)dealloc } RCT_EXPORT_METHOD(startCall:(NSString *)uuidString - handle:(NSString *)handle - handleType:(NSString *)handleType - video:(BOOL)video) + handle:(NSString *)handle + handleType:(NSString *)handleType + video:(BOOL)video + contactIdentifier:(NSString * _Nullable)contactIdentifier) { #ifdef DEBUG NSLog(@"[RNCallKit][startCall] uuidString = %@", uuidString); @@ -126,6 +127,7 @@ - (void)dealloc CXHandle *callHandle = [[CXHandle alloc] initWithType:_handleType value:handle]; CXStartCallAction *startCallAction = [[CXStartCallAction alloc] initWithCallUUID:uuid handle:callHandle]; [startCallAction setVideo:video]; + [startCallAction setContactIdentifier:contactIdentifier]; CXTransaction *transaction = [[CXTransaction alloc] initWithAction:startCallAction]; From 8f8aaa3a7c81f1f4818b9517db4a9c05f8448b66 Mon Sep 17 00:00:00 2001 From: ARKALYK AKASH Date: Fri, 2 Mar 2018 15:10:23 +0100 Subject: [PATCH 02/11] README.md updated. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index cb8a314..d4c5952 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,7 @@ Initialise RNCallKit with options - generic - number (default) - email +- **localizedCallerName**: string (optional) Call when you receive incoming calls to display system UI @@ -145,6 +146,8 @@ Call when you receive incoming calls to display system UI - generic - number (default) - email +- **contactIdentifier**: string (optional) + - The identifier is displayed in the native call UI, and is typically the name of the call recipient. Call when you make an outgoing call From 863fb2c7e6b707287ee9103130b313edcbc79f16 Mon Sep 17 00:00:00 2001 From: ARKALYK AKASH Date: Fri, 6 Jul 2018 15:24:50 +0200 Subject: [PATCH 03/11] updateConnectionState method added --- README.md | 10 ++++++++++ index.js | 5 +++++ ios/RNCallKit/RNCallKit.m | 15 ++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b574fef..39d6b3f 100644 --- a/README.md +++ b/README.md @@ -206,6 +206,12 @@ Do your normal `Answering` actions here } ``` +### - updateConnectionState + +Please, call this method when you establish or lose connection while answering. It transitions a call from `connecting` state to either `connected` or `failed`. + +**connected**: boolean (default value is `true`) + ### - endCall User finish the call @@ -288,6 +294,10 @@ class RNCallKitExample extends React.Component { * Try to do your normal Answering actions here * * e.g. this.handleAnswerCall(data.callUUID); + * + * Call RNCallKit.updateConnectionState(true) if connection is established + * + * or RNCallKit.updateConnectionState(false) if connection is failed */ } diff --git a/index.js b/index.js index 78c5642..6e516e4 100644 --- a/index.js +++ b/index.js @@ -121,6 +121,11 @@ export default class RNCallKit { : Promise.reject('RNCallKit.checkSpeaker was called from unsupported OS'); } + static updateConnectionState(connected = true) { + if (Platform.OS !== 'ios') return; + _RNCallKit.updateConnectionState(connected); + } + /* static setHeldCall(uuid, onHold) { if (Platform.OS !== 'ios') return; diff --git a/ios/RNCallKit/RNCallKit.m b/ios/RNCallKit/RNCallKit.m index fc3439f..7140195 100644 --- a/ios/RNCallKit/RNCallKit.m +++ b/ios/RNCallKit/RNCallKit.m @@ -30,6 +30,7 @@ @implementation RNCallKit NSMutableDictionary *_settings; NSOperatingSystemVersion _version; BOOL _isStartCallActionEventListenerAdded; + CXAnswerCallAction *answerCallAction; } // should initialise in AppDelegate.m @@ -221,6 +222,18 @@ - (void)dealloc [self requestTransaction:transaction]; } +RCT_EXPORT_METHOD(updateConnectionState:(BOOL )connected) +{ +#ifdef DEBUG + NSLog(@"[RNCallKit][updateConnectionState]"); +#endif + if (connected) { + [answerCallAction fulfill]; + } else { + [answerCallAction fail]; + } +} + - (void)requestTransaction:(CXTransaction *)transaction { #ifdef DEBUG @@ -443,7 +456,7 @@ - (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *) #endif NSString *callUUID = [self containsLowerCaseLetter:action.callUUID.UUIDString] ? action.callUUID.UUIDString : [action.callUUID.UUIDString lowercaseString]; [self sendEventWithName:RNCallKitPerformEndCallAction body:@{ @"callUUID": callUUID }]; - [action fulfill]; + answerCallAction = action; } - (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action From c1420e1ad3ebbf3a30dbbe8870ce52a5174973ca Mon Sep 17 00:00:00 2001 From: ARKALYK AKASH Date: Fri, 6 Jul 2018 15:29:09 +0200 Subject: [PATCH 04/11] minor bugfix --- ios/RNCallKit/RNCallKit.m | 4 ++-- react-native-callkit-1.3.4.tgz | Bin 0 -> 11222 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 react-native-callkit-1.3.4.tgz diff --git a/ios/RNCallKit/RNCallKit.m b/ios/RNCallKit/RNCallKit.m index 7140195..614d81e 100644 --- a/ios/RNCallKit/RNCallKit.m +++ b/ios/RNCallKit/RNCallKit.m @@ -445,7 +445,7 @@ - (void)provider:(CXProvider *)provider performAnswerCallAction:(CXAnswerCallAct } NSString *callUUID = [self containsLowerCaseLetter:action.callUUID.UUIDString] ? action.callUUID.UUIDString : [action.callUUID.UUIDString lowercaseString]; [self sendEventWithName:RNCallKitPerformAnswerCallAction body:@{ @"callUUID": callUUID }]; - [action fulfill]; + answerCallAction = action; } // Ending incoming call @@ -456,7 +456,7 @@ - (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *) #endif NSString *callUUID = [self containsLowerCaseLetter:action.callUUID.UUIDString] ? action.callUUID.UUIDString : [action.callUUID.UUIDString lowercaseString]; [self sendEventWithName:RNCallKitPerformEndCallAction body:@{ @"callUUID": callUUID }]; - answerCallAction = action; + [action fulfill]; } - (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action diff --git a/react-native-callkit-1.3.4.tgz b/react-native-callkit-1.3.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..30fe79333b4cebc9d2fec6bc43b35d9c076ee12d GIT binary patch literal 11222 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 Date: Fri, 6 Jul 2018 15:43:07 +0200 Subject: [PATCH 05/11] removed unnecessary files: --- react-native-callkit-1.3.4.tgz | Bin 11222 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 react-native-callkit-1.3.4.tgz diff --git a/react-native-callkit-1.3.4.tgz b/react-native-callkit-1.3.4.tgz deleted file mode 100644 index 30fe79333b4cebc9d2fec6bc43b35d9c076ee12d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11222 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 Date: Fri, 6 Jul 2018 15:53:15 +0200 Subject: [PATCH 06/11] README updated --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 39d6b3f..ed28284 100644 --- a/README.md +++ b/README.md @@ -198,6 +198,8 @@ User answer the incoming call Do your normal `Answering` actions here +Note: Please, do not forget to call `updateConnectionState` when connection is established or failed. + **data**: ```javascript From 7e6d41df509a51861d27d1f15b8200d0c118e3c7 Mon Sep 17 00:00:00 2001 From: ARKALYK AKASH Date: Fri, 6 Jul 2018 15:56:41 +0200 Subject: [PATCH 07/11] minor correction in README --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ed28284..7d3e975 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,12 @@ Checks if there are any active calls on the device and returns a promise with a Checks if the device speaker is on and returns a promise with a boolean value (`true` if speaker is on, `false` otherwise). +### updateConnectionState + +Please, call this method when you establish or lose connection while answering. It transitions a call from `connecting` state to either `connected` or `failed`. + +**connected**: boolean (default value is `true`) + ## Events ### - didReceiveStartCallAction @@ -208,12 +214,6 @@ Note: Please, do not forget to call `updateConnectionState` when connection is e } ``` -### - updateConnectionState - -Please, call this method when you establish or lose connection while answering. It transitions a call from `connecting` state to either `connected` or `failed`. - -**connected**: boolean (default value is `true`) - ### - endCall User finish the call From 5da0ebbe3013450ad0b8ebbc531fdcc1ba6af8ef Mon Sep 17 00:00:00 2001 From: ARKALYK AKASH Date: Fri, 6 Jul 2018 15:58:20 +0200 Subject: [PATCH 08/11] minor correction in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d3e975..1d9f20c 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,7 @@ Checks if the device speaker is on and returns a promise with a boolean value (` Please, call this method when you establish or lose connection while answering. It transitions a call from `connecting` state to either `connected` or `failed`. -**connected**: boolean (default value is `true`) +- **connected**: boolean (default value is `true`) ## Events From 3d0db63f76664e33e66db5fe722dea8f9325c4c4 Mon Sep 17 00:00:00 2001 From: Arkalyk Akash Date: Sat, 15 Dec 2018 12:31:12 +0100 Subject: [PATCH 09/11] Breaking changes avoided --- README.md | 8 ++++++-- index.js | 6 +++--- ios/RNCallKit/RNCallKit.m | 12 ++++++++++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 1d9f20c..c5a39a5 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,8 @@ Initialise RNCallKit with options - **hasVideo**: boolean (optional) - false (default) - **localizedCallerName**: string (optional) +- **showConnectingStatus**: boolean (optional) + - `false` by default, set it to `true` if you wish to show the user connecting status after hitting the answer button. Note that you will need to update the connection status using `updateConnectionState(connected: boolean)`. Call when you receive incoming calls to display system UI @@ -176,7 +178,9 @@ Checks if the device speaker is on and returns a promise with a boolean value (` ### updateConnectionState -Please, call this method when you establish or lose connection while answering. It transitions a call from `connecting` state to either `connected` or `failed`. +Note: you don't need to call this method if you didn't set `showConnectionState` to `true` while displaying a call. + +Call this method when you establish or lose connection while answering. It transitions a call from `connecting` state to either `connected` or `failed`. - **connected**: boolean (default value is `true`) @@ -204,7 +208,7 @@ User answer the incoming call Do your normal `Answering` actions here -Note: Please, do not forget to call `updateConnectionState` when connection is established or failed. +Note: This is the place you might want to call `updateConnectionState` if you set `showConnectionState` to `true` on displaying a call. **data**: diff --git a/index.js b/index.js index 6e516e4..17708b6 100644 --- a/index.js +++ b/index.js @@ -79,12 +79,12 @@ export default class RNCallKit { _RNCallKit.setup(options); } - static displayIncomingCall(uuid, handle, handleType = 'number', hasVideo = false, localizedCallerName?: String) { + static displayIncomingCall(uuid, handle, handleType = 'number', hasVideo = false, localizedCallerName, showConnectingStatus = false) { if (Platform.OS !== 'ios') return; - _RNCallKit.displayIncomingCall(uuid, handle, handleType, hasVideo, localizedCallerName); + _RNCallKit.displayIncomingCall(uuid, handle, handleType, hasVideo, localizedCallerName, showConnectingStatus); } - static startCall(uuid, handle, handleType = 'number', hasVideo = false, contactIdentifier?: String) { + static startCall(uuid, handle, handleType = 'number', hasVideo = false, contactIdentifier) { if (Platform.OS !== 'ios') return; _RNCallKit.startCall(uuid, handle, handleType, hasVideo, contactIdentifier); } diff --git a/ios/RNCallKit/RNCallKit.m b/ios/RNCallKit/RNCallKit.m index 614d81e..96664db 100644 --- a/ios/RNCallKit/RNCallKit.m +++ b/ios/RNCallKit/RNCallKit.m @@ -31,6 +31,7 @@ @implementation RNCallKit NSOperatingSystemVersion _version; BOOL _isStartCallActionEventListenerAdded; CXAnswerCallAction *answerCallAction; + BOOL shouldShowConnectionState; } // should initialise in AppDelegate.m @@ -47,6 +48,7 @@ - (instancetype)init name:RNCallKitHandleStartCallNotification object:nil]; _isStartCallActionEventListenerAdded = NO; + shouldShowConnectionState = false; } return self; } @@ -112,7 +114,8 @@ - (void)dealloc handle:(NSString *)handle handleType:(NSString *)handleType hasVideo:(BOOL)hasVideo - localizedCallerName:(NSString * _Nullable)localizedCallerName) + localizedCallerName:(NSString * _Nullable)localizedCallerName + showConnectionState:(BOOL)showConnectionState) { #ifdef DEBUG NSLog(@"[RNCallKit][displayIncomingCall] uuidString = %@", uuidString); @@ -128,6 +131,7 @@ - (void)dealloc callUpdate.supportsUngrouping = NO; callUpdate.hasVideo = hasVideo; callUpdate.localizedCallerName = localizedCallerName; + shouldShowConnectionState = showConnectionState; [self.callKitProvider reportNewIncomingCallWithUUID:uuid update:callUpdate completion:^(NSError * _Nullable error) { [self sendEventWithName:RNCallKitDidDisplayIncomingCall body:@{ @"error": error ? error.localizedDescription : @"" }]; @@ -445,7 +449,11 @@ - (void)provider:(CXProvider *)provider performAnswerCallAction:(CXAnswerCallAct } NSString *callUUID = [self containsLowerCaseLetter:action.callUUID.UUIDString] ? action.callUUID.UUIDString : [action.callUUID.UUIDString lowercaseString]; [self sendEventWithName:RNCallKitPerformAnswerCallAction body:@{ @"callUUID": callUUID }]; - answerCallAction = action; + if (shouldShowConnectionState) { + answerCallAction = action; + } else { + [action fullfill]; + } } // Ending incoming call From a49d5ddb3d8db9e84bffdc7333d10f8029bf9766 Mon Sep 17 00:00:00 2001 From: Arkalyk Akash Date: Sat, 15 Dec 2018 13:03:14 +0100 Subject: [PATCH 10/11] minor fixes --- README.md | 5 +---- index.js | 4 ++-- ios/RNCallKit/RNCallKit.m | 22 ++++++++++++---------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index c5a39a5..2453a65 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ Initialise RNCallKit with options - **hasVideo**: boolean (optional) - false (default) - **localizedCallerName**: string (optional) -- **showConnectingStatus**: boolean (optional) +- **showConnectionState**: boolean (optional) - `false` by default, set it to `true` if you wish to show the user connecting status after hitting the answer button. Note that you will need to update the connection status using `updateConnectionState(connected: boolean)`. Call when you receive incoming calls to display system UI @@ -301,9 +301,6 @@ class RNCallKitExample extends React.Component { * * e.g. this.handleAnswerCall(data.callUUID); * - * Call RNCallKit.updateConnectionState(true) if connection is established - * - * or RNCallKit.updateConnectionState(false) if connection is failed */ } diff --git a/index.js b/index.js index 17708b6..adaf181 100644 --- a/index.js +++ b/index.js @@ -79,9 +79,9 @@ export default class RNCallKit { _RNCallKit.setup(options); } - static displayIncomingCall(uuid, handle, handleType = 'number', hasVideo = false, localizedCallerName, showConnectingStatus = false) { + static displayIncomingCall(uuid, handle, handleType = 'number', hasVideo = false, localizedCallerName = '', showConnectionState = false) { if (Platform.OS !== 'ios') return; - _RNCallKit.displayIncomingCall(uuid, handle, handleType, hasVideo, localizedCallerName, showConnectingStatus); + _RNCallKit.displayIncomingCall(uuid, handle, handleType, hasVideo, localizedCallerName, showConnectionState); } static startCall(uuid, handle, handleType = 'number', hasVideo = false, contactIdentifier) { diff --git a/ios/RNCallKit/RNCallKit.m b/ios/RNCallKit/RNCallKit.m index 96664db..6190b35 100644 --- a/ios/RNCallKit/RNCallKit.m +++ b/ios/RNCallKit/RNCallKit.m @@ -30,8 +30,8 @@ @implementation RNCallKit NSMutableDictionary *_settings; NSOperatingSystemVersion _version; BOOL _isStartCallActionEventListenerAdded; - CXAnswerCallAction *answerCallAction; - BOOL shouldShowConnectionState; + CXAnswerCallAction *_answerCallAction; + BOOL _shouldShowConnectionState; } // should initialise in AppDelegate.m @@ -48,7 +48,7 @@ - (instancetype)init name:RNCallKitHandleStartCallNotification object:nil]; _isStartCallActionEventListenerAdded = NO; - shouldShowConnectionState = false; + _shouldShowConnectionState = NO; } return self; } @@ -114,7 +114,7 @@ - (void)dealloc handle:(NSString *)handle handleType:(NSString *)handleType hasVideo:(BOOL)hasVideo - localizedCallerName:(NSString * _Nullable)localizedCallerName + localizedCallerName:(NSString *)localizedCallerName showConnectionState:(BOOL)showConnectionState) { #ifdef DEBUG @@ -130,8 +130,10 @@ - (void)dealloc callUpdate.supportsGrouping = NO; callUpdate.supportsUngrouping = NO; callUpdate.hasVideo = hasVideo; - callUpdate.localizedCallerName = localizedCallerName; - shouldShowConnectionState = showConnectionState; + if ([localizedCallerName length] > 0) { + callUpdate.localizedCallerName = localizedCallerName; + } + _shouldShowConnectionState = showConnectionState; [self.callKitProvider reportNewIncomingCallWithUUID:uuid update:callUpdate completion:^(NSError * _Nullable error) { [self sendEventWithName:RNCallKitDidDisplayIncomingCall body:@{ @"error": error ? error.localizedDescription : @"" }]; @@ -232,9 +234,9 @@ - (void)dealloc NSLog(@"[RNCallKit][updateConnectionState]"); #endif if (connected) { - [answerCallAction fulfill]; + [_answerCallAction fulfill]; } else { - [answerCallAction fail]; + [_answerCallAction fail]; } } @@ -449,8 +451,8 @@ - (void)provider:(CXProvider *)provider performAnswerCallAction:(CXAnswerCallAct } NSString *callUUID = [self containsLowerCaseLetter:action.callUUID.UUIDString] ? action.callUUID.UUIDString : [action.callUUID.UUIDString lowercaseString]; [self sendEventWithName:RNCallKitPerformAnswerCallAction body:@{ @"callUUID": callUUID }]; - if (shouldShowConnectionState) { - answerCallAction = action; + if (_shouldShowConnectionState) { + _answerCallAction = action; } else { [action fullfill]; } From 8d3ea9509d70253869e8a1eefd6b01e17d5b9647 Mon Sep 17 00:00:00 2001 From: Arkalyk Akash Date: Sat, 15 Dec 2018 13:05:59 +0100 Subject: [PATCH 11/11] README updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2453a65..38f9457 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ Initialise RNCallKit with options - false (default) - **localizedCallerName**: string (optional) - **showConnectionState**: boolean (optional) - - `false` by default, set it to `true` if you wish to show the user connecting status after hitting the answer button. Note that you will need to update the connection status using `updateConnectionState(connected: boolean)`. + - `false` by default, set it to `true` if you wish to show the user connecting state after hitting the answer button. Note that you will need to update the connection state using `updateConnectionState(connected: boolean)`. Call when you receive incoming calls to display system UI