RNPermissionHandlerStoreKit.m 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #import "RNPermissionHandlerStoreKit.h"
  2. @import StoreKit;
  3. @implementation RNPermissionHandlerStoreKit
  4. - (void)checkWithResolver:(void (^)(RNPermissionStatus status))resolve
  5. withRejecter:(void (__unused ^)(NSError *error))reject {
  6. if (@available(iOS 9.3, *)) {
  7. switch ([SKCloudServiceController authorizationStatus]) {
  8. case SKCloudServiceAuthorizationStatusNotDetermined:
  9. return resolve(RNPermissionStatusNotDetermined);
  10. case SKCloudServiceAuthorizationStatusRestricted:
  11. return resolve(RNPermissionStatusRestricted);
  12. case SKCloudServiceAuthorizationStatusDenied:
  13. return resolve(RNPermissionStatusDenied);
  14. case SKCloudServiceAuthorizationStatusAuthorized:
  15. return resolve(RNPermissionStatusAuthorized);
  16. }
  17. } else {
  18. resolve(RNPermissionStatusNotAvailable);
  19. }
  20. }
  21. - (void)requestWithOptions:(__unused NSDictionary * _Nullable)options
  22. withResolver:(void (^)(RNPermissionStatus status))resolve
  23. withRejecter:(void (^)(NSError *error))reject {
  24. if (@available(iOS 9.3, *)) {
  25. [SKCloudServiceController requestAuthorization:^(__unused SKCloudServiceAuthorizationStatus status) {
  26. [self checkWithResolver:resolve withRejecter:reject];
  27. }];
  28. } else {
  29. resolve(RNPermissionStatusNotAvailable);
  30. }
  31. }
  32. @end