From df8287d8ee382bf69df1d1a4ad126cde29b0cbee Mon Sep 17 00:00:00 2001 From: Shuangzuan Date: Mon, 15 Jun 2015 12:14:23 -0700 Subject: [PATCH] [PushNotification] Unregister for remote notifications support. Summary: See iOS Developer Library: [- unregisterForRemoteNotifications](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/unregisterForRemoteNotifications). Unregister for all remote notifications received via Apple Push Notification service. **Discussion** You should call this method in rare circumstances only, such as when a new version of the app removes support for all types of remote notifications. Users can temporarily prevent apps from receiving remote notifications through the Notifications section of the Settings app. Apps unregistered through this method can always re-register. Closes https://github.com/facebook/react-native/pull/1520 Github Author: Shuangzuan Test Plan: Imported from GitHub, without a `Test Plan:` line. --- Libraries/PushNotificationIOS/PushNotificationIOS.js | 12 ++++++++++++ .../PushNotificationIOS/RCTPushNotificationManager.m | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/Libraries/PushNotificationIOS/PushNotificationIOS.js b/Libraries/PushNotificationIOS/PushNotificationIOS.js index adf8ecf5a..1781ddff1 100644 --- a/Libraries/PushNotificationIOS/PushNotificationIOS.js +++ b/Libraries/PushNotificationIOS/PushNotificationIOS.js @@ -121,6 +121,18 @@ class PushNotificationIOS { RCTPushNotificationManager.requestPermissions(requestedPermissions); } + /** + * Unregister for all remote notifications received via Apple Push Notification service. + * + * You should call this method in rare circumstances only, such as when a new version of + * the app removes support for all types of remote notifications. Users can temporarily + * prevent apps from receiving remote notifications through the Notifications section of + * the Settings app. Apps unregistered through this method can always re-register. + */ + static abandonPermissions() { + RCTPushNotificationManager.abandonPermissions(); + } + /** * See what push permissions are currently enabled. `callback` will be * invoked with a `permissions` object: diff --git a/Libraries/PushNotificationIOS/RCTPushNotificationManager.m b/Libraries/PushNotificationIOS/RCTPushNotificationManager.m index 97de4aa07..6a9420819 100644 --- a/Libraries/PushNotificationIOS/RCTPushNotificationManager.m +++ b/Libraries/PushNotificationIOS/RCTPushNotificationManager.m @@ -148,6 +148,11 @@ RCT_EXPORT_METHOD(requestPermissions:(NSDictionary *)permissions) } +RCT_EXPORT_METHOD(abandonPermissions) +{ + [[UIApplication sharedApplication] unregisterForRemoteNotifications]; +} + RCT_EXPORT_METHOD(checkPermissions:(RCTResponseSenderBlock)callback) { NSUInteger types = 0;