React Native {NativeModules} 未在 M1/Silicon mac 上导入 - 返回空对象 {}

2023-12-01

我试图在一个开发的项目中创建一个 React-native“本机模块”(BankedSdk)M1MacBook。 - 但是,任何初始化模块的尝试都会返回一个空对象。

这是适用于我的示例 (2020) 存储库intel机器✅:https://github.com/banked/banked-react-native-sdk-example

在我更大的(基于 M1 的)项目中,我像这样集成了它:

在我的 iOS 文件夹中,我有三个新文件:

BankedSdk.h:

#import <Foundation/Foundation.h>
#import "React/RCTBridge.h"

NS_ASSUME_NONNULL_BEGIN

@interface BankedSdk : NSObject <RCTBridgeModule>

@end

NS_ASSUME_NONNULL_END

BankedSdk.m:

#import "BankedSdk.h"
#import "React/RCTLog.h"
#import "BankedReactNativeExample-Swift.h"

@implementation BankedSdk

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(initialise:(NSString *)apiKey)
{
  [[BankedCheckoutWrapper shared] setUpWithApiKey: apiKey];
}

RCT_EXPORT_METHOD(openBankedSdk:(NSString *)paymentId and:(NSString *)continueUrl)
{
  dispatch_async(dispatch_get_main_queue(), ^{
    UIViewController *presentedViewController = RCTPresentedViewController();
    
    [[BankedCheckoutWrapper shared] presentCheckoutWithViewController: presentedViewController  paymentId: paymentId continueURL: continueUrl];
  });
}

RCT_EXPORT_METHOD(handlePaymentForURL:(NSURL *)url)
{
  [[BankedCheckoutWrapper shared] handlePaymentWithUrl: url];
}

@end

BankedWrapper.swift:

import Foundation
import UIKit
import Banked

@objc class BankedCheckoutWrapper: NSObject {
     
  @objc static let shared: BankedCheckoutWrapper = BankedCheckoutWrapper()
  
  @objc func setUp(apiKey: String) {
    BankedCheckout.shared.setUp(apiKey)
  }
  
  @objc func presentCheckout(viewController: UIViewController ,paymentId: String, continueURL: String) {
    BankedCheckout.shared.presentCheckout(viewController , paymentId: paymentId, action: .pay, continueURL: continueURL) { response in
      switch response {
      case .success:
        print("success")
      case .failure(let error):
        print("error \(error)")
      }
    }
  }
  
  @objc func handlePayment(url: URL) {
    
    BankedCheckout.shared.handlePaymentWithURL(url, action: .pay) { response in
      switch response {
      case .success:
        print("success")
      case .failure(let error):
        print("error \(error)")
      }
    }
  }
}

然后我有一个名为Banked Sdk内容如下:

import { NativeModules } from 'react-native'

const { BankedSdk } = NativeModules

export default BankedSdk

其调用方式如下:

import React, { useState, useEffect } from 'react'
[import a bunch of other stuff]
import BankedSdk from '@components/BankedSdk'


//Main file stuff
 
// -> TEST NATIVE MODULES BUTTON

  function checkNativeModules() {
    const apiKey = "xxxxxxxxxxxxxxxx"
    BankedSdk.initialise(apiKey)
    BankedSdk.openBankedSdk("xxxxxxxxxxxxxxxx", "urlHere")
   console.log("Banked Sdk in Test Button: ", BankedSdk)
  }




  return (
    <>
     // Other UI stuff
      <Button
       title="Initiate Native Mod"
       color="primary"
       onPress={checkNativeModules}
       />
    </>
  )
}

export default Button

但是 - 我的 NativeModules 正在作为空对象注销:

Native Modules: {}

出现错误:

ERROR TypeError: null is not an object (evaluating '_BankedSdk.default.initialise')

(见图片)

enter image description here enter image description here

***** 更新回复 @user3193920 *****

最终通过以下方法解决了这个问题:

在 Podfile 中:

# ENABLES BANKED (DYMANIC FRAMEWORK)
  pod 'Banked', '0.0.25', :build_type => :dynamic_framework 

BankedSdk.h:

#import <Foundation/Foundation.h>
#import "React/RCTBridge.h"

NS_ASSUME_NONNULL_BEGIN

@interface BankedSdk : NSObject <RCTBridgeModule>

@end


NS_ASSUME_NONNULL_END

BankedSdk.m:

