当前位置: 首页 > news >正文

关于react native项目中使用react-native-wechat-lib@3.0.4

关于react native项目中使用react-native-wechat-lib@3.0.4

    • 插件官网
    • 安装依赖包(Android和iOS下载插件完成后记得更新依赖,)
    • Android中配置
      • 1.在项目文件夹下面创建文件夹wxapi(如上图)
      • 2.在文件MainApplication.java中如下配置
      • 3.在文件AndroidManifest.xml中添加如下配置
    • IOS配置
      • 1.在AppDelegate.h文件添加如下代码:
      • 2.在AppDelegate.mm文件添加如下代码:
      • 3.Info.plist文件
    • 在login.jsx页面中使用
    • 备注:文档官方文档更加详细

插件官网

https://www.npmjs.com/package/react-native-wechat-lib/v/3.0.4

安装依赖包(Android和iOS下载插件完成后记得更新依赖,)

npm i react-native-wechat-lib@3.0.4

Android中配置

在这里插入图片描述

1.在项目文件夹下面创建文件夹wxapi(如上图)

wxapi/WXEntryActivity.java

package 包名.wxapi;// react-native-wechat-lib support (
import android.app.Activity;
import android.os.Bundle;
import com.wechatlib.WeChatLibModule;public class WXEntryActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);WeChatLibModule.handleIntent(getIntent());finish();}
}
// )

2.在文件MainApplication.java中如下配置

package 包名;import android.app.Application;
import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
import com.facebook.react.defaults.DefaultReactNativeHost;
import com.facebook.soloader.SoLoader;
import java.util.List;
// react-native-wechat-lib support (
import com.wechatlib.WeChatLibPackage;
// )public class MainApplication extends Application implements ReactApplication {private final ReactNativeHost mReactNativeHost =new DefaultReactNativeHost(this) {@Overridepublic boolean getUseDeveloperSupport() {return BuildConfig.DEBUG;}@Overrideprotected List<ReactPackage> getPackages() {@SuppressWarnings("UnnecessaryLocalVariable")List<ReactPackage> packages = new PackageList(this).getPackages();// Packages that cannot be autolinked yet can be added manually here, for example:// packages.add(new MyReactNativePackage());// react-native-wechat-lib support (// Packages that cannot be autolinked yet can be added manually here, for example:packages.add(new WeChatLibPackage());// )return packages;}@Overrideprotected String getJSMainModuleName() {return "index";}@Overrideprotected boolean isNewArchEnabled() {return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;}@Overrideprotected Boolean isHermesEnabled() {return BuildConfig.IS_HERMES_ENABLED;}};@Overridepublic ReactNativeHost getReactNativeHost() {return mReactNativeHost;}@Overridepublic void onCreate() {super.onCreate();SoLoader.init(this, /* native exopackage */ false);if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {// If you opted-in for the New Architecture, we load the native entry point for this app.DefaultNewArchitectureEntryPoint.load();}ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());}
}

3.在文件AndroidManifest.xml中添加如下配置

<manifest xmlns:android="http://schemas.android.com/apk/res/android"><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 相机权限 --><uses-permission android:name="android.permission.CAMERA" /><!-- 如果需要使用麦克风进行视频录制 --><uses-permission android:name="android.permission.RECORD_AUDIO"/><!-- 如果需要使用相机胶卷 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 地址定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><applicationandroid:name=".MainApplication"android:label="@string/app_name"android:icon="@mipmap/ic_launcher"android:roundIcon="@mipmap/ic_launcher_round"android:allowBackup="false"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"android:label="@string/app_name"android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"android:launchMode="singleTask"android:windowSoftInputMode="adjustResize"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><intent-filter android:autoVerify="true"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><dataandroid:host="xxx"android:pathPrefix="/"android:scheme="xxxxx" /></intent-filter></activity><!--  react-native-wechat-lib support ( --><activityandroid:name=".wxapi.WXEntryActivity"android:label="@string/app_name"android:exported="true"android:taskAffinity="包名"android:launchMode="singleTask"/><!-- ) --></application><!--  react-native-wechat-lib support ( --><queries><package android:name="com.tencent.mm" /></queries><!-- ) -->
</manifest>

IOS配置

在这里插入图片描述
到微信下载最新sdk,放在上图位置
在Xcode进行环境配置:如图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.在AppDelegate.h文件添加如下代码:

#import <RCTAppDelegate.h>
#import <UIKit/UIKit.h>
#import "WXApi.h"@interface AppDelegate : RCTAppDelegate<WXApiDelegate>@end

2.在AppDelegate.mm文件添加如下代码:

#import "AppDelegate.h"#import <React/RCTBundleURLProvider.h>
#import <React/RCTLinkingManager.h>@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.moduleName = @"项目名称";// You can add your custom initial props in the dictionary below.// They will be passed down to the ViewController used by React Native.self.initialProps = @{};return [super application:application didFinishLaunchingWithOptions:launchOptions];
}- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUGreturn [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
#elsereturn [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
//ali
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{return [RCTLinkingManager application:application openURL:urlsourceApplication:sourceApplication annotation:annotation];
}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{return [RCTLinkingManager application:application openURL:url options:options];
}
//weixin
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return  [WXApi handleOpenURL:url delegate:self];
}- (BOOL)application:(UIApplication *)applicationcontinueUserActivity:(NSUserActivity *)userActivityrestorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullablerestorableObjects))restorationHandler {// 触发回调方法[RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];return [WXApi handleOpenUniversalLink:userActivitydelegate:self];
}@end

3.Info.plist文件

<key>CFBundleURLTypes</key><array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>alipay</string><key>CFBundleURLSchemes</key><array><string>alipayxxxxx</string></array></dict><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>weixin</string><key>CFBundleURLSchemes</key><array><string>wxxxxxx</string></array></dict></array>
<key>LSApplicationQueriesSchemes</key><array><string>iosamap</string><string>baidumap</string><string>qqmap</string><string>alipay</string><string>weixin</string><string>wechat</string><string>weixinULAPI</string><string>weixinURLParamsAPI</string></array>

在login.jsx页面中使用

import * as WeChat from 'react-native-wechat-lib';//微信授权登录WeChat.sendAuthRequest('snsapi_userinfo', 'wechat_sdk_demo').then(response => {console.warn(response); // 处理授权登录后的结果}).catch(error => {console.warn(error); // 处理授权登录后的结果});useEffect(() => {console.log('[登录]');WeChat.registerApp('wxxxxx','https://xxxxx.com/',);return () => {};}, []);

备注:文档官方文档更加详细

相关文章:

关于react native项目中使用react-native-wechat-lib@3.0.4

关于react native项目中使用react-native-wechat-lib3.0.4 插件官网安装依赖包&#xff08;Android和iOS下载插件完成后记得更新依赖&#xff0c;&#xff09;Android中配置1.在项目文件夹下面创建文件夹wxapi&#xff08;如上图&#xff09;2.在文件MainApplication.java中如下…...

【LeetCode刷题笔记(8-1)】【Python】【接雨水】【动态规划】【困难】

文章目录 引言接雨水题目描述提示 解决方案1&#xff1a;【动态规划】结束语 接雨水 引言 编写通过所有测试案例的代码并不简单&#xff0c;通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例&#xff0c;但如果不了解代码背后的思考过程&#xff0c;那么这些代…...

pycharm通过ssh连接远程服务器的docker容器进行运行和调试代码

pycharm连接远程服务器的docker容器通常有两种方法&#xff1a; 第一种&#xff1a;pycharm通过ssh连接已在运行中的docker容器 第二种&#xff1a;pycharm连接docker镜像&#xff0c;pycharm运行代码再自动创建容器 第一种方法比较通用简单&#xff0c;作者比较推崇。 条件…...

Chrome2023新版收藏栏UI改回旧版

版本 120.0.6099.109&#xff08;正式版本&#xff09;Chrome浏览器菜单新版、旧版的差异 想要将书签、功能内容改回旧版的朋友可以网址栏输入&#xff1a;「chrome://flags」&#xff0c;接着搜寻「Chrome Refresh 2023」。 最后将 Chrome Refresh 2023、Chrome Refresh 2023…...

WebSocket与JavaScript:实现实时获取位置

一、WebSocket介绍 WebSocket是一种在单个TCP连接上进行全双工通信的协议。与传统的HTTP请求相比&#xff0c;WebSocket能够在服务器和客户端之间建立持久连接&#xff0c;实现实时数据传输。WebSocket提供了较低的延迟和高效的数据传输。在实时舆情监测中&#xff0c;它能够实…...

一种解决Qt5发布release文件引发的无法定位程序输入点错误的方法

目录 本地环境问题描述分析解决方案 本地环境 本文将不会解释如何利用Qt5编译生成release类型的可执行文件以及如何利用windeployqt生成可执行的依赖库&#xff0c;请自行百度。 环境值操作系统Windows 10 专业版&#xff08;22H2&#xff09;Qt版本Qt 5.15.2Qt Creator版本5.0…...

UE4/UE5 日志插件(基于spdlog)

1 解决问题 对于高频日志序列化到本地的需求&#xff0c;spdlog肯定完美满足。 源码地址&#xff1a;https://github.com/gabime/spdlog 博主下载的版本为 spdlog-1.12.0&#xff0c;各位大佬可以根绝自己爱好选择。 2 过程介绍 大概目录&#xff1a; SpdlogLibC目录下是对…...

微信小程序ios中非cover组件点击重复触发地图tap事件

现象&#xff1a; map中使用view组件的click事件会重复触发地图的tap组件&#xff0c;只在ios上出现 <map id"maps" style"width: 100vw;height: 100vh;" :latitude"latitude" :longitude"longitude":markers"markers"…...

7.26 SpringBoot项目实战【还书】

文章目录 前言一、编写控制器二、编写服务层三、Git提交前言 本文是项目实战 业务接口 的最后一篇,上文 曾说过【还书】的 入口是【我的借阅记录】,因为【还书】是基于一次借阅记录而言,另外在4.2 数据库设计 曾分析过【还书】的业务场景,需要执行两步操作: 更新【借阅记…...

Golang中使用errors返回调用堆栈信息

Golang的errors包返回堆栈信息 标准库errors提供了处理错误的方法。比如常用的 func New(text string) error 用该方法处理错误信息&#xff0c;就只会输出自定义的 text 到控制台或者日志文件&#xff0c;没有其它辅助排查的信息输出&#xff0c;所以常规我们就只能根据 te…...

Web前端-HTML(常用标签)

文章目录 1. HTML常用标签1.1 排版标签1&#xff09;标题标签h (熟记)2&#xff09;段落标签p ( 熟记)3&#xff09;水平线标签hr(认识)4&#xff09;换行标签br (熟记)5&#xff09;div 和 span标签(重点)6&#xff09;排版标签总结 1.2 标签属性1.3 图像标签img (重点)1.4 链…...

一 OpenCV中的数据类型

1. cv::Mat 2. cv::Point 主要用来表示二维点&#xff0c;也有表示三维点的模板类型&#xff1b; cv::Point p(int, int) 最常用 ① cv::Point_<T> ② cv::Point2i cv::Point_<int> ③ cv::Point2f cv::Point_<float> ④ cv::Point2d …...

59. 螺旋矩阵 II(java实现,史上最详细教程,想学会的进!!!)

今天来分享一下螺旋矩阵的解题思路及代码的实现。 题目描述如下&#xff1a; 首先拿到这道题&#xff0c;首先不要慌张&#xff0c;我们来仔细分析一下会发现并没有那么难。 首先看下边界的元素是1、2、3递增的&#xff0c;那么我们也许可以根据这一点先把边界的元素一个一个给…...

vue 将后端返回的二进制流进行处理并实现下载

什么是二进制流文件&#xff1f; 二进制文件是一种计算机文件格式&#xff0c;它的数据以二进制形式存储&#xff0c;与文本文件不同。二进制文件可以包含任意类型的数据&#xff0c;例如图像、音频、视频、可执行文件、压缩文件等&#xff0c;而文本文件则仅仅包含 ASCII 码或…...

PyCharm连接远程服务器

要求&#xff1a;PyCharm专业版才支持远程服务 一、创建远程连接 先建立本地与远程服务器之间的SSH连接 1、配置连接 2、建立SSH连接&#xff0c;选择文件传输协议 SFTP 3、设置服务器名&#xff08;可以随意命名&#xff09; 4、配置 SSH连接 点击 172.18.1.202 配置…...

使用Qt制作网易云播放器的歌曲排行界面

&#xff01;&#xff01;&#xff01;直接上图&#xff01;&#xff01;&#xff01; &#xff01;&#xff01;&#xff01;直接上图&#xff01;&#xff01;&#xff01; &#xff01;&#xff01;&#xff01;直接上图&#xff01;&#xff01;&#xff01; 网易云排行榜…...

【.NET Core】特性(Attribute)详解

【.NET Core】特性&#xff08;Attribute&#xff09;详解 文章目录 【.NET Core】特性&#xff08;Attribute&#xff09;详解一、概述二、编写自定义属性2.1 自定义特性的主要步骤2.2 应用AttributeUsageAttributeAttributeTargets 成员Inherited属性AllowMultiple属性 三、声…...

【C++】POCO学习总结(十九):哈希、URL、UUID、配置文件、日志配置、动态库加载

【C】郭老二博文之&#xff1a;C目录 1、哈希 1.1 说明 std::map和std::set 的性能是&#xff1a;O(log n) POCO哈希的性能比STL容器更好&#xff0c;大约快两&#xff1b; POCO中对应std::map的是&#xff1a;Poco::HashMap&#xff1b; POCO中对应std::set的是 Poco::Hash…...

1846_安全SPI

Grey 全部学习内容汇总&#xff1a;GitHub - GreyZhang/g_embedded: some embedded basic knowledge. 1846_安全SPI SPI是一种常见的通信方式&#xff0c;在汽车电子中比较常用。但是如果涉及到安全相关的设计&#xff0c;可能得考虑更多。而SPI协议本身没有很好的标准化&am…...

SQL Server ,使用递归查询具有层级关系的数据。

假设我们有一个表格 Employees&#xff0c;其中包含员工的层级关系信息&#xff0c;每一行包括员工的ID、姓名以及上级员工的ID。 下面是一个示例表格及其数据&#xff1a; Employees ---------------------- EmployeeID | Name | ManagerID ---------------------- 1 …...

TPS40192与TPS40193多相降压控制器:DCR与CS电流检测方案深度对比与设计实践

1. 项目概述&#xff1a;从两颗芯片说起最近在做一个大电流的分布式电源项目&#xff0c;板子上需要给核心处理器和一堆外围芯片供电&#xff0c;电流需求从几安培到几十安培不等&#xff0c;电压轨也有好几路。这种场景下&#xff0c;传统的线性稳压器&#xff08;LDO&#xf…...

Unity 5.6移动VR开发与单通道渲染优化指南

1. Unity 5.6移动VR开发环境配置1.1 Daydream原生支持解析Unity 5.6首次实现了对Daydream平台的原生支持&#xff0c;这标志着移动VR开发进入新阶段。与传统的插件式集成不同&#xff0c;原生支持直接内置于引擎核心&#xff0c;带来三个显著优势&#xff1a;性能提升&#xff…...

终极风扇控制指南:FanControl免费软件让你的电脑散热更智能

终极风扇控制指南&#xff1a;FanControl免费软件让你的电脑散热更智能 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…...

Linux内核模块开发实战:用filp_open和vfs_read实现一个简易配置文件读取器

Linux内核模块开发实战&#xff1a;用filp_open和vfs_read实现一个简易配置文件读取器 在Linux内核开发中&#xff0c;有时我们需要在内核态直接读取用户空间的配置文件。这种需求常见于需要动态加载配置的驱动程序、内核日志系统或特殊的内核服务。本文将带你从零开始构建一个…...

C#面向对象封装详解:从字段到属性,为什么要用属性?

封装详解&#xff1a;从字段到属性1. 什么是封装封装是指隐藏类的内部实现细节&#xff0c;仅对外提供安全的访问接口&#xff0c;通过控制数据的读写操作来确保数据安全性。其核心目的是保护类中重要的内部数据。2. 字段直接暴露的问题当直接使用字段而不定义属性时&#xff0…...

Grasscutter命令生成器终极指南:如何5分钟上手原神私服管理

Grasscutter命令生成器终极指南&#xff1a;如何5分钟上手原神私服管理 【免费下载链接】GrasscutterCommandGenerator Command Generator and Gacha Banner Editor 项目地址: https://gitcode.com/gh_mirrors/gr/GrasscutterCommandGenerator Grasscutter命令生成器是一…...

基于LLM的智能网页自动化:从意图理解到工程实践

1. 项目概述&#xff1a;当AI学会“看”和“点”&#xff0c;自动化进入新阶段如果你还在为那些需要手动点击、填写表单、抓取数据的重复性网页任务感到头疼&#xff0c;那么browser-use这个项目可能会让你眼前一亮。简单来说&#xff0c;它不是一个普通的浏览器自动化工具&…...

GalaxyView和Halcon抢相机?手把手教你解决USB3.0大恒相机驱动冲突(附优先级切换技巧)

多视觉软件共存环境下的USB3.0相机驱动冲突深度解析与实战解决方案 在工业视觉和自动化检测领域&#xff0c;工程师常常需要同时使用多种视觉软件来完成不同的任务。Halcon以其强大的算法库著称&#xff0c;而GalaxyView则在相机控制和图像采集方面表现出色。但当这些软件共存于…...

别再手动输密码了!手把手教你配置Linux服务器SSH免密登录(附known_hosts文件详解)

彻底告别密码输入&#xff1a;Linux服务器SSH免密登录全指南与known_hosts深度解析 每次在终端输入ssh userremote_host后&#xff0c;那个令人烦躁的密码提示符又出现了——作为需要频繁在多台服务器间穿梭的运维人员或开发者&#xff0c;这种重复性劳动不仅浪费时间&#xff…...

快手推荐算法实战解析:从三层漏斗架构到多目标优化

1. 项目概述&#xff1a;从“刷”到“懂”&#xff0c;快手推荐算法的冰山一角 刷快手&#xff0c;可能是很多人每天的习惯性动作。手指一划&#xff0c;一个接一个的短视频&#xff0c;好像总能精准地戳中你的笑点、泪点或是知识盲区。你有没有想过&#xff0c;为什么你看到的…...