From a325e153c879466e1f981e0b63a1728f94135358 Mon Sep 17 00:00:00 2001 From: Norcy Date: Mon, 19 Aug 2024 15:19:33 +0800 Subject: [PATCH] =?UTF-8?q?iOS=20=E5=AE=9E=E7=8E=B0=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/WechatLib.mm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/ios/WechatLib.mm b/ios/WechatLib.mm index 8ece4c1..c94f3f6 100644 --- a/ios/WechatLib.mm +++ b/ios/WechatLib.mm @@ -5,6 +5,13 @@ #import #import #import +#import "WechatAuthSDK.h" + + +@interface WechatLib () +@property (nonatomic, strong) WechatAuthSDK *authSDK; +@property (nonatomic, strong) RCTResponseSenderBlock scanCallback; +@end @implementation WechatLib @@ -20,6 +27,8 @@ RCT_EXPORT_MODULE() self = [super init]; if (self) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOpenURL:) name:@"RCTOpenURLNotification" object:nil]; + self.authSDK = [[WechatAuthSDK alloc] init]; + self.authSDK.delegate = self; } return self; } @@ -644,4 +653,56 @@ RCT_EXPORT_METHOD(openCustomerServiceChat return type; } +#pragma mark - WechatAuthAPIDelegate + +RCT_EXPORT_METHOD(addListener:(NSString *)eventName) { + +} + +RCT_EXPORT_METHOD(removeListeners:(double)count) { + +} + +RCT_EXPORT_METHOD(authByScan:(NSString *)appid + nonceStr:(NSString *)nonceStr + timeStamp:(NSString *)timeStamp + scope:(NSString *)scope + signature:(NSString *)signature + schemeData:(nullable NSString *)schemeData + callback:(RCTResponseSenderBlock)callback) { + self.scanCallback = callback; + [self.authSDK StopAuth]; + [self.authSDK Auth:appid nonceStr:nonceStr timeStamp:timeStamp scope:scope signature:signature schemeData:schemeData]; +} + +//得到二维码 +- (void)onAuthGotQrcode:(UIImage *)image { + NSLog(@"onAuthGotQrcode"); + NSData *imageData = UIImagePNGRepresentation(image); + if (!imageData) { + imageData = UIImageJPEGRepresentation(image, 1); + } + NSString *base64String = [imageData base64EncodedStringWithOptions:0]; + [self.bridge.eventDispatcher sendDeviceEventWithName:@"onAuthGotQrcode" body:@{@"qrcode": base64String}]; +} + +//二维码被扫描 +- (void)onQrcodeScanned { + NSLog(@"onQrcodeScanned"); +} + +//成功登录 +- (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode { + NSLog(@"onAuthFinish"); + if (self.scanCallback) { + self.scanCallback(@[@{@"authCode": authCode?:@"", @"errCode": @(errCode)}]); + self.scanCallback = nil; + } +} + +- (NSArray *)supportedEvents +{ + return @[@"onAuthGotQrcode", @"onQrcodeScanned", @"onAuthFinish"]; +} + @end