ReactNative: не удалось вызвать функции из NativeModules - PullRequest
0 голосов
/ 08 октября 2019

Мне требуется разрешение на фотографию в IOS. В своем коде я добавил PermissionManager.h:

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <UIKit/UIKit.h>

@interface PermissionManager:NSObject<RCTBridgeModule>
@end

и PermissionManager.m:

#import "PermissionManager.h"
#import <AVFoundation/AVFoundation.h>
#import <AssetsLibrary/AssetsLibrary.h>

@implementation PermissionManager

RCT_EXPORT_MODULE(); 

RCT_EXPORT_METHOD(photoPermission:(RCTPromiseResolveBlock)resolve 
reject:(RCTPromiseRejectBlock)reject) { 
  ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];  
  if (author == ALAuthorizationStatusRestricted || author ==ALAuthorizationStatusDenied)
  {
    reject(@"500",@"Photo access denied",nil);    
  }else {
    resolve(@YES);    
  }
}

@end

Эти файлы добавляются на том же уровне, что и файл AppDelegate.m через XCode. В моем коде JavaScript я делаю это:

import { NativeModules } from 'react-native';
manager = NativeModules.PermissionManager;

Но PermissionManager не определен в отладчике. Затем я пытаюсь вызвать в нем функцию:

const photoPermission = () => {
    return new Promise((resolve, reject) => {
        manager.photoPermission().then(data => {
            resolve(data);
        }).catch(err => {
            reject(err);
        });
    });
};

Когда я запускаю симулятор, он предупреждает:

Невозможно прочитать свойство photoPermission of undefined.

Я не знаю, что не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...