# rntpc_cookies **Repository Path**: simplelove520/rntpc_cookies ## Basic Information - **Project Name**: rntpc_cookies - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: br_rnoh0.77 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-31 - **Last Updated**: 2026-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > 文档模板:v0.4.2

@react-native-cookies/cookies

本项目基于 [@react-native-cookies/cookies](https://github.com/react-native-cookies/cookies) 开发。 该第三方库的仓库已迁移至 Gitcode,且支持直接从 npm 下载,新的包名为:`@react-native-ohos/cookies`,版本所属关系如下: | 三方库名称 | 三方库版本(npm地址) | 发布信息 | 支持RN版本 | Autolink | 编译API版本 | 社区基线版本 | 源码地址 | | ---------- | --------------------- | -------- | ---------- | -------- | ------------ | ------------ | -------- | | @react-native-ohos/cookies | [~6.3.0](https://www.npmjs.com/package/@react-native-ohos/cookies) | [Gitcode Releases](https://gitcode.com/CPF-RN/rntpc_cookies/releases) | 0.77.* | 否 | API12+ | v6.2.1 | [br_rnoh0.77](https://gitcode.com/CPF-RN/rntpc_cookies/tree/br_rnoh0.77) | ## 简介 `cookies` 用于 React Native 应用中管理 Cookie,提供按 URL 读取、设置、删除 Cookie,以及清除全部或会话 Cookie 等能力。 使用本库时需要配合 `react-native-webview` 使用,具体请参考 [react-native-webview](https://gitcode.com/CPF-RN/usage-docs/blob/master/zh-cn/react-native-webview.md)。 ## 下载安装 进入到工程目录并输入以下命令: **npm** ```bash npm install @react-native-ohos/cookies ``` **yarn** ```bash yarn add @react-native-ohos/cookies ``` ## Link | | 是否支持autolink | RN框架版本 | |--------------------------------------|------------------|------------| | ~6.3.0 | No | 0.77 | 使用AutoLink的工程需要根据该文档配置,Autolink框架指导文档:https://gitcode.com/CPF-RN/ohos_react_native/blob/master/docs/zh-cn/Autolinking.md 如您使用的版本支持 Autolink,并且工程已接入 Autolink,可跳过ManualLink配置。 ManualLink: 此步骤为手动配置原生依赖项的指导。 首先需要使用 DevEco Studio 打开项目里的 HarmonyOS 工程 `harmony`。 ### 1. Overrides RN SDK 为了让工程依赖同一个版本的 RN SDK,需要在工程根目录的 `oh-package.json5` 添加 overrides 字段,指向工程需要使用的 RN SDK 版本。替换的版本既可以是一个具体的版本号,也可以是一个模糊版本,还可以是本地存在的 HAR 包或源码目录。 关于该字段的作用请阅读[官方说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-oh-package-json5-V5#zh-cn_topic_0000001792256137_overrides) ```json { "overrides": { "@rnoh/react-native-openharmony": "./react_native_openharmony" } } ``` ### 2. 引入原生端代码 目前有两种方法: - 通过 har 包引入; - 直接链接源码。 方法一:通过 har 包引入(推荐) > [!TIP] har 包位于三方库安装路径的 `harmony` 文件夹下。 打开 `entry/oh-package.json5`,添加以下依赖 ```json "dependencies": { "@rnoh/react-native-openharmony": "file:../react_native_openharmony", "@react-native-ohos/cookies": "file:../../node_modules/@react-native-ohos/cookies/harmony/rn_cookies.har" } ``` 点击右上角的 `sync` 按钮 或者在命令行终端执行: ```bash cd entry ohpm install ``` 方法二:直接链接源码 > [!TIP] 如需使用直接链接源码,请参考[直接链接源码说明](https://gitcode.com/CPF-RN/usage-docs/blob/master/zh-cn/link-source-code.md) ### 3. 配置 CMakeLists 和引入 CookiesPackage 打开 `entry/src/main/cpp/CMakeLists.txt`,添加: ```diff project(rnapp) cmake_minimum_required(VERSION 3.4.1) set(CMAKE_SKIP_BUILD_RPATH TRUE) set(RNOH_APP_DIR "${CMAKE_CURRENT_SOURCE_DIR}") set(NODE_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../node_modules") +set(OH_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules") set(RNOH_CPP_DIR "${OH_MODULES}/rnoh/src/main/cpp") set(CMAKE_CXX_FLAGS "-fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -s -fPIE -pie") add_subdirectory("${RNOH_CPP_DIR}" ./rn) # RNOH_BEGIN: manual_package_linking_1 add_subdirectory("../../../../sample_package/src/main/cpp" ./sample-package) +add_subdirectory("${OH_MODULES}/@react-native-ohos/cookies/src/main/cpp" ./rn_cookies) # RNOH_END: manual_package_linking_1 file(GLOB GENERATED_CPP_FILES "./generated/*.cpp") add_library(rnoh_app SHARED ${GENERATED_CPP_FILES} "./PackageProvider.cpp" "${RNOH_CPP_DIR}/RNOHAppNapiBridge.cpp" ) target_link_libraries(rnoh_app PUBLIC rnoh) # RNOH_BEGIN: manual_package_linking_2 target_link_libraries(rnoh_app PUBLIC rnoh_sample_package) +target_link_libraries(rnoh_app PUBLIC rnoh_cookies) # RNOH_END: manual_package_linking_2 ``` 打开 `entry/src/main/cpp/PackageProvider.cpp`,添加: ```diff #include "RNOH/PackageProvider.h" #include "SamplePackage.h" +#include "CookiesPackage.h" using namespace rnoh; std::vector> PackageProvider::getPackages(Package::Context ctx) { return { std::make_shared(ctx), + std::make_shared(ctx), }; } ``` ### 4. 在 ArkTs 侧引入 CookiesPackage 打开 `entry/src/main/ets/RNPackagesFactory.ts`,添加: ```diff import {CookiesPackage} from '@react-native-ohos/cookies/ts'; export function createRNPackages(ctx: RNPackageContext): RNPackage[] { return [ new CookiesPackage(ctx) ]; } ``` ### 运行 点击右上角的 `sync` 按钮 或者在命令行终端执行: ```bash cd entry ohpm install ``` 然后编译、运行即可。 ## 约束与限制 ### 兼容性 本文档内容基于以下版本验证通过: 1. RNOH: 0.77.18; SDK: HarmonyOS 6.0.0 Release SDK; IDE: DevEco Studio 6.0.0.858; ROM: 6.0.0.112; ### 权限要求 - 本库无特殊权限要求。 - 若配合 `react-native-webview` 访问网络页面,应用需要申请网络权限。 在 `entry/src/main/module.json5` 中添加: ```json requestPermissions: [ { "name": "ohos.permission.INTERNET", }, ], ``` ### 编译运行API要求 > [!TIP] 当前三方库所有版本均已实现版本隔离,支持在 `API12+` 工程编译,及 `API12+` ROM运行。 ## 使用示例 下面的代码展示了这个库的基本使用场景: > [!WARNING] 使用时 import 的库名不变。 ```javascript import React, { useState, useRef } from "react"; import { ScrollView, StyleSheet, Text, View, TouchableOpacity, } from "react-native"; import CookieManager from "@react-native-cookies/cookies"; import { WebView } from "react-native-webview"; export interface Cookie { name: string; value: string; path?: string; domain?: string; version?: string; expires?: string; secure?: boolean; httpOnly?: boolean; } export interface Cookies { [key: string]: Cookie; } export default function CookiesPage() { const httpUrl = "https://www.baidu.com"; const [result, setResult] = useState("请点击按钮,进行操作"); const webViewRef = useRef(null); return ( {result} { let cookieResult = await CookieManager.clearAll(true); let result = cookieResult ? "清除所有cookie成功" : "清除所有cookie失败"; setResult(result + ""); }} > clearAll()【清除所有cookie】 { let cookieResult = await CookieManager.get(httpUrl, true); setResult(JSON.stringify(cookieResult)); }} > get()【根据url获取cookie】 { let curCookie: Cookie = { name: "myAddCookie", value: "myNewCookie" }; let cookieResult = await CookieManager.set(httpUrl, curCookie, true); let result = cookieResult ? "根据url设置cookie成功" : "根据url设置cookie失败"; setResult(result); }} > set()【根据url设置cookie】 { let cookieResult = await CookieManager.clearByName( httpUrl, "myAddCookie", true ); let result = cookieResult ? "根据名称删除cookie成功" : "根据名称删除cookie失败"; setResult(result); }} > clearByName()【根据名称删除cookie】 { let cookieResult = await CookieManager.removeSessionCookies(); let result = cookieResult ? "清除会话cookie成功" : "清除会话cookie失败"; setResult(result); }} > removeSessionCookies()【清除会话cookie】 ); } const styles = StyleSheet.create({ container: { width: "100%", height: "100%", alignItems: "center", }, pageArea: { width: "95%", height: 80, }, resultArea: { width: "95%", borderWidth: 2, borderColor: "gray", borderRadius: 10, marginTop: 5, }, button: { backgroundColor: "#FF0000", paddingHorizontal: 16, paddingVertical: 10, borderRadius: 24, alignItems: "center", justifyContent: "center", elevation: 4, width: "80%", marginTop: 5, }, }); ``` ## 接口说明 > [!TIP] "Platform"列表示该属性在原三方库上支持的平台。 > [!TIP] "OpenHarmony平台支持"列为 yes 表示 OpenHarmony平台支持该属性;no 则表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android 的效果。 ### API | 名称 | 类型 | 参数类型 | 返回值 | 必填 | 平台 | OpenHarmony平台支持 | 描述 | |------|------|----------|--------|------|------|-------------------|------| | clearAll | function | useWebKit?: boolean | Promise<boolean> | No | iOS, Android | yes | 清除所有 Cookie。 | | get | function | url: string, useWebKit?: boolean | Promise<Cookies> | No | iOS, Android | yes | 根据 URL 获取 Cookie。 | | set | function | url: string, cookie: Cookie, useWebKit?: boolean | Promise<boolean> | No | iOS, Android | yes | 根据 URL 设置 Cookie。 | | clearByName | function | url: string, name: string, useWebKit?: boolean | Promise<boolean> | No | iOS | yes | 根据 URL 和名称删除 Cookie。 | | flush | function | / | Promise<void> | No | Android | no | 刷新 Cookie 存储。 | | removeSessionCookies | function | / | Promise<boolean> | No | iOS, Android | yes | 清除会话 Cookie。 | | getAll | function | useWebKit?: boolean | Promise<Cookies> | No | iOS | no | 获取所有 Cookie。 | | setFromResponse | function | url: string, cookie: string | Promise<boolean> | No | iOS | no | 根据响应头设置 Cookie。 | | getFromResponse | function | url: string | Promise<Cookies> | No | iOS | no | 根据响应头获取 Cookie。 | ## 遗留问题 - `getAll`、`setFromResponse`、`getFromResponse` 在 iOS 上可用、Android 上不可用;`flush` 仅 Android 可用、iOS 不可用,OpenHarmony 不支持(鸿蒙侧无持久化屏障 API,`CookieManager.flush()` 在鸿蒙平台为 no-op)。问题:[issue#1](https://github.com/react-native-oh-library/react-native-cookies/issues/1) ## 其他 无 ## 目录结构 ```` /rntpc_cookies # 项目根目录 ├── harmony │ └── rn_cookies # HarmonyOS 适配核心代码 │ ├── Index.ets # HarmonyOS 适配入口 │ ├── ts.ets # TS 导出入口 │ └── src/main │ ├── cpp # C++ Turbo Module 与 Package │ │ ├── CMakeLists.txt │ │ ├── CookiesPackage.h │ │ ├── CookiesTurboModule.h │ │ ├── CookiesTurboModule.cpp │ │ └── generated # Codegen 生成的 Turbo Module 代码 │ └── ets # ArkTS 适配实现 │ ├── CookiesPackage.ts │ ├── CookiesModule.ts │ ├── Logger.ets │ └── generated # Codegen 生成的 ArkTS 代码 ├── src │ └── NativeRTNCookies.tsx # RN Codegen 规格 ├── index.js # JS API 入口 └── index.d.ts # TypeScript 类型定义 ```` ## 贡献代码 使用过程中发现任何问题都可以提交 [Issue](https://gitcode.com/CPF-RN/rntpc_cookies/issues),当然,也非常欢迎提交 [PR](https://gitcode.com/CPF-RN/rntpc_cookies/pulls)。 ## 开源协议 本项目基于 [The MIT License (MIT)](https://github.com/react-native-cookies/cookies/blob/master/LICENSE),请自由地享受和参与开源。