【问题标题】:React native not a recognised objective C methodReact native 不是公认的客观 C 方法
【发布时间】:2020-07-27 11:30:01
【问题描述】:

我正在尝试桥接本机模块的回调以响应本机。我也试过这个Got "is not a recognized Objective-C method" when bridging Swift to React-Native

我也为我的第一个参数添加了下划线

以下是我的快速代码

import Foundation
import LocalAuthentication

@objc(FingerPrintModule)
class FingerPrintModule: NSObject {
  
  var resultCallback: RCTResponseSenderBlock!
  
  @objc func authenticateLocallyForIos(_ callback: @escaping RCTResponseSenderBlock) -> Void {
    resultCallback = callback
    useLocalAuthentication()
  }
  
  private func useLocalAuthentication(){
    //Business logic
  }
  
}

我也为我的swift 文件创建了objective c 文件

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

@interface RCT_EXTERN_MODULE(FingerPrintModule, NSObject)


RCT_EXTERN_METHOD(authenticateLocallyForIos: callback:(RCTResponseSenderBlock)callback)
 
@end

当我从 react native 调用时,我收到错误消息,提示无法识别 objective c 方法

我的 React Native 代码

import { NativeModules,
  Platform,
} from "react-native";
const { FingerPrintModule } = NativeModules;

在按钮按下时调用

FingerPrintModule.authenticateLocallyForIos((err, result) => {
        if (!err) {
          Alert.alert(result.toString());
        } else {
          Alert.alert(err);
        }
      });

【问题讨论】:

  • 你能在调用这个方法的地方添加 React 端代码吗?
  • @Daljeet 立即查看

标签: ios objective-c swift react-native


【解决方案1】:

在您的反应代码中执行如下操作:

const yourModule = NativeModules.FingerPrintModule;

然后调用如下方法:

yourModule.authenticateLocallyForIos((err, result) => {
        if (!err) {
          Alert.alert(result.toString());
        } else {
          Alert.alert(err);
        }
      });

【讨论】:

  • @Dalijeet 我尝试了你的方法并得到同样的错误。实际上我的方法是正确的,因为它适用于 Android,但对于 iOS,它会出错。我的swift或objective c文件的方法定义有错误
  • 你可以尝试创建简单的方法 RCT_EXTERN_METHOD(sayHello) 没有任何参数并在其中打印你好
【解决方案2】:

我必须将我的objective c 代码更改为如下

RCT_EXTERN_METHOD(authenticateLocallyForIos:(RCTResponseSenderBlock)callback)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 2023-04-03
    • 2022-01-07
    • 2015-08-28
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多