如何将回调函数从 React Native 传递到 iOS 本机端?打字稿中回调函数的正确类型是什么?

问题描述

在 React Native 示例中,我调用一个函数 aSdk.adSupportBlock,并将回调函数作为参数传递。

    aSdk.adSupportBlock(()=>{ return "testtest";  });

在桥接方面,在index.ts文件中,我有一个函数也叫adSupportBlock,它可以传递任何函数作为参数(不知道这里是否可以定义函数类型输入?)并传递输入回调到原生 iOS 端。

  adSupportBlock(callback :()=> string ) : Promise<boolean> {
    return AmplitudeReactNative.adSupportBlock(this.instanceName,callback);
  }

在 type.ts 中

  adSupportBlock(instanceName: string,callback: ()=> string): Promise<boolean>;

在 iOS Native Side 中,我有一个 iOS 原生 sdk,它也称为 adSupportBlock,它能够传入一个函数。我想将 React Native 示例中定义的客户回调函数传递给 iOS 本机 sdk 在 .swift 文件

 @objc
    func adSupportBlock(_ instanceName: String,callback: @escaping RCTResponseSenderBlock,resolver resolve: RCTPromiseResolveBlock,rejecter reject: RCTPromiseRejectBlock) -> Void {
   
        Amplitude.instance(withName: instanceName).adSupportBlock = callback
        resolve(true)
    } 

在 iOS 原生 .m 文件中,我有

RCT_EXTERN_METHOD(adSupportBlock:(Nsstring *)instanceName 
         callback(RCTResponseSenderBlock)callback 
         resolver:(RCTPromiseResolveBlock)resolve 
         rejecter:(RCTPromiseRejectBlock)reject){
    callback();
}

在 iOS 原生 SDK 中。 adSupportBlock 定义如下:

 * Example:
 *      aSdk.adSupportBlock = ^{
 *          return [[ASIdentifierManager sharedManager] advertisingIdentifier];
@property (nonatomic,strong,nullable) AdSupportBlock adSupportBlock;

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

当我运行 iOS 示例时出现错误

错误:无法将“RCTResponseSenderBlock”(又名“(Optional) -> ()”)类型的值分配给“AdSupportBlock?” (又名 'Optional String>')

看起来 RCTResponseSenderBlock 被定义为 (Optional<Array<Any>>) -> () 类型。

我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)