1// Copyright 2018-present 650 Industries. All rights reserved. 2 3#import <EXNotifications/EXBadgeModule.h> 4#import <ExpoModulesCore/EXUtilities.h> 5#import <UserNotifications/UserNotifications.h> 6 7@implementation EXBadgeModule 8 9EX_EXPORT_MODULE(ExpoBadgeModule) 10 11EX_EXPORT_METHOD_AS(getBadgeCountAsync, 12 getBadgeCountAsync:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject) 13{ 14 dispatch_async(dispatch_get_main_queue(), ^{ 15 resolve(@([EXSharedApplication() applicationIconBadgeNumber])); 16 }); 17} 18 19EX_EXPORT_METHOD_AS(setBadgeCountAsync, 20 setBadgeCountAsync:(NSNumber *)badgeCount 21 resolve:(EXPromiseResolveBlock)resolve 22 reject:(EXPromiseRejectBlock)reject) 23{ 24 [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { 25 dispatch_async(dispatch_get_main_queue(), ^{ 26 if (settings.badgeSetting == UNNotificationSettingEnabled) { 27 [EXSharedApplication() setApplicationIconBadgeNumber:badgeCount.integerValue]; 28 resolve(@(YES)); 29 } else { 30 resolve(@(NO)); 31 } 32 }); 33 }]; 34} 35 36@end 37