From 5b0d757701f8c6c6ebe44989df495b89ad210aa1 Mon Sep 17 00:00:00 2001 From: ro-mgh Date: Mon, 5 Apr 2021 16:43:03 +0300 Subject: [PATCH 1/5] Added unregistration for android --- README.md | 2 +- .../RNTwilioVoice/TwilioVoiceModule.java | 58 +++++++++++++++++++ index.js | 4 +- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 812d239e..62072152 100644 --- a/README.md +++ b/README.md @@ -379,7 +379,7 @@ TwilioVoice.getCallInvite() } }) -// Unregister device with Twilio (iOS only) +// Unregister device with Twilio TwilioVoice.unregister() ``` diff --git a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java index d9c627fb..93e21c6e 100644 --- a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java +++ b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java @@ -52,6 +52,7 @@ import com.twilio.voice.LogLevel; import com.twilio.voice.RegistrationException; import com.twilio.voice.RegistrationListener; +import com.twilio.voice.UnregistrationListener; import com.twilio.voice.Voice; import java.util.HashMap; @@ -118,6 +119,7 @@ public class TwilioVoiceModule extends ReactContextBaseJavaModule implements Act static Map callNotificationMap; private RegistrationListener registrationListener = registrationListener(); + private UnregistrationListener unregistrationListener = unregistrationListener(); // private Call.Listener callListener = callListener(); private CallInvite activeCallInvite; @@ -225,6 +227,27 @@ public void onError(RegistrationException error, String accessToken, String fcmT }; } + private UnregistrationListener unregistrationListener() { // + return new UnregistrationListener() { + @Override + public void onUnregistered(String accessToken, String fcmToken) { + if (BuildConfig.DEBUG) { + Log.d(TAG, "Successfully unregistered FCM"); + } + // eventManager.sendEvent(EVENT_DEVICE_UNREGISTERED, null); + eventManager.sendEvent(EVENT_DEVICE_NOT_READY, null); + } + + @Override + public void onError(RegistrationException error, String accessToken, String fcmToken) { + Log.e(TAG, String.format("Unregistration Error: %d, %s", error.getErrorCode(), error.getMessage())); + WritableMap params = Arguments.createMap(); + params.putString("err", error.getMessage()); + eventManager.sendEvent(EVENT_DEVICE_NOT_READY, params); + } + }; + } + private Call.Listener callListener() { return new Call.Listener() { /* @@ -618,6 +641,41 @@ public void onComplete(@NonNull Task task) { }); } + /* + * Unregister your android device with Twilio + * + */ + + @ReactMethod // + public void unregister(Promise promise) { + unregisterForCallInvites(); + WritableMap params = Arguments.createMap(); + params.putBoolean("initialized", false); + promise.resolve(params); + } + + private void unregisterForCallInvites() { + FirebaseInstanceId.getInstance().getInstanceId() + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (!task.isSuccessful()) { + Log.w(TAG, "getInstanceId failed", task.getException()); + return; + } + + // Get new Instance ID token + String fcmToken = task.getResult().getToken(); + if (fcmToken != null) { + if (BuildConfig.DEBUG) { + Log.d(TAG, "Unregistering with FCM"); + } + Voice.unregister(accessToken, Voice.RegistrationChannel.FCM, fcmToken, unregistrationListener); + } + } + }); + } + @ReactMethod public void accept() { callAccepted = true; diff --git a/index.js b/index.js index b84b91bf..1ee5184f 100644 --- a/index.js +++ b/index.js @@ -86,9 +86,7 @@ const Twilio = { } }, unregister() { - if (Platform.OS === IOS) { - TwilioVoice.unregister() - } + TwilioVoice.unregister() }, addEventListener(type, handler) { if (!_eventHandlers.hasOwnProperty(type)) { From fdc9e4447898a20450e5688d94d86cafadcf198d Mon Sep 17 00:00:00 2001 From: Roman Myagchenkov <58989752+ro-mgh@users.noreply.github.com> Date: Fri, 9 Apr 2021 04:40:52 +0700 Subject: [PATCH 2/5] Update android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java Co-authored-by: Jesse Degger --- .../java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java index 93e21c6e..964a2262 100644 --- a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java +++ b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java @@ -119,7 +119,7 @@ public class TwilioVoiceModule extends ReactContextBaseJavaModule implements Act static Map callNotificationMap; private RegistrationListener registrationListener = registrationListener(); - private UnregistrationListener unregistrationListener = unregistrationListener(); // + private UnregistrationListener unregistrationListener = unregistrationListener(); private Call.Listener callListener = callListener(); private CallInvite activeCallInvite; From 299d172b041e49e44b43f8aa755c2792eb6e3667 Mon Sep 17 00:00:00 2001 From: Roman Myagchenkov <58989752+ro-mgh@users.noreply.github.com> Date: Fri, 9 Apr 2021 04:41:01 +0700 Subject: [PATCH 3/5] Update android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java Co-authored-by: Jesse Degger --- .../java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java index 964a2262..9dc3124d 100644 --- a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java +++ b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java @@ -227,7 +227,7 @@ public void onError(RegistrationException error, String accessToken, String fcmT }; } - private UnregistrationListener unregistrationListener() { // + private UnregistrationListener unregistrationListener() { return new UnregistrationListener() { @Override public void onUnregistered(String accessToken, String fcmToken) { From ed67be75678431ecf348ad16d57573b7a0d1eba1 Mon Sep 17 00:00:00 2001 From: Roman Myagchenkov <58989752+ro-mgh@users.noreply.github.com> Date: Fri, 9 Apr 2021 04:42:54 +0700 Subject: [PATCH 4/5] Update android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java Co-authored-by: Jesse Degger --- .../java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java | 1 - 1 file changed, 1 deletion(-) diff --git a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java index 9dc3124d..ea4266cb 100644 --- a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java +++ b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java @@ -234,7 +234,6 @@ public void onUnregistered(String accessToken, String fcmToken) { if (BuildConfig.DEBUG) { Log.d(TAG, "Successfully unregistered FCM"); } - // eventManager.sendEvent(EVENT_DEVICE_UNREGISTERED, null); eventManager.sendEvent(EVENT_DEVICE_NOT_READY, null); } From 8d368f49173790f158cc5b0a5552444a1114b559 Mon Sep 17 00:00:00 2001 From: Roman Myagchenkov <58989752+ro-mgh@users.noreply.github.com> Date: Fri, 9 Apr 2021 04:43:36 +0700 Subject: [PATCH 5/5] Update android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java Co-authored-by: Jesse Degger --- .../java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java index ea4266cb..5d8ddc9c 100644 --- a/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java +++ b/android/src/main/java/com/hoxfon/react/RNTwilioVoice/TwilioVoiceModule.java @@ -645,7 +645,7 @@ public void onComplete(@NonNull Task task) { * */ - @ReactMethod // + @ReactMethod public void unregister(Promise promise) { unregisterForCallInvites(); WritableMap params = Arguments.createMap();