ReactNative:无法从NativeModules调用函数

时间:2019-10-08 13:28:27

标签: javascript ios objective-c react-native

我需要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

此文件通过XCode与AppDelegate.m文件添加在同一级别。 在我的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'。

我不知道怎么了。

0 个答案:

没有答案