当前位置: 首页 > 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 () => {};}, []);

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

http://www.lryc.cn/news/262767.html

相关文章:

  • 【LeetCode刷题笔记(8-1)】【Python】【接雨水】【动态规划】【困难】
  • pycharm通过ssh连接远程服务器的docker容器进行运行和调试代码
  • Chrome2023新版收藏栏UI改回旧版
  • WebSocket与JavaScript:实现实时获取位置
  • 一种解决Qt5发布release文件引发的无法定位程序输入点错误的方法
  • UE4/UE5 日志插件(基于spdlog)
  • 微信小程序ios中非cover组件点击重复触发地图tap事件
  • 7.26 SpringBoot项目实战【还书】
  • Golang中使用errors返回调用堆栈信息
  • Web前端-HTML(常用标签)
  • 一 OpenCV中的数据类型
  • 59. 螺旋矩阵 II(java实现,史上最详细教程,想学会的进!!!)
  • vue 将后端返回的二进制流进行处理并实现下载
  • PyCharm连接远程服务器
  • 使用Qt制作网易云播放器的歌曲排行界面
  • 【.NET Core】特性(Attribute)详解
  • 【C++】POCO学习总结(十九):哈希、URL、UUID、配置文件、日志配置、动态库加载
  • 1846_安全SPI
  • SQL Server ,使用递归查询具有层级关系的数据。
  • 【参数汇总】mysql服务端/客户端常见优化参数
  • LeetCode 142. 环形链表 II
  • Leetcode刷题笔记题解(C++):224. 基本计算器
  • 还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
  • C# WPF上位机开发(树形控件在地图软件中的应用)
  • 【华为】文档中命令行约定格式规范(命令行格式规范、命令行行为规范、命令行参数格式、命令行规范)
  • Trie 字典树(c++)(前缀)
  • 全球移动通信(2G/3G/4G/5G)频谱分布情况
  • 【04】GeoScene导出海图或者电子航道图000数据成果
  • 安卓端出现https请求失败(转)
  • appium2.0.1安装完整教程+uiautomator2安装教程