diff --git a/README.md b/README.md index 03422279f1ac3c51fc910d5dfb4c7c77a65497bb..1bd1db68a3765b13c42dd6b43ba95f580a348edb 100644 --- a/README.md +++ b/README.md @@ -372,6 +372,15 @@ class App extends Component { my_custom_data_1: 'my_custom_field_value_1', my_custom_data_2: 'my_custom_field_value_2' }); + + FCM.deleteInstanceId() + .then( () => { + //Deleted instance id successfully + //This will reset Instance ID and revokes all tokens. + }) + .catch(error => { + //Error while deleting instance id + }); } } ``` diff --git a/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java b/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java index 30adfc719e8e0c6e9876d5550fed08e9dc8f58fa..1eed260f331b536338823199c020ec29e364a465 100644 --- a/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java +++ b/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java @@ -27,7 +27,7 @@ import android.os.Bundle; import android.util.Log; import android.content.Context; - +import java.io.IOException; import java.util.ArrayList; import java.util.Map; import java.util.Set; @@ -74,6 +74,17 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule implements Li promise.resolve(FirebaseInstanceId.getInstance().getToken()); } + @ReactMethod + public void deleteInstanceId(Promise promise){ + try { + FirebaseInstanceId.getInstance().deleteInstanceId(); + promise.resolve(null); + } catch (IOException e) { + e.printStackTrace(); + promise.reject(null,e.getMessage()); + } + } + @ReactMethod public void presentLocalNotification(ReadableMap details) { Bundle bundle = Arguments.toBundle(details); diff --git a/index.js b/index.js index c139729cf6f4c4134d2a87ee23619628b2478ca7..acb959c100a90ea69ce131e1c92035711d2aed38 100644 --- a/index.js +++ b/index.js @@ -48,6 +48,10 @@ FCM.getFCMToken = () => { return RNFIRMessaging.getFCMToken(); }; +FCM.deleteInstanceId = () =>{ + return RNFIRMessaging.deleteInstanceId(); +}; + FCM.getAPNSToken = () => { if (Platform.OS === 'ios') { return RNFIRMessaging.getAPNSToken(); diff --git a/ios/RNFIRMessaging.h b/ios/RNFIRMessaging.h index 9f741a2f2bec733667dfac2e26cd13f1c2659e6a..52637da0222fea5fa2405fac30ee184fb28ba8f1 100644 --- a/ios/RNFIRMessaging.h +++ b/ios/RNFIRMessaging.h @@ -3,7 +3,7 @@ #import #import - +#import #import @import UserNotifications; diff --git a/ios/RNFIRMessaging.m b/ios/RNFIRMessaging.m index 1653b9b155cd162a2ebea64e308711db230f6be7..f816f4dd3d06ce74d8caa0cfb908cb393f083bbb 100644 --- a/ios/RNFIRMessaging.m +++ b/ios/RNFIRMessaging.m @@ -231,6 +231,18 @@ RCT_EXPORT_METHOD(getFCMToken:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromi resolve([FIRMessaging messaging].FCMToken); } +RCT_EXPORT_METHOD(deleteInstanceId:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) +{ + [[FIRInstanceID instanceID]deleteIDWithHandler:^(NSError * _Nullable error) { + + if (error != nil) { + reject([NSString stringWithFormat:@"%ld",error.code],error.localizedDescription,nil); + } else { + resolve(nil); + } + }]; +} + - (void)messaging:(nonnull FIRMessaging *)messaging didRefreshRegistrationToken:(nonnull NSString *)fcmToken { [self sendEventWithName:FCMTokenRefreshed body:fcmToken]; }