`

用Swift创建ReactNative模块

 
阅读更多
1、打开react-native项目中ios文件夹下得xcode工程文件。
2、在AppDelegate.m的平级创建需要暴露给ReactNative的Swift类


 
将其命名为“MyModule”


 
创建完后,会提示你是否创建Bridging Header,因为IOS开发如果需要swift和oc共存,则Swift必须提供一个Bridging Header 给oc,否则oc无法调用Swift。目前Swift无法直接暴露给ReactNative,所以需要oc来做桥接。


 
3、在刚创建的Bridging Header文件中添加一行代码,这是React Bridge的头文件
 
#import "RCTBridgeModule.h"
 
4、编写我们的主类文件,也就是刚才创建的MyModule.swift
import Foundation
//加上@objc是为了让swift和被oc所调用
@objc(MyModule)
class MyModule: NSObject {
  @objcfunc sayHi(msg:String!, callback: RCTResponseSenderBlock) -> Void {
    callback(["Swift Module recieved your message, content is \"\(msg)\""]);
  }
}
 
5、还需要最后一步骤,将我们的模块方法通过ReactNative暴露出去,这步还是在oc的实现文件中去做,新建一个MyModule.m文件。


 
代码内容如下:
// MyModule.m
#import "RCTBridgeModule.h"
@interfaceRCT_EXTERN_MODULE(MyModule, NSObject)
RCT_EXTERN_METHOD(sayHi:(NSString)msg callback:(RCTResponseSenderBlock)callback)
@end
 
5、到此就完成了一个Swift ReactNative模块的开发,在XCode中运行下(Command + R),完成模块的编译后,就可以去ReactNative中去引用这个模块。
6、Native 语言暴露给ReactNative的模块、方法都在NativeModules这个模块上,所以我们新建一个js模块
import React, {
  NativeModules
} from 'react-native';
export default NativeModules.MyModule;
 
7、在业务代码中应用这个模块,并调用swift方法
import MyModule  from './MyModule';

MyModule.sayHi("Hi, I am from JS” , (msg)=>{
  console.log(msg);
});)
 最终会在浏览器的控制台中输出: Swift Module recieved your message, content is "I am from JS 
  • 大小: 161.4 KB
  • 大小: 57.7 KB
  • 大小: 87.7 KB
  • 大小: 67.2 KB
分享到:
评论

相关推荐

    swift-ReactNative的跨平台WebView

    当我们谈论“swift-ReactNative的跨平台WebView”时,我们实际上在讨论如何在Swift和React Native的混合开发环境中集成WebView,实现跨平台的网页展示功能。 首先,WebView是一种原生应用程序组件,它可以加载和...

    swift-ReactNative与原生通信的demo

    这个“swift-ReactNative与原生通信的demo”主要展示了如何在两个平台之间建立桥梁,实现数据交换和功能调用。 首先,我们要理解Swift和React Native通信的基本原理。React Native通过桥接(Bridge)机制与原生平台...

    swift-ReactNative的缩放抽屉控件

    总的来说,“swift-ReactNative的缩放抽屉控件”是React Native生态系统中的一个独特贡献,它展示了如何利用React Native的灵活性和原生模块的强大能力,为用户界面带来创新的设计元素。对于开发者来说,学习和理解...

    swift-ReactNative开发嘎嘎商城客户端

    在本项目中,“swift-ReactNative开发嘎嘎商城客户端”是一个使用Swift和React Native技术混合开发的电商应用项目。嘎嘎商城客户端的开发涉及到多个关键知识点,这些知识点涵盖了移动应用开发的重要方面。以下是对...

    基于百度人脸识别封装的reactnative模块支持AndroidiOS平台设备

    下面将详细探讨基于百度人脸识别封装的React Native模块在Android和iOS平台的应用。 首先,React Native(RN)是JavaScript框架,它使用“Learn once, write anywhere”原则,这意味着开发者只需要掌握一套技能,就...

    swift-ReactNative模仿网易云音乐手机客户端兼容安卓和IOS两个平台。

    这个项目“swift-ReactNative模仿网易云音乐手机客户端”旨在利用这两种技术的优势,创建一个兼容安卓和iOS两个平台的音乐播放应用,模仿知名音乐流媒体服务——网易云音乐的用户界面和功能。 在Swift开发中,知识...

    swift-ReactNative:原生Popover菜单

    当我们谈到"Swift-ReactNative:原生Popover菜单"时,我们关注的是如何在React Native应用中实现类似iOS中的Popover菜单功能。 Popover菜单在iOS中是一种常见的交互元素,它通常用于显示更多的选项或信息,当用户...

    30天学习ReactNative教程

    3. **创建React Native项目** 使用`react-native init`命令初始化一个新的React Native项目,这会为你生成项目模板。了解项目目录结构,包括`src`目录中的`App.js`,这是应用的入口点。 4. **组件化编程** 学习...

    swift-iOSARKit的ReactNative绑定

    4. **原生模块开发**:学习如何在React Native中创建和使用原生模块,以便将Swift代码封装起来供JavaScript调用。 5. **桥接与通信**:理解JavaScript与Swift之间的通信机制,如通过RCTBridge进行消息传递。 6. **...

    Swift-react-native自建热更新版本升级工具demoios

    Swift和React Native是两种非常流行的开发语言和框架,它们分别用于原生iOS开发和跨平台开发。在这个名为"Swift-react-native自建热更新版本升级工具demoios"的项目中,我们看到一个结合了两者特性的热更新解决方案...

    ReactNative开发实例带你入门reactnative开发

    这个“ReactNative开发实例带你入门reactnative开发”的资源,显然是一个针对初学者的教程,旨在帮助他们理解并掌握React Native的基本概念、架构以及实际开发流程。 React Native的核心理念是“Learn Once, Write ...

    IOS原生集成ReactNative

    React Native允许你编写原生模块,这些模块可以是用Objective-C或Swift编写的,它们提供了与JavaScript的接口,使你能访问iOS的特定功能,如推送通知、蓝牙、GPS等。创建原生模块通常涉及以下步骤: 1. 创建一个新...

    React Native 原生模块实现拨打电话

    首先,React Native的核心理念是“Learn once, write anywhere”,这意味着开发者可以使用相同的JavaScript代码库为不同的移动平台创建用户界面。然而,有些功能,如访问设备的硬件特性(如拨打电话),需要与原生...

    swift-直接在您的ReactNative应用中进行AppStore评分

    首先,`swift-直接在您的ReactNative应用中进行AppStore评分`这个标题指出我们要讨论的是一个React Native模块,它利用Swift来调用iOS的原生API,以便在应用内部引导用户进行App Store的评分。React Native是一个由...

    使用Object-C语言创建私有的React Native组件

    2. **创建React Native模块**:在你的React Native项目中,创建一个新的Objective-C类,继承自RCTComponent或RCTViewManager。这个类将作为React Native与Objective-C之间的桥梁。例如,你可以命名为`...

    React Native 用JavaScript开发移动应用.pdf

    React Native 不仅允许开发者为 iOS 和 Android 平台创建应用,还能共享大部分的代码基础,这对于想要同时发布到两个平台的应用开发者来说是一个巨大的优势。 知识点概览: 1. React Native 的概念和起源。 2. ...

    ReactNative

    ReactNative主要使用JavaScript编写,但是它也支持使用Objective-C或Swift进行原生模块的编写。这使得开发者可以更灵活地处理一些需要与原生平台交互的操作。 ReactNative的组件主要分为三大类:UI组件,用于构建...

    React Native Demo

    4. **Native模块交互**:React Native提供了与原生平台API交互的能力。开发者可以通过`Native Modules`将JavaScript代码与Java(Android)或Objective-C/Swift(iOS)代码连接起来,调用原生平台的功能。 5. **热...

    reactnative使用原生模块

    在React Native中使用原生模块,主要是为了利用JavaScript无法直接访问的平台特性和功能。例如,访问蓝牙、GPS、摄像头等硬件接口,或者调用系统级别的服务和API。原生模块通过桥接机制,让JavaScript代码能够调用到...

    swift-基于阿里云SDK的react-native上传组件

    在本文中,我们将深入探讨如何使用Swift开发一个基于阿里云SDK的React Native上传组件,以及如何结合`react-native-aliyun-oss-master`这个开源项目进行集成和应用。阿里云对象存储服务(OSS)是一种高可用、高安全...

Global site tag (gtag.js) - Google Analytics