为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)

@结束