#import "BankedSdk.h"
#import "React/RCTLog.h"
#import "systemSpendAppReactNativeOnM1-Swift.h"

@implementation BankedSdk

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(initialise:(NSString *)apiKey)
{
  dispatch_async(dispatch_get_main_queue(), ^{
    [[BankedCheckoutWrapper shared] setUpWithApiKey: apiKey];
  });
}

RCT_EXPORT_METHOD(openBankedSdk:(NSString *)paymentId and:(NSString *)continueUrl and:(RCTPromiseResolveBlock)resolve and:(RCTPromiseRejectBlock)reject)
{
  dispatch_async(dispatch_get_main_queue(), ^{
    UIViewController *presentedViewController = RCTPresentedViewController();

    [[BankedCheckoutWrapper shared] presentCheckoutWithViewController: presentedViewController  paymentId: paymentId continueURL: continueUrl resolve: resolve rejecter: reject];
  });
}

RCT_EXPORT_METHOD(handlePaymentForURL:(NSURL *)url)
{
  dispatch_async(dispatch_get_main_queue(), ^{
    [[BankedCheckoutWrapper shared] handlePaymentWithUrl: url];
  });
}

@end

和 BankedWrapper.swift:

import Foundation
import UIKit
import Banked

@objc class BankedCheckoutWrapper: NSObject {

  private var presentingCheckout = false {
    didSet {
      print("+++ presentingCheckout \(presentingCheckout.description)")
    }
  }
  @objc static let shared: BankedCheckoutWrapper = BankedCheckoutWrapper()
  
  @objc func setUp(apiKey: String) {
    BankedCheckout.shared.setUp(apiKey)
  }
  
  @objc func presentCheckout(viewController: UIViewController ,paymentId: String, continueURL: String,  resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
    presentingCheckout = true
    return BankedCheckout.shared.presentCheckout(viewController , paymentId: paymentId, action: .pay, continueURL: continueURL) { [weak self] response in
      guard let self = self else { return }
      if self.presentingCheckout {
        switch response {
        case .success:
          print("+++ success presentCheckout")
          resolve("success")
        case .failure(let error):
          print("+++ error presentCheckout \(error)")
          let errorNew = NSError(domain: "", code: 200, userInfo: nil)
          reject("Caught error", "error", errorNew)
        }
      }
      self.presentingCheckout = false
    }
  }
  
  @objc func handlePayment(url: URL) {
    BankedCheckout.shared.handlePaymentWithURL(url, action: .pay) { response in
      switch response {
      case .success:
        print("+++ success handlePayment")
      case .failure(let error):
        print("+++ error handlePayment \(error)")
      }
    }
  }
}

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native {NativeModules} 未在 M1/Silicon mac 上导入 - 返回空对象 {} 的相关文章

  • ios 在后台处理推送通知

    我想保存应用程序处于后台状态时到达的推送通知 我知道关于 void application UIApplication application didReceiveRemoteNotification NSDictionary userIn
  • 如何使用 Core Graphics 在我的触摸位置绘制一个圆圈?

    新程序员来了 我在尝试使用 Core Graphics 在触摸位置周围绘制描边弧时遇到问题 我有绘制圆圈的方法工作正常 并且我已经测试并在点击屏幕时注册触摸 但是当我尝试在点击时调用绘制圆圈的方法时 我收到错误 CG ContextBlah
  • 在视图之间传递核心数据实体变量

    我无法理解如何在视图之间使用核心数据实体变量 为了更好地理解我的问题是什么 我的代码如下 View A 基本上 您必须将完整预算实体或相关预算实体的 ID 从视图 A 传递到视图 B 由于不知道您的应用程序的视图层次结构和逻辑 我假设您选择
  • ios 导航 堆栈操作

    我在尝试从 iOS 应用程序操作导航堆栈时遇到问题 或者至少是由于这种操纵而产生的行为 我的情况 我有 3 个 ViewController 控制器a显示多个级别 控制器 b 是游戏视图 控制器 c 是某种分数 显然 我将在控制器 a 中选
  • 企业发行版在 Swift 应用程序中与 iOS8 配合不佳

    我在使用 swift 应用程序在 iOS 8 设备上运行 Enterprise 版本时遇到问题 如果我使用非企业帐户进行代码签名 它似乎工作正常 有人遇到这个问题吗 以下是我在尝试使用企业帐户运行构建以进行协同设计时在 iOS 设备上收到的
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • 在 IOS 上使用 AVComposition 混合两个音频文件

    我正在尝试混合两个音频文件 将一个音频文件放在另一个音频文件之上 不是缝合在一起 但我在 IOS 上学习 AVFoundation 时遇到了困难 我在这里遵循了这个答案 如何使用 AVMutableCompositionTrack 合并音频
  • UIDocumentInteractionController 阻止“打开方式”表中的空投

    在我的应用程序中 我允许用户通过 Instagram 分享照片 这需要使用 UIDocumentInteractionController 如果手机支持 则会自动检测空投 如何将其从 打开方式 操作表中删除 即使我使用 UIActivity
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • 添加自定义过渡会导致 xib 加载错误的屏幕尺寸

    我正在尝试向具有 xib 的 UIViewController 添加自定义过渡 我尝试了几种方法 但它们都有相同的问题 视图显示的屏幕尺寸错误 我当前的示例基于以下教程 使用 Swift 在 iOS 中自定义 UIViewControlle
  • 如何恢复消耗品应用内购买?

    我正在开发一款 iOS 游戏 用户可以通过应用内消耗品购买一定数量的内部货币 比如 1000 金币 如果用户想将余额从一台设备转移到另一台设备 如何恢复消耗品购买 在苹果的文档中 它说我们必须使用我们自己的服务器 但是如何获取用户的Appl
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 错误:更改核心数据模型后架构armv7的重复符号

    我有一个使用核心数据框架的应用程序 我工作得很好 我刚刚更改了数据模型 向一个实体添加一个属性 当我尝试构建它时 出现错误 duplicate symbol OBJC METACLASS AccountFolder in Users XXX
  • 关于窗口层次结构的警告

    我的调试器中出现这样的警告 这是什么意思 Warning Attempt to present
  • Xcode 中的 iOS 9 警告 - 此文件设置为针对早于项目部署的版本进行构建。功能可能有限

    我刚刚将我的 Mac 更新到最新的操作系统 并将 Xcode 更新到最新版本 现在我收到此警告 但我不知道该由谁来删除它 也不知道它的真正含义是什么 有人可以向我解释一下吗 Thanks Select Main storyboard in
  • 我怎样才能勾勒出文本字体?

    我想在边框 轮廓 中显示另一种颜色的文本 我正在尝试使用在 MapOverlayView 中显示文本 text drawAtPoint CGPointMake 0 30 withFont UIFont fontWithName Helvet
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 如何反转 CGPath 的点顺序

    我想画一个圆圈 并用它打出字母 为此 我需要顺时针抚摸圆圈 逆时针抚摸字母 这一切都很好 但是当我使用 Core Text 获取字母路径时 我不知道如何从本质上反转该路径 不是镜像或旋转或任何东西 这很简单 我希望点笔画顺序是逆时针的 这实
  • 为什么使用 iPhone 或 iOS 设备在“iframe”中查看“position:fixed”时不起作用?

    我研究过 stackoverflow 似乎position fixed在 iOS 移动设备的 iframe 中 https stackoverflow com questions 15874910 position fixed and if

随机推荐

  • 不支持spark sql上下文中的WITH子句

    我正在尝试使用从大型机表中获取记录Spark SQL 上下文使用以下查询 data config db query SELECT A E No A Name FROM Schema Employee A with UR 但它抛出以下错误 c
  • 数组指针如何存储其大小? [复制]

    这个问题在这里已经有答案了 include stdio h define COUNT a sizeof a sizeof a void test int b printf 2 count d n COUNT b int main void
  • 如何在 swagger 3.0 中自动添加基本身份验证,而无需用户在授权按钮上输入?

    我正在使用 swagger 3 0 并且在 swagger 文档中有多个端点 我希望用户不要每次都在授权按钮上输入凭据 有什么方法可以在index html 或我的yaml 文件中包含身份验证来自动授权用户 Thanks Swagger U
  • 如何在 Seaborn 箱线图中编辑晶须、飞行物、帽子等的属性

    我使用 Seaborn 包创建了一个带有叠加条带图的嵌套箱线图 我在 stackoverflow 上看到了有关如何编辑的答案box属性都为单独的盒子并为所有盒子使用 sns boxplot 生成的 ax artists 有没有办法使用类似的
  • Jquery 和 IIFE 包装器澄清?

    The window不能像我们在这个例子中看到的那样重新定义 https i stack imgur com IYX0p jpg 那么为什么 jquery 开头是window 它甚至使用相同的名称 function window undef
  • 在进行 Visual Studio 自动化时,是否有更好的方法来处理 RPC_E_CALL_REJECTED 异常?

    这就是我目前正在做的事情 protected void setupProject bool lbDone false int liCount 0 while lbDone liCount lt pMaxRetries try pProjec
  • 如何从 Twitter 主题标签中删除 #?

    我想从 Twitter 哈希标签中删除 所以 Input I love winter and ice skating Output I love winter and ice skating 我以为这可以解决问题 但事实并非如此 tweet
  • 想要从列表视图中删除所选项目

    我使用列表和数组适配器将字符串放入列表视图中 现在我想删除选定的项目 我尝试过以下代码 但效果不佳 我怎样才能解决这个问题 这是我的代码 TextView t1 String temp mylist ListView findViewByI
  • 在 UITableViewCell 上的多个 AVPlayerItem 中添加和删除观察者

    我正在尝试制作一个播放多个视频的表格视图AVPlayer and AVPlayerItem我需要为每个添加观察者AVPlayerItem这样我就可以跟踪playbackLikelyToKeepUp 属性 我尝试但失败的是在设置后添加观察者A
  • 运算符||或 |不能使用

    我正在尝试编译此代码 但我的编译器 BlueJ 告诉我 无法应用于 java lang string java lang string import java io import javax swing JOptionPane class
  • 重复 std::vector 的内容

    假设我有一个简单类型的向量 可能很大 例如 std vector
  • 如何在 C# 中将 System.Decimal 位转换为字符串?

    我希望能够从System Decimalvalue 然后将其转换为该值的字符串表示形式 就像Decimal ToString 可以 但我很难想出算法 所以我有这样的事情 decimal d 1403 45433M int nDecimalB
  • SAP JBOSS 的 jar 问题

    我正在尝试使用 ABAP 函数调用将我的 J2EE 应用程序与 SAP 软件连接起来 当我在 Eclipse 中使用热编码值将其作为单个类运行时 它工作得很好 当我尝试在 JBoss 服务器中运行它时 我从前端获取一些值并将其传递给我的 J
  • 如何将数字传递给 .hideRow()?

    我从以下位置得到了以下脚本 Mike Grace 的网站 Deletes rows in the active spreadsheet that contain Yes in column A function readRows var s
  • 如何在 Windows 版 Git 客户端中对 TFS 服务器进行身份验证?

    我们在公司域上设置了 TFS 2017 服务器 我想使用 Windows CMD 行的 Git 从该 TFS 服务器上的存储库推送和提取代码 我已将必要的证书添加到本地商店 以便通过 SSL 障碍 但现在当我尝试将远程存储库克隆到我的域加入
  • 圆形 UIButton

    我想知道是否可以绘制圆形 UIButton 不是圆角矩形 当我在自定义类型的 UIButton 中添加圆形图像时 它看起来像一个圆形按钮 但在单击按钮时 按钮的边界变得可见 因此它看起来像一个方形按钮 然后当单击结束时 它又看起来像一个圆形
  • Selenium 代理服务器参数 - 未知错误:net::ERR_TUNNEL_CONNECTION_FAILED

    希望你一切都好 我在尝试设置 chrome webdriver 时遇到了一些问题 我正在尝试更改网络驱动程序的参数以轮换用户代理和 IP 我将其用于抓取目的并且不想获得具有相同 IP 和 UA 的位置 当我通过 UA 参数时 一切正常 但是
  • 如何使div可拖动

    如何使元素可以在两个 div 之间拖动 这似乎是可拖动的应该做的事情 但我无法使用我拥有的代码 在这个 jsfiddle 中 我有两个带有可拖动元素的 div 我想让一个元素从第一个 div 转到第二个 div 许多网站上都必须存在该功能
  • jQuery DOM 对象的 x y 文档坐标

    我需要获取 DOM 元素的 X Y 坐标 相对于文档的顶部 左侧 我找不到任何可以为我提供这些的插件或 jQuery 属性或方法 我可以获得 DOM 元素的顶部和左侧 但这可以相对于其当前容器 父级或文档 你可以使用方面插件 已弃用 包含在
  • React Native {NativeModules} 未在 M1/Silicon mac 上导入 - 返回空对象 {}

    我试图在一个开发的项目中创建一个 React native 本机模块 BankedSdk M1MacBook 但是 任何初始化模块的尝试都会返回一个空对象 这是适用于我的示例 2020 存储库intel机器 https github com