封装iOS原生资源库link到项目供ReactNative使用

ReactNative发现到现在,已经支持其在基础上编写原生代码,具有访问平台所有能力。如今在GitHub上已经有很多的RN组件满足大家使用了,但当出现特定需求时候呢?RN不支持你所需要的原生特性的时候,这个时候就需要自己去封装该特性了。
参考ReactNative中文网,一个“原生模块”就是一个实现了“RCTBridgeModule”协议的Objective-C类,其中RCT是ReaCT的缩写.

在此我只是说明怎么去实现封装iOS原生资源库,具体你需要什么的需求则自己去写了。
1.首先我们先init一个RN项目
react-native init Demo

2.RN项目创建完了,运行里面iOS项目,确保没问题;没问题后可以不用管了,接下来我们可以去创建资源库

3.首先我们定义一个文件夹react-native-maillist(RN官方声明第三方定义插件名称),index.js导入文件,package.json文件可以通过npm init生成,再一个我们在里面定义一个iOS文件夹;

4.Xcode/file->new -> Project 创建一个资源包放到iOS文件夹目录下

组件名称在MailList.h文件中

为了实现RCTBridgeModule协议,你的类需要包含RCT_EXPORT_MODULE()宏。这个宏也可以添加一个参数用来指定在Javascript中访问这个模块的名字。如果你不指定,默认就会使用这个Objective-C类的名字。
这里我们是指定名称的,然后你可以在里面声明给JavaScript调用的方法然后导出(具体操作可参考中文网)

5.在静态库中配置路径

路径输入 $(SRCROOT)/../../react-native/React, 选择recurvise

6.在react-native-maillist文件下index.js中导出该插件

7.将插件复制到我们的项目工程的node_modules中
然后大家通过react-native link  xxx(插件全称) 命令集成进工程中,

也可以手动导入,在Libraries中 选择Add Files to "工程名", 选择node_modules中要导入的插件mailList.xcodeproj添加进来,

然后Build Phases中添加静态.a文件进去

最终我们在RN工程中可以通过js调用

这样我们可以自己定义自己的资源库了,后期再告诉大家怎么用pod管理我们的资源库,有不对的地方,希望大佬可以指出,谢谢~

原文地址:https://www.cnblogs.com/joellin0407/p/10029489.html

时间: 2024-10-03 22:20:12

封装iOS原生资源库link到项目供ReactNative使用的相关文章

在iOS开发中,给项目添加新的.framework

首先需要了解一下iOS中静态库和动态库.framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到

React Native iOS原生模块开发实战|教程|心得|如何创建React Native iOS原生模块

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691432) 前言 一直想写一下我在React Native原生模块封装方面的一些经验和心得,来分享给大家,但实在抽不开身,今天看了一下日历发现马上就春节了,所以就赶在春节之前将这篇博文写好并发布(其实是两篇:要看Android篇的点这里<React Native Android原生模块开发>). 我平时在用React Nativ

cocos2d-x + Lua接入iOS原生SDK的实现方案[转]

相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我做过项目中接入iOS原生SDK实现方案的一个总结,在这里分享给大家,希望对自己和大家的开发工作都有帮助. 在展开正文之前,先做几点说明: 1.我这里说的iOS原生SDK是指那些完全用Objective-C语言开发,为原生iOS程序设计的SDK.swift很好很强大,不过我还没用过,惭愧,不过语言终归

[原创]cocos2d-x + Lua接入iOS原生SDK的实现方案

相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我做过项目中接入iOS原生SDK实现方案的一个总结,在这里分享给大家,希望对自己和大家的开发工作都有帮助. 在展开正文之前,先做几点说明: 1.我这里说的iOS原生SDK是指那些完全用Objective-C语言开发,为原生iOS程序设计的SDK.swift很好很强大,不过我还没用过,惭愧,不过语言终归

iOS原生混合RN开发最佳实践

做过原生iOS开发或者Android开发的同学们肯定也都了解Hybrid,有一些Hybrid的开发经验,目前我们企业开发中运用最广泛的Hybrid App技术就是原生与H5 hybrid,在早期的时候,可能部分同学也接触过PhoneGap等hybrid技术,今天我们就简单来聊下一种比较新的Hybrid技术方案,原生App与ReactNativie Hybrid,如果有同学们对React Native技术不熟悉的同学,可以查看作者简书中对React Native基础的讲解:React Native

二维码扫描(iOS原生二维码扫描)

一.关于二维码扫描的第三方库有很多:例如比较常用的两个 1.ZBar SDK ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我们对界面做更多的定制,详细的百度查找相关文档来看. 2.ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0).它不但支持众多

iOS原生App与H5页面交互笔记

iOS原生App与H5页面交互笔记 字数390 阅读2204 评论1 喜欢25 最近在做一个项目用到了原生App与H5交互,之前有做过简单的H5页面直接调用原生方法的例子,就是利用UIWebView中的代理方法 //webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法 - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigatio

【iOS开发】在ARC项目中使用非ARC文件

ARC的出现应该说是开发者的一大福利,苹果是推荐使用的,但是因为之前没有ARC机制,好多比较好的类库都是使用的非ARC,或是有些大牛还是不喜欢用ARC,封装的类也是非ARC的,想要在自己的ARC项目中使用这些非ARC类库,只需要简单的设置一下就可以了. 在TARGETS-Bulid Phares-Compile Sources中找到非ARC的文件,双击,在弹出的框中添加 -fno-objc-arc 如图: 即可 PS:如果项目建立时未使用ARC,想将其改为ARC,可以在building sett

HTML5能取代IOS原生应用吗

介绍 移动应用程序(App)和HTML5都是目前最火的技术,二者之间也有不少重叠之处.在移动设备浏览器里运行的html5的web页面,也可以重新打包成不同平台上运行的app.目前很多浏览器都有很好的跨平台支持,(译注:firefox居然可以在android中使用和windows下同样的浏览器内核),HTML5的web方案,对开发者来说更为方便.完成一次,即可多平台使用.但这确实可行吗?仍然有许多必要原因,使得开发者选择了app开发.很明显,很多人已经在这么做了.本文将详细分析两种方案的优劣. 功