From 43df6b556410c6e393a01081a48fa9daf8c3fd55 Mon Sep 17 00:00:00 2001 From: Chris Bianca Date: Mon, 27 Mar 2017 12:51:52 +0100 Subject: [PATCH] Add a promise response to iOS messaging requestPermissions to return permission popup response (iOS 10+) --- ios/RNFirebase/RNFirebaseMessaging.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ios/RNFirebase/RNFirebaseMessaging.m b/ios/RNFirebase/RNFirebaseMessaging.m index 9bcfda07..4ed6cca5 100644 --- a/ios/RNFirebase/RNFirebaseMessaging.m +++ b/ios/RNFirebase/RNFirebaseMessaging.m @@ -247,7 +247,7 @@ RCT_EXPORT_METHOD(getToken:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseR [_bridge.eventDispatcher sendDeviceEventWithName:@"FCMTokenRefreshed" body:[[FIRInstanceID instanceID] token]]; } -RCT_EXPORT_METHOD(requestPermissions) +RCT_EXPORT_METHOD(requestPermissions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { if (RCTRunningInAppExtension()) { return; @@ -265,6 +265,9 @@ RCT_EXPORT_METHOD(requestPermissions) //iOS 7 or below [app registerForRemoteNotificationTypes:(NSUInteger)allNotificationTypes]; } + // Unfortunately on iOS 9 or below, there's no way to tell whether the user accepted or + // rejected the permissions popup + resolve(@{@"status":@"unknown"}); } else { // iOS 10 or later #if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 @@ -275,11 +278,12 @@ RCT_EXPORT_METHOD(requestPermissions) [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { + resolve(@{@"granted":@(granted)}); } ]; #endif } - + [[UIApplication sharedApplication] registerForRemoteNotifications]; }