老項(xiàng)目一般都是使用的微信三方組件react-native-wechat,react-native-wechat最新的版本使用的1.7.2的微信sdk,由于微信通知要在2020年6月1日之前逐步回收老版本的sdk能力笼踩,所以不得不對(duì)微信sdk進(jìn)行升級(jí)在孝,以下分別是iOS和安卓的升級(jí)步驟
首先從github下載react-native-wechat-lib的項(xiàng)目源碼视译,該項(xiàng)目是使用了最新版本微信sdk的rn組件
組件作者推薦使用npm安裝院水,但是我測(cè)試發(fā)現(xiàn)npm安裝會(huì)產(chǎn)生一些其他的問(wèn)題,于是全部采用手動(dòng)操作
進(jìn)行升級(jí)之前先將react-naitve-wechat-lib項(xiàng)目源碼拷貝至你項(xiàng)目根目錄的node-modules文件夾內(nèi)
iOS升級(jí)步驟
- 在xcode中刪除原有RCTWeChat項(xiàng)目的引用屋摔,添加react-native-wechat-lib的project引用(項(xiàng)目名字也是RCTWeChat)
- 在Build Phase選項(xiàng)卡中打開(kāi)Link Binary With Libraries烁设,將libRctWeChat.a、WebKit.framework添加到列表中
-
打開(kāi)AppDelegate.h凡壤,添加#import "WXApi.h"署尤,并在AppDelegate中添加WXApiDelegate,如圖
WX20200323-095500@2x.png
然后再AppDelegate.m中添加如下代碼
#pragma mark - 跳轉(zhuǎn)微信必須加以下代碼否則無(wú)法跳轉(zhuǎn)
- (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 {
// 觸發(fā)回調(diào)方法
[RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
return [WXApi handleOpenUniversalLink:userActivity
delegate:self];
}
如果出現(xiàn)報(bào)錯(cuò)找不到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選項(xiàng)卡中添加Associated Domains硝烂,將你選定的域名填進(jìn)去箕别,必須是https的,然后在微信開(kāi)放平臺(tái)中設(shè)置UniversalLink滞谢,必須與xcode中的一致串稀,universallink設(shè)置方法參考蘋(píng)果的文檔和微信的開(kāi)發(fā)者文檔
-
info.plist的LSApplicationQueriesSchemes
WX20200323-100338@2x.png
安卓升級(jí)步驟
安卓升級(jí)相對(duì)簡(jiǎn)單,打開(kāi)rn工程目錄狮杨,用Android Studio打開(kāi)android原生項(xiàng)目母截,將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會(huì)報(bào)錯(cuò)橄教,根據(jù)提示添加缺少的引用即可清寇,之后編譯沒(méi)有問(wèn)題,即可升級(jí)成功
結(jié)語(yǔ)
以上操作完成之后即可在JS端進(jìn)行api的調(diào)用护蝶,具體調(diào)用方法請(qǐng)參考這里