RNPermissionHandlerMediaLibrary.m 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #import "RNPermissionHandlerMediaLibrary.h"
  2. @import MediaPlayer;
  3. @implementation RNPermissionHandlerMediaLibrary
  4. + (NSArray<NSString *> * _Nullable)usageDescriptionKeys {
  5. return @[@"NSAppleMusicUsageDescription"];
  6. }
  7. - (void)checkWithResolver:(void (^)(RNPermissionStatus status))resolve
  8. withRejecter:(void (__unused ^)(NSError *error))reject {
  9. if (@available(iOS 9.3, *)) {
  10. switch ([MPMediaLibrary authorizationStatus]) {
  11. case MPMediaLibraryAuthorizationStatusNotDetermined:
  12. return resolve(RNPermissionStatusNotDetermined);
  13. case MPMediaLibraryAuthorizationStatusRestricted:
  14. return resolve(RNPermissionStatusRestricted);
  15. case MPMediaLibraryAuthorizationStatusDenied:
  16. return resolve(RNPermissionStatusDenied);
  17. case MPMediaLibraryAuthorizationStatusAuthorized:
  18. return resolve(RNPermissionStatusAuthorized);
  19. }
  20. } else {
  21. resolve(RNPermissionStatusAuthorized);
  22. }
  23. }
  24. - (void)requestWithOptions:(__unused NSDictionary * _Nullable)options
  25. withResolver:(void (^)(RNPermissionStatus status))resolve
  26. withRejecter:(void (^)(NSError *error))reject {
  27. if (@available(iOS 9.3, *)) {
  28. [MPMediaLibrary requestAuthorization:^(__unused MPMediaLibraryAuthorizationStatus status) {
  29. [self checkWithResolver:resolve withRejecter:reject];
  30. }];
  31. } else {
  32. resolve(RNPermissionStatusAuthorized);
  33. }
  34. }
  35. @end