little-snow-fox / react-native-wechat-lib

🚀 WeChat login, share, favorite and payment for React-Native on iOS and Android
MIT License
679 stars 134 forks source link

手动升级到1.8.6.1的步骤 #38

Open swainxenia opened 4 years ago

swainxenia commented 4 years ago

原理:替换原生sdk,替换桥接文件 老项目一般都是使用的微信三方组件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,如图 WX20200323-095500@2x.png

然后再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
  1. 配置Universal Link,在Xcode的Signing&Capability选项卡中添加Associated Domains,将你选定的域名填进去,必须是https的,然后在微信开放平台中设置UniversalLink,必须与xcode中的一致,universallink设置方法参考苹果的文档和微信的开发者文档
  2. info.plist的LSApplicationQueriesSchemes WX20200323-100338@2x.png

安卓升级步骤

安卓升级相对简单,打开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会报错,根据提示添加缺少的引用即可,之后编译没有问题,即可升级成功

tanhao8 commented 4 years ago

添加react-native-wechat-lib的project引用(项目名字也是RCTWeChat) ,导致项目无法运行

tanhao8 commented 4 years ago

@swainxenia

swainxenia commented 4 years ago

添加react-native-wechat-lib的project引用(项目名字也是RCTWeChat) ,导致项目无法运行

具体什么报错?

tanhao8 commented 4 years ago

@swainxenia No known class method for selector 'handleOpenUniversalLink:delegate:'

swainxenia commented 4 years ago

@swainxenia No known class method for selector 'handleOpenUniversalLink:delegate:'

引入 "WXApi.h"

tanhao8 commented 4 years ago

即使不使用用回调方法,添加react-native-wechat-lib的project引用直接打包失败,没有任何错误提示

tanhao8 commented 4 years ago

@swainxenia 引入了

tanhao8 commented 4 years ago

@swainxenia 大佬 请求帮助

tanhao8 commented 4 years ago

@swainxenia 大佬 请问一下是我配置的原因导致项目无法运行吗,期望得到回复 谢谢

swainxenia commented 4 years ago

@swainxenia 大佬 请问一下是我配置的原因导致项目无法运行吗,期望得到回复 谢谢

由于没有你的报错信息,建议你参考react-native-wechat-lib的配置文档进行配置,我这个手动升级步骤写的有些简略,但是思路就是那样的,需要你自行理解一下

tanhao8 commented 4 years ago

@swainxenia 需要删除react-native-wechat以及配置项吗,好的 十分感谢大佬提供此库

little-snow-fox commented 4 years ago

本库 IOS 的 WeChat SDK 已经更新到 1.8.7.1,不需要再手动更新,并且引入不需要支付功能的版本