老项目一般都是使用的微信三方组件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升级步骤
- 在xcode中删除原有RCTWeChat项目的引用,添加react-native-wechat-lib的project引用(项目名字也是RCTWeChat)
- 在Build Phase选项卡中打开Link Binary With Libraries,将libRctWeChat.a、WebKit.framework添加到列表中
-
打开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<id<UIUserActivityRestoring>> * __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
- 配置Universal Link,在Xcode的Signing&Capability选项卡中添加Associated Domains,将你选定的域名填进去,必须是https的,然后在微信开放平台中设置UniversalLink,必须与xcode中的一致,universallink设置方法参考苹果的文档和微信的开发者文档
-
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的调用,具体调用方法请参考这里