RN老项目升级最新微信sdk1.8.6.1

老项目一般都是使用的微信三方组件react-native-wechat,react-native-wechat最新的版本使用的1.7.2的微信sdk,由于微信通知要在2020年6月1日之前逐步回收老版本的sdk能力,所以不得不对微信sdk进行升级,以下分别是iOS和安卓的升级步骤
首先从github下载react-native-wechat-lib的项目源码,该项目是使用了最新版本微信sdk的rn组件
组件作者推荐使用npm安装,但是我测试发现npm安装会产生一些其他的问题,于是全部采用手动操作
进行升级之前先将react-naitve-wechat-lib项目源码拷贝至你项目根目录的node-modules文件夹内

iOS升级步骤

  1. 在xcode中删除原有RCTWeChat项目的引用,添加react-native-wechat-lib的project引用(项目名字也是RCTWeChat)
  2. 在Build Phase选项卡中打开Link Binary With Libraries,将libRctWeChat.a、WebKit.framework添加到列表中
  3. 打开AppDelegate.h,添加#import "WXApi.h",并在AppDelegate中添加WXApiDelegate,如图


然后再AppDelegate.m中添加如下代码

#pragma mark - 跳转微信必须加以下代码否则无法跳转
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return  [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application
  continueUserActivity:(NSUserActivity *)userActivity
  restorationHandler:(void(^)(NSArray> * __nullable
  restorableObjects))restorationHandler {
  // 触发回调方法
  [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
  return [WXApi handleOpenUniversalLink:userActivity
  delegate:self];
}

如果出现报错找不到WXApi、RCTLinkingManager,你需要在Build Settings中添加Header Search Path如下

$(SRCROOT)/../node_modules/react-native-wechat-lib/ios
$(SRCROOT)/../node_modules/react-native/Libraries/LinkingIOS
  1. 配置Universal Link,在Xcode的Signing&Capability选项卡中添加Associated Domains,将你选定的域名填进去,必须是https的,然后在微信开放平台中设置UniversalLink,必须与xcode中的一致,universallink设置方法参考苹果的文档和微信的开发者文档
  2. info.plist的LSApplicationQueriesSchemes


安卓升级步骤

安卓升级相对简单,打开rn工程目录,用Android Studio打开android原生项目,将setting.gradle中的react-native-wechat改为react-native-wechat-lib
include ':RCTWeChat'
project(':RCTWeChat').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-wechat-lib/android')

然后编译,Android Studio会报错,根据提示添加缺少的引用即可,之后编译没有问题,即可升级成功

结语

以上操作完成之后即可在JS端进行api的调用,具体调用方法请参考这里

你可能感兴趣的:(RN老项目升级最新微信sdk1.8.6.1)