为IOS实现本机模块:React-Native
React native是一个功能强大的工具,因为它可以让我们使用本地代码(iOS中为Swift / Obj-C,Android中为Java / Kotlin)并桥接它们以访问我们的react-native JavaScript文件中的本地方法。
当您构建反应本机尚不支持的内容,或者您不想使用JavaScript重写某些旧的本机代码时,此功能真的非常有用。
我遇到过这样一种情况,我想为WebView清除所有cookie,但是在react-native中没有任何方法可以实现这一点。 ios Native Module中的示例都在Objective-C中,我想使用Swift来实现。
首先,在YourReactNativeProject / ios / YourReactNativeProject.xcodeproj或YourReactNativeProject / ios / YourReactNativeProject.xcworkspace下打开用于React-native的ios项目,如果您之前安装过Pod。 首先创建一个新的swift文件,并将其命名为项目目录下的CookieManager。
创建Swift文件时,系统会提示您创建桥接头。 在桥接标题内添加导入语句
#import“ RCTBridgeModule.h”
在您的CookieManager.swift文件中
进口基金会
@objc(CookieManager)
类CookieManager:NSObject {
@objc func clearCookies()->无效{
//删除所有缓存
URLCache.shared.removeAllCachedResponses()
//删除任何关联的cookie
如果让cookie = HTTPCookieStorage.shared.cookies {
用于Cookie中的Cookie {
HTTPCookieStorage.shared.deleteCookie(cookie)
}
}
}
}
不幸的是,我们必须提供一个Objective-C文件,以便将Swift暴露给React Native Objective-C框架。 创建一个新的Objective-C文件,并将其命名为CookieManagerBridge
在CookieManagerBridge.m文件中,您可以公开CookieManager类和clearCookies方法
#import
#import“ RCTBridgeModule.h”
#import“ RCTBridge.h”
#import“ RCTEventDispatcher.h”
@interface RCT_EXTERN_MODULE(CookieManager,NSObject)
RCT_EXTERN_METHOD(clearCookies)
@结束