Unverified 提交 a43af1aa authored 作者: JarvanMo's avatar JarvanMo 提交者: GitHub

🔥 Remove thumbnail and format files (#662)

Resolves #661
...@@ -20,9 +20,8 @@ ...@@ -20,9 +20,8 @@
return instance; return instance;
} }
- (void) registerWxAPI:(NSString *)appId universalLink:(NSString *)universalLink { - (void)registerWxAPI:(NSString *)appId universalLink:(NSString *)universalLink {
[WXApi registerApp:appId universalLink:universalLink]; [WXApi registerApp:appId universalLink:universalLink];
} }
@end @end
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
NSString *const fluwxKeyTitle = @"title"; NSString *const fluwxKeyTitle = @"title";
NSString *const fluwxKeyImage = @ "image"; NSString *const fluwxKeyImage = @ "image";
NSString *const fluwxKeyImageData = @ "imageData"; NSString *const fluwxKeyImageData = @ "imageData";
NSString *const fluwxKeyThumbnail = @"thumbnail";
NSString *const fluwxKeyDescription = @"description"; NSString *const fluwxKeyDescription = @"description";
NSString *const fluwxKeyMsgSignature = @"msgSignature"; NSString *const fluwxKeyMsgSignature = @"msgSignature";
NSString *const fluwxKeyThumbData = @"thumbData"; NSString *const fluwxKeyThumbData = @"thumbData";
...@@ -29,8 +28,6 @@ NSString *const fluwxKeyTimeline = @"timeline"; ...@@ -29,8 +28,6 @@ NSString *const fluwxKeyTimeline = @"timeline";
NSString *const fluwxKeySession = @"session"; NSString *const fluwxKeySession = @"session";
NSString *const fluwxKeyFavorite = @"favorite"; NSString *const fluwxKeyFavorite = @"favorite";
NSString *const fluwxKeyCompressThumbnail = @"compressThumbnail";
NSString *const keySource = @"source"; NSString *const keySource = @"source";
NSString *const keySuffix = @"suffix"; NSString *const keySuffix = @"suffix";
...@@ -39,12 +36,14 @@ CGFloat thumbnailWidth; ...@@ -39,12 +36,14 @@ CGFloat thumbnailWidth;
NSUInteger defaultThumbnailSize = 32 * 1024; NSUInteger defaultThumbnailSize = 32 * 1024;
@interface FluwxPlugin()<WXApiDelegate,WechatAuthAPIDelegate> @interface FluwxPlugin()<WXApiDelegate,WechatAuthAPIDelegate>
@property (strong,nonatomic)NSString *extMsg;
@property (strong, nonatomic)NSString *extMsg;
@end @end
typedef void(^FluwxWXReqRunnable)(void); typedef void(^FluwxWXReqRunnable)(void);
@implementation FluwxPlugin { @implementation FluwxPlugin {
FlutterMethodChannel *_channel; FlutterMethodChannel *_channel;
WechatAuthSDK *_qrauth; WechatAuthSDK *_qrauth;
BOOL _isRunning; BOOL _isRunning;
...@@ -66,12 +65,11 @@ BOOL handleOpenURLByFluwx = YES; ...@@ -66,12 +65,11 @@ BOOL handleOpenURLByFluwx = YES;
NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar { + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
_fluwxRegistrar = registrar; _fluwxRegistrar = registrar;
FlutterMethodChannel *channel = FlutterMethodChannel *channel =
[FlutterMethodChannel methodChannelWithName:@"com.jarvanmo/fluwx" [FlutterMethodChannel methodChannelWithName:@"com.jarvanmo/fluwx"
binaryMessenger:[registrar messenger]]; binaryMessenger:[registrar messenger]];
FluwxPlugin *instance = [[FluwxPlugin alloc] initWithChannel:channel]; FluwxPlugin *instance = [[FluwxPlugin alloc] initWithChannel:channel];
[registrar addApplicationDelegate:instance]; [registrar addApplicationDelegate:instance];
[registrar addMethodCallDelegate:instance channel:channel]; [registrar addMethodCallDelegate:instance channel:channel];
...@@ -96,7 +94,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -96,7 +94,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} }
- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
if ([@"registerApp" isEqualToString:call.method]) { if ([@"registerApp" isEqualToString:call.method]) {
[self registerApp:call result:result]; [self registerApp:call result:result];
} else if ([@"isWeChatInstalled" isEqualToString:call.method]) { } else if ([@"isWeChatInstalled" isEqualToString:call.method]) {
...@@ -119,9 +116,9 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -119,9 +116,9 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
[self handleautoDeductV2:call result:result]; [self handleautoDeductV2:call result:result];
} else if ([@"openBusinessView" isEqualToString:call.method]) { } else if ([@"openBusinessView" isEqualToString:call.method]) {
[self handleOpenBusinessView:call result:result]; [self handleOpenBusinessView:call result:result];
}else if([@"authByPhoneLogin" isEqualToString:call.method]){ } else if ([@"authByPhoneLogin" isEqualToString:call.method]) {
[self handleAuthByPhoneLogin:call result:result]; [self handleAuthByPhoneLogin:call result:result];
}else if([@"getExtMsg" isEqualToString:call.method]){ } else if ([@"getExtMsg" isEqualToString:call.method]) {
[self handelGetExtMsgWithCall:call result:result]; [self handelGetExtMsgWithCall:call result:result];
} else if ([call.method hasPrefix:@"share"]) { } else if ([call.method hasPrefix:@"share"]) {
[self handleShare:call result:result]; [self handleShare:call result:result];
...@@ -133,24 +130,23 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -133,24 +130,23 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
[self handleOpenRankListCall:call result:result]; [self handleOpenRankListCall:call result:result];
} else if ([@"openUrl" isEqualToString:call.method]) { } else if ([@"openUrl" isEqualToString:call.method]) {
[self handleOpenUrlCall:call result:result]; [self handleOpenUrlCall:call result:result];
} else if([@"openWeChatInvoice" isEqualToString:call.method]) { } else if ([@"openWeChatInvoice" isEqualToString:call.method]) {
[self openWeChatInvoice:call result:result]; [self openWeChatInvoice:call result:result];
} else if([@"selfCheck" isEqualToString:call.method]) { } else if ([@"selfCheck" isEqualToString:call.method]) {
#ifndef __OPTIMIZE__ #ifndef __OPTIMIZE__
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) { [WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult *result) {
NSString *log = [NSString stringWithFormat:@"%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion]; NSString *log = [NSString stringWithFormat:@"%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion];
[self logToFlutterWithDetail:log]; [self logToFlutterWithDetail:log];
}]; }];
#endif #endif
result(nil); result(nil);
} else if([@"attemptToResumeMsgFromWx" isEqualToString:call.method]){ } else if ([@"attemptToResumeMsgFromWx" isEqualToString:call.method]) {
if (_attemptToResumeMsgFromWxRunnable != nil) { if (_attemptToResumeMsgFromWxRunnable != nil) {
_attemptToResumeMsgFromWxRunnable(); _attemptToResumeMsgFromWxRunnable();
_attemptToResumeMsgFromWxRunnable = nil; _attemptToResumeMsgFromWxRunnable = nil;
} }
result(nil); result(nil);
} } else if ([@"payWithFluwx" isEqualToString:call.method]) {
else if ([@"payWithFluwx" isEqualToString:call.method]) {
#ifndef NO_PAY #ifndef NO_PAY
[self handlePayment:call result:result]; [self handlePayment:call result:result];
#else #else
...@@ -162,21 +158,23 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -162,21 +158,23 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
#else #else
result(@NO); result(@NO);
#endif #endif
} } else {
else {
result(FlutterMethodNotImplemented); result(FlutterMethodNotImplemented);
} }
} }
- (void)openWeChatInvoice:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)openWeChatInvoice:(FlutterMethodCall *)call result:(FlutterResult)result {
NSString *appId = call.arguments[@"appId"]; NSString *appId = call.arguments[@"appId"];
if ([FluwxStringUtil isBlank:appId]) { if ([FluwxStringUtil isBlank:appId]) {
result([FlutterError errorWithCode:@"invalid app id" message:@"are you sure your app id is correct ? " details:appId]); result([FlutterError
errorWithCode:@"invalid app id"
message:@"are you sure your app id is correct ? "
details:appId]);
return; return;
} }
WXChooseInvoiceReq *chooseInvoiceReq = [[WXChooseInvoiceReq alloc] init]; WXChooseInvoiceReq *chooseInvoiceReq = [[WXChooseInvoiceReq alloc] init];
chooseInvoiceReq.appID = appId; chooseInvoiceReq.appID = appId;
chooseInvoiceReq.timeStamp = [[NSDate date] timeIntervalSince1970]; chooseInvoiceReq.timeStamp = [[NSDate date] timeIntervalSince1970];
...@@ -189,42 +187,48 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -189,42 +187,48 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} }
- (void)registerApp:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)registerApp:(FlutterMethodCall *)call result:(FlutterResult)result {
NSNumber* doOnIOS =call.arguments[@"iOS"]; NSNumber *doOnIOS = call.arguments[@"iOS"];
if (![doOnIOS boolValue]) { if (![doOnIOS boolValue]) {
result(@NO); result(@NO);
return; return;
} }
NSString *appId = call.arguments[@"appId"]; NSString *appId = call.arguments[@"appId"];
if ([FluwxStringUtil isBlank:appId]) { if ([FluwxStringUtil isBlank:appId]) {
result([FlutterError errorWithCode:@"invalid app id" message:@"are you sure your app id is correct ? " details:appId]); result([FlutterError
errorWithCode:@"invalid app id"
message:@"are you sure your app id is correct ? "
details:appId]);
return; return;
} }
NSString *universalLink = call.arguments[@"universalLink"]; NSString *universalLink = call.arguments[@"universalLink"];
if ([FluwxStringUtil isBlank:universalLink]) { if ([FluwxStringUtil isBlank:universalLink]) {
result([FlutterError errorWithCode:@"invalid universal link" message:@"are you sure your universal link is correct ? " details:universalLink]); result([FlutterError
errorWithCode:@"invalid universal link"
message:@"are you sure your universal link is correct ? "
details:universalLink]);
return; return;
} }
BOOL isWeChatRegistered = [WXApi registerApp:appId universalLink:universalLink]; BOOL isWeChatRegistered = [WXApi registerApp:appId universalLink:universalLink];
// If registration fails, we can return immediately // If registration fails, we can return immediately
if(!isWeChatRegistered){ if (!isWeChatRegistered) {
result(@(isWeChatRegistered)); result(@(isWeChatRegistered));
_isRunning = NO; _isRunning = NO;
return; return;
} }
// Otherwise, since WXApi is now registered successfully, // Otherwise, since WXApi is now registered successfully,
// we can (and should) immediately handle the previously cached `app:openURL` event (if any) // we can (and should) immediately handle the previously cached `app:openURL` event (if any)
if (_cachedOpenUrlRequest != nil) { if (_cachedOpenUrlRequest != nil) {
_cachedOpenUrlRequest(); _cachedOpenUrlRequest();
_cachedOpenUrlRequest = nil; _cachedOpenUrlRequest = nil;
} }
// Set `_isRunning` after calling `_cachedOpenUrlRequest` to ensure that // Set `_isRunning` after calling `_cachedOpenUrlRequest` to ensure that
// the `onReq` triggered by this call to `_cachedOpenUrlRequest` will // the `onReq` triggered by this call to `_cachedOpenUrlRequest` will
// be stored in `_attemptToResumeMsgFromWxRunnable` which can be obtained // be stored in `_attemptToResumeMsgFromWxRunnable` which can be obtained
...@@ -233,7 +237,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -233,7 +237,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
// At the same time, this also coincides with the approach on the Android side: // At the same time, this also coincides with the approach on the Android side:
// cold start events are cached and triggered through `attemptToResumeMsgFromWx` // cold start events are cached and triggered through `attemptToResumeMsgFromWx`
_isRunning = isWeChatRegistered; _isRunning = isWeChatRegistered;
result(@(isWeChatRegistered)); result(@(isWeChatRegistered));
} }
...@@ -244,30 +248,27 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -244,30 +248,27 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (void)openWeChatCustomerServiceChat:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)openWeChatCustomerServiceChat:(FlutterMethodCall *)call result:(FlutterResult)result {
NSString *url = call.arguments[@"url"]; NSString *url = call.arguments[@"url"];
NSString *corpId = call.arguments[@"corpId"]; NSString *corpId = call.arguments[@"corpId"];
WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init]; WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init];
req.corpid = corpId; //企业ID req.corpid = corpId; //企业ID
req.url = url; //客服URL req.url = url; //客服URL
return [WXApi sendReq:req completion:^(BOOL success) { return [WXApi sendReq:req completion:^(BOOL success) {
result(@(success)); result(@(success));
}]; }];
} }
- (void)checkSupportOpenBusinessView:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)checkSupportOpenBusinessView:(FlutterMethodCall *)call result:(FlutterResult)result {
if(![WXApi isWXAppInstalled]){ if (![WXApi isWXAppInstalled]) {
result([FlutterError errorWithCode:@"WeChat Not Installed" message:@"Please install the WeChat first" details:nil]); result([FlutterError errorWithCode:@"WeChat Not Installed" message:@"Please install the WeChat first" details:nil]);
}else { } else {
result(@(true)); result(@(true));
} }
} }
#ifndef NO_PAY #ifndef NO_PAY
- (void)handlePayment:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handlePayment:(FlutterMethodCall *)call result:(FlutterResult)result {
NSNumber *timestamp = call.arguments[@"timeStamp"]; NSNumber *timestamp = call.arguments[@"timeStamp"];
NSString *partnerId = call.arguments[@"partnerId"]; NSString *partnerId = call.arguments[@"partnerId"];
NSString *prepayId = call.arguments[@"prepayId"]; NSString *prepayId = call.arguments[@"prepayId"];
NSString *packageValue = call.arguments[@"packageValue"]; NSString *packageValue = call.arguments[@"packageValue"];
...@@ -275,8 +276,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -275,8 +276,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
UInt32 timeStamp = [timestamp unsignedIntValue]; UInt32 timeStamp = [timestamp unsignedIntValue];
NSString *sign = call.arguments[@"sign"]; NSString *sign = call.arguments[@"sign"];
[FluwxDelegate defaultManager].extData = call.arguments[@"extData"]; [FluwxDelegate defaultManager].extData = call.arguments[@"extData"];
NSString * appId = call.arguments[@"appId"]; NSString *appId = call.arguments[@"appId"];
PayReq *req = [[PayReq alloc] init]; PayReq *req = [[PayReq alloc] init];
req.openID = (appId == (id) [NSNull null]) ? nil : appId; req.openID = (appId == (id) [NSNull null]) ? nil : appId;
req.partnerId = partnerId; req.partnerId = partnerId;
...@@ -285,16 +286,16 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -285,16 +286,16 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
req.timeStamp = timeStamp; req.timeStamp = timeStamp;
req.package = packageValue; req.package = packageValue;
req.sign = sign; req.sign = sign;
[WXApi sendReq:req completion:^(BOOL done) { [WXApi sendReq:req completion:^(BOOL done) {
result(@(done)); result(@(done));
}]; }];
} }
- (void)handleHongKongWalletPayment:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handleHongKongWalletPayment:(FlutterMethodCall *)call result:(FlutterResult)result {
NSString *partnerId = call.arguments[@"prepayId"]; NSString *partnerId = call.arguments[@"prepayId"];
WXOpenBusinessWebViewReq *req = [[WXOpenBusinessWebViewReq alloc] init]; WXOpenBusinessWebViewReq *req = [[WXOpenBusinessWebViewReq alloc] init];
req.businessType = 1; req.businessType = 1;
NSMutableDictionary *queryInfoDic = [NSMutableDictionary dictionary]; NSMutableDictionary *queryInfoDic = [NSMutableDictionary dictionary];
...@@ -309,8 +310,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -309,8 +310,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (void)handleLaunchMiniProgram:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handleLaunchMiniProgram:(FlutterMethodCall *)call result:(FlutterResult)result {
NSString *userName = call.arguments[@"userName"]; NSString *userName = call.arguments[@"userName"];
NSString *path = call.arguments[@"path"]; NSString *path = call.arguments[@"path"];
// WXMiniProgramType *miniProgramType = call.arguments[@"miniProgramType"]; //WXMiniProgramType *miniProgramType = call.arguments[@"miniProgramType"];
NSNumber *typeInt = call.arguments[@"miniProgramType"]; NSNumber *typeInt = call.arguments[@"miniProgramType"];
WXMiniProgramType miniProgramType = WXMiniProgramTypeRelease; WXMiniProgramType miniProgramType = WXMiniProgramTypeRelease;
if ([typeInt isEqualToNumber:@1]) { if ([typeInt isEqualToNumber:@1]) {
...@@ -318,13 +319,12 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -318,13 +319,12 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} else if ([typeInt isEqualToNumber:@2]) { } else if ([typeInt isEqualToNumber:@2]) {
miniProgramType = WXMiniProgramTypePreview; miniProgramType = WXMiniProgramTypePreview;
} }
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object]; WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = userName; launchMiniProgramReq.userName = userName;
launchMiniProgramReq.path = (path == (id) [NSNull null]) ? nil : path; launchMiniProgramReq.path = (path == (id) [NSNull null]) ? nil : path;
launchMiniProgramReq.miniProgramType = miniProgramType; launchMiniProgramReq.miniProgramType = miniProgramType;
[WXApi sendReq:launchMiniProgramReq completion:^(BOOL done) { [WXApi sendReq:launchMiniProgramReq completion:^(BOOL done) {
result(@(done)); result(@(done));
}]; }];
...@@ -337,17 +337,17 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -337,17 +337,17 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
NSNumber *scene = [params valueForKey:@"scene"]; NSNumber *scene = [params valueForKey:@"scene"];
NSString *templateId = [params valueForKey:@"templateId"]; NSString *templateId = [params valueForKey:@"templateId"];
NSString *reserved = [params valueForKey:@"reserved"]; NSString *reserved = [params valueForKey:@"reserved"];
WXSubscribeMsgReq *req = [WXSubscribeMsgReq new]; WXSubscribeMsgReq *req = [WXSubscribeMsgReq new];
#if __LP64__ #if __LP64__
req.scene = [scene unsignedIntValue]; req.scene = [scene unsignedIntValue];
#else #else
req.scene = [scene unsignedLongValue]; req.scene = [scene unsignedLongValue];
#endif #endif
req.templateId = templateId; req.templateId = templateId;
req.reserved = reserved; req.reserved = reserved;
req.openID = appId; req.openID = appId;
[WXApi sendReq:req completion:^(BOOL done) { [WXApi sendReq:req completion:^(BOOL done) {
result(@(done)); result(@(done));
}]; }];
...@@ -367,7 +367,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -367,7 +367,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (void)handleautoDeductV2:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handleautoDeductV2:(FlutterMethodCall *)call result:(FlutterResult)result {
NSMutableDictionary *paramsFromDart = call.arguments[@"queryInfo"]; NSMutableDictionary *paramsFromDart = call.arguments[@"queryInfo"];
// [paramsFromDart removeObjectForKey:@"businessType"]; // [paramsFromDart removeObjectForKey:@"businessType"];
WXOpenBusinessWebViewReq *req = [[WXOpenBusinessWebViewReq alloc] init]; WXOpenBusinessWebViewReq *req = [[WXOpenBusinessWebViewReq alloc] init];
NSNumber *businessType = call.arguments[@"businessType"]; NSNumber *businessType = call.arguments[@"businessType"];
req.businessType = [businessType unsignedIntValue]; req.businessType = [businessType unsignedIntValue];
...@@ -379,7 +379,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -379,7 +379,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (void)handleOpenBusinessView:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handleOpenBusinessView:(FlutterMethodCall *)call result:(FlutterResult)result {
NSDictionary *params = call.arguments; NSDictionary *params = call.arguments;
WXOpenBusinessViewReq *req = [WXOpenBusinessViewReq object]; WXOpenBusinessViewReq *req = [WXOpenBusinessViewReq object];
NSString *businessType = [params valueForKey:@"businessType"]; NSString *businessType = [params valueForKey:@"businessType"];
NSString *query = [params valueForKey:@"query"]; NSString *query = [params valueForKey:@"query"];
...@@ -393,14 +393,17 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -393,14 +393,17 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (void)handelGetExtMsgWithCall:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handelGetExtMsgWithCall:(FlutterMethodCall *)call result:(FlutterResult)result {
result([FluwxDelegate defaultManager].extMsg); result([FluwxDelegate defaultManager].extMsg);
[FluwxDelegate defaultManager].extMsg=nil; [FluwxDelegate defaultManager].extMsg = nil;
} }
// Deprecated since iOS 9 // Deprecated since iOS 9
// See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc // See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc
// Use `application:openURL:options:` instead. // Use `application:openURL:options:` instead.
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { - (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// Since flutter has minimum iOS version requirement of 11.0, we don't need to change the implementation here. // Since flutter has minimum iOS version requirement of 11.0, we don't need to change the implementation here.
return [WXApi handleOpenURL:url delegate:self]; return [WXApi handleOpenURL:url delegate:self];
} }
...@@ -415,41 +418,39 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -415,41 +418,39 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
// Available on iOS 9.0 and later // Available on iOS 9.0 and later
// See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc // See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { - (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *, id> *)options {
// ↓ previous solution -- according to document, this may fail if the WXApi hasn't registered yet. // ↓ previous solution -- according to document, this may fail if the WXApi hasn't registered yet.
// return [WXApi handleOpenURL:url delegate:self]; // return [WXApi handleOpenURL:url delegate:self];
if (_isRunning) { if (_isRunning) {
// registered -- directly handle open url request by WXApi // registered -- directly handle open url request by WXApi
return [WXApi handleOpenURL:url delegate:self]; return [WXApi handleOpenURL:url delegate:self];
}else { } else {
// unregistered -- cache open url request and handle it once WXApi is registered // unregistered -- cache open url request and handle it once WXApi is registered
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;
_cachedOpenUrlRequest = ^() { _cachedOpenUrlRequest = ^() {
__strong typeof(weakSelf) strongSelf = weakSelf; __strong typeof(weakSelf) strongSelf = weakSelf;
[WXApi handleOpenURL:url delegate:strongSelf]; [WXApi handleOpenURL:url delegate:strongSelf];
}; };
// Let's hold this until the PR contributor send feedback. // Let's hold this until the PR contributor send feedback.
// if ([url.absoluteString contains:[self fetchWeChatAppId]]){ //return [url.absoluteString contains:[self fetchWeChatAppId]];
// return YES;
// } else {
// return NO;
// }
// simply return YES to indicate that we can handle open url request later // simply return YES to indicate that we can handle open url request later
return NO; return NO;
} }
} }
#ifndef SCENE_DELEGATE #ifndef SCENE_DELEGATE
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nonnull))restorationHandler{ - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *_Nonnull))restorationHandler{
// TODO: (if need) cache userActivity and handle it once WXApi is registered // TODO: (if need) cache userActivity and handle it once WXApi is registered
return [WXApi handleOpenUniversalLink:userActivity delegate:self]; return [WXApi handleOpenUniversalLink:userActivity delegate:self];
} }
#endif #endif
#ifdef SCENE_DELEGATE #ifdef SCENE_DELEGATE
- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity API_AVAILABLE(ios(13.0)){ - (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity API_AVAILABLE(ios(13.0)) {
// TODO: (if need) cache userActivity and handle it once WXApi is registered // TODO: (if need) cache userActivity and handle it once WXApi is registered
[WXApi handleOpenUniversalLink:userActivity delegate:self]; [WXApi handleOpenUniversalLink:userActivity delegate:self];
} }
...@@ -460,18 +461,18 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -460,18 +461,18 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
OpenWebviewReq *req = [[OpenWebviewReq alloc] init]; OpenWebviewReq *req = [[OpenWebviewReq alloc] init];
req.url = call.arguments[@"url"]; req.url = call.arguments[@"url"];
[WXApi sendReq:req [WXApi sendReq:req
completion:^(BOOL success){ completion:^(BOOL success) {
result(@(success)); result(@(success));
}]; }];
} }
- (void)handleOpenRankListCall:(FlutterMethodCall *)call - (void)handleOpenRankListCall:(FlutterMethodCall *)call
result:(FlutterResult)result { result:(FlutterResult)result {
OpenRankListReq *req = [[OpenRankListReq alloc] init]; OpenRankListReq *req = [[OpenRankListReq alloc] init];
[WXApi sendReq:req [WXApi sendReq:req
completion:^(BOOL success){ completion:^(BOOL success) {
result(@(success)); result(@(success));
}]; }];
} }
- (BOOL)handleOpenURL:(NSNotification *)aNotification { - (BOOL)handleOpenURL:(NSNotification *)aNotification {
...@@ -485,7 +486,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -485,7 +486,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} }
- (void)logToFlutterWithDetail:(NSString *) detail { - (void)logToFlutterWithDetail:(NSString *) detail {
if(_channel != nil){ if (_channel != nil) {
NSDictionary *result = @{ NSDictionary *result = @{
@"detail":detail @"detail":detail
}; };
...@@ -514,300 +515,233 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -514,300 +515,233 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (void)shareText:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)shareText:(FlutterMethodCall *)call result:(FlutterResult)result {
NSString *text = call.arguments[@"source"]; NSString *text = call.arguments[@"source"];
NSNumber *scene = call.arguments[fluwxKeyScene]; NSNumber *scene = call.arguments[fluwxKeyScene];
[self sendText:text InScene:[self intToWeChatScene:scene] completion:^(BOOL done) { [self sendText:text InScene:[self intToWeChatScene:scene] completion:^(BOOL done) {
result(@(done)); result(@(done));
}]; }];
} }
- (void)shareImage:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)shareImage:(FlutterMethodCall *)call result:(FlutterResult)result {
NSNumber *scene = call.arguments[fluwxKeyScene];
NSDictionary *sourceImage = call.arguments[keySource];
FlutterStandardTypedData *flutterImageData = sourceImage[@"uint8List"];
NSData *imageData = nil;
if (flutterImageData != nil) {
imageData = flutterImageData.data;
}
NSString *imageDataHash = sourceImage[@"imgDataHash"];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]) {
thumbData = flutterThumbData.data;
}
dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);
dispatch_async(globalQueue, ^{ dispatch_async(globalQueue, ^{
NSDictionary *sourceImage = call.arguments[keySource];
FlutterStandardTypedData *flutterImageData = sourceImage[@"uint8List"];
NSData *imageData = nil;
if (flutterImageData != nil){
imageData = flutterImageData.data;
}
NSString * imageDataHash = sourceImage[@"imgDataHash"];
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]){
thumbData = flutterThumbData.data;
}
NSNumber *scene = call.arguments[fluwxKeyScene];
[self sendImageData:imageData [self sendImageData:imageData
ImgDataHash:imageDataHash ImgDataHash:imageDataHash
TagName:call.arguments[fluwxKeyMediaTagName] TagName:call.arguments[fluwxKeyMediaTagName]
MessageExt:call.arguments[fluwxKeyMessageExt] MessageExt:call.arguments[fluwxKeyMessageExt]
Action:call.arguments[fluwxKeyMessageAction] Action:call.arguments[fluwxKeyMessageAction]
InScene:[self intToWeChatScene:scene] InScene:[self intToWeChatScene:scene]
title:call.arguments[fluwxKeyTitle] title:call.arguments[fluwxKeyTitle]
description:call.arguments[fluwxKeyDescription] description:call.arguments[fluwxKeyDescription]
MsgSignature:call.arguments[fluwxKeyMsgSignature] MsgSignature:call.arguments[fluwxKeyMsgSignature]
ThumbData:thumbData ThumbData:thumbData
ThumbDataHash:call.arguments[fluwxKeyThumbDataHash] ThumbDataHash:call.arguments[fluwxKeyThumbDataHash]
completion:^(BOOL done) { completion:^(BOOL done) {
result(@(done)); result(@(done));
} }];
];
}); });
}); });
} }
- (void)shareWebPage:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)shareWebPage:(FlutterMethodCall *)call result:(FlutterResult)result {
NSString *webPageUrl = call.arguments[@"webPage"];
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]) {
thumbData = flutterThumbData.data;
}
dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);
dispatch_async(globalQueue, ^{ dispatch_async(globalQueue, ^{
UIImage *thumbnailImage = [self getCommonThumbnail:call];
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
NSString *webPageUrl = call.arguments[@"webPage"];
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]){
thumbData = flutterThumbData.data;
}
[self sendLinkURL:webPageUrl [self sendLinkURL:webPageUrl
TagName:call.arguments[fluwxKeyMediaTagName] TagName:call.arguments[fluwxKeyMediaTagName]
Title:call.arguments[fluwxKeyTitle] Title:call.arguments[fluwxKeyTitle]
Description:call.arguments[fluwxKeyDescription] Description:call.arguments[fluwxKeyDescription]
ThumbImage:thumbnailImage MessageExt:call.arguments[fluwxKeyMessageExt]
MessageExt:call.arguments[fluwxKeyMessageExt] MessageAction:call.arguments[fluwxKeyMessageAction]
MessageAction:call.arguments[fluwxKeyMessageAction] InScene:[self intToWeChatScene:scene]
InScene:[self intToWeChatScene:scene] MsgSignature:call.arguments[fluwxKeyMsgSignature]
MsgSignature:call.arguments[fluwxKeyMsgSignature]
ThumbData:thumbData ThumbData:thumbData
ThumbDataHash:call.arguments[fluwxKeyThumbDataHash] ThumbDataHash:call.arguments[fluwxKeyThumbDataHash]
completion:^(BOOL done) { completion:^(BOOL done) {
result(@(done)); result(@(done));
}]; }];
}); });
}); });
} }
- (void)shareMusic:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)shareMusic:(FlutterMethodCall *)call result:(FlutterResult)result {
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]) {
thumbData = flutterThumbData.data;
}
dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);
dispatch_async(globalQueue, ^{ dispatch_async(globalQueue, ^{
UIImage *thumbnailImage = [self getCommonThumbnail:call];
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]){
thumbData = flutterThumbData.data;
}
NSNumber *scene = call.arguments[fluwxKeyScene];
[self sendMusicURL:call.arguments[@"musicUrl"] [self sendMusicURL:call.arguments[@"musicUrl"]
dataURL:call.arguments[@"musicDataUrl"] dataURL:call.arguments[@"musicDataUrl"]
MusicLowBandUrl:call.arguments[@"musicLowBandUrl"] MusicLowBandUrl:call.arguments[@"musicLowBandUrl"]
MusicLowBandDataUrl:call.arguments[@"musicLowBandDataUrl"] MusicLowBandDataUrl:call.arguments[@"musicLowBandDataUrl"]
Title:call.arguments[fluwxKeyTitle] Title:call.arguments[fluwxKeyTitle]
Description:call.arguments[fluwxKeyDescription] Description:call.arguments[fluwxKeyDescription]
ThumbImage:thumbnailImage MessageExt:call.arguments[fluwxKeyMessageExt]
MessageExt:call.arguments[fluwxKeyMessageExt] MessageAction:call.arguments[fluwxKeyMessageAction]
MessageAction:call.arguments[fluwxKeyMessageAction] TagName:call.arguments[fluwxKeyMediaTagName]
TagName:call.arguments[fluwxKeyMediaTagName] InScene:[self intToWeChatScene:scene]
InScene:[self intToWeChatScene:scene] MsgSignature:call.arguments[fluwxKeyMsgSignature]
MsgSignature:call.arguments[fluwxKeyMsgSignature]
ThumbData:thumbData ThumbData:thumbData
ThumbDataHash:call.arguments[fluwxKeyThumbDataHash] ThumbDataHash:call.arguments[fluwxKeyThumbDataHash]
completion:^(BOOL done) { completion:^(BOOL done) {
result(@(done)); result(@(done));
} }];
];
}); });
}); });
} }
- (void)shareVideo:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)shareVideo:(FlutterMethodCall *)call result:(FlutterResult)result {
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]) {
thumbData = flutterThumbData.data;
}
dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);
dispatch_async(globalQueue, ^{ dispatch_async(globalQueue, ^{
UIImage *thumbnailImage = [self getCommonThumbnail:call];
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]){
thumbData = flutterThumbData.data;
}
[self sendVideoURL:call.arguments[@"videoUrl"] [self sendVideoURL:call.arguments[@"videoUrl"]
VideoLowBandUrl:call.arguments[@"videoLowBandUrl"] VideoLowBandUrl:call.arguments[@"videoLowBandUrl"]
Title:call.arguments[fluwxKeyTitle] Title:call.arguments[fluwxKeyTitle]
Description:call.arguments[fluwxKeyDescription] Description:call.arguments[fluwxKeyDescription]
ThumbImage:thumbnailImage MessageExt:call.arguments[fluwxKeyMessageExt]
MessageExt:call.arguments[fluwxKeyMessageExt] MessageAction:call.arguments[fluwxKeyMessageAction]
MessageAction:call.arguments[fluwxKeyMessageAction] TagName:call.arguments[fluwxKeyMediaTagName]
TagName:call.arguments[fluwxKeyMediaTagName] InScene:[self intToWeChatScene:scene]
InScene:[self intToWeChatScene:scene] MsgSignature:call.arguments[fluwxKeyMsgSignature]
MsgSignature:call.arguments[fluwxKeyMsgSignature]
ThumbData:thumbData ThumbData:thumbData
ThumbDataHash:call.arguments[fluwxKeyThumbDataHash] ThumbDataHash:call.arguments[fluwxKeyThumbDataHash]
completion:^(BOOL done) { completion:^(BOOL done) {
result(@(done)); result(@(done));
}]; }];
}); });
}); });
} }
- (void)shareFile:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)shareFile:(FlutterMethodCall *)call result:(FlutterResult)result {
NSDictionary *sourceFile = call.arguments[keySource];
NSString *fileExtension;
NSString *suffix = sourceFile[keySuffix];
fileExtension = suffix;
if ([suffix hasPrefix:@"."]) {
NSRange range = NSMakeRange(0, 1);
fileExtension = [suffix stringByReplacingCharactersInRange:range withString:@""];
}
NSData *data = [self getNsDataFromWeChatFile:sourceFile];
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]) {
thumbData = flutterThumbData.data;
}
dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);
dispatch_async(globalQueue, ^{ dispatch_async(globalQueue, ^{
NSDictionary *sourceFile = call.arguments[keySource];
UIImage *thumbnailImage = [self getCommonThumbnail:call];
NSString *fileExtension;
NSString *suffix = sourceFile[keySuffix];
fileExtension = suffix;
if ([suffix hasPrefix:@"."]) {
NSRange range = NSMakeRange(0, 1);
fileExtension = [suffix stringByReplacingCharactersInRange:range withString:@""];
}
NSData *data = [self getNsDataFromWeChatFile:sourceFile];
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]){
thumbData = flutterThumbData.data;
}
[self sendFileData:data [self sendFileData:data
fileExtension:fileExtension fileExtension:fileExtension
Title:call.arguments[fluwxKeyTitle] Title:call.arguments[fluwxKeyTitle]
Description:call.arguments[fluwxKeyDescription] Description:call.arguments[fluwxKeyDescription]
ThumbImage:thumbnailImage InScene:[self intToWeChatScene:scene]
InScene:[self intToWeChatScene:scene] MsgSignature:call.arguments[fluwxKeyMsgSignature]
MsgSignature:call.arguments[fluwxKeyMsgSignature]
ThumbData:thumbData ThumbData:thumbData
ThumbDataHash:call.arguments[fluwxKeyThumbDataHash] ThumbDataHash:call.arguments[fluwxKeyThumbDataHash]
completion:^(BOOL success) { completion:^(BOOL success) {
result(@(success)); result(@(success));
}]; }];
}); });
}); });
} }
- (void)shareMiniProgram:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)shareMiniProgram:(FlutterMethodCall *)call result:(FlutterResult)result {
NSNumber *scene = call.arguments[fluwxKeyScene];
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
NSData *thumbData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]) {
thumbData = flutterThumbData.data;
}
FlutterStandardTypedData *hdImageDataPayload = call.arguments[@"hdImageData"];
NSData *hdImageData = nil;
if (![hdImageDataPayload isKindOfClass:[NSNull class]]) {
hdImageData = hdImageDataPayload.data;
}
NSNumber *typeInt = call.arguments[@"miniProgramType"];
WXMiniProgramType miniProgramType = WXMiniProgramTypeRelease;
if ([typeInt isEqualToNumber:@1]) {
miniProgramType = WXMiniProgramTypeTest;
} else if ([typeInt isEqualToNumber:@2]) {
miniProgramType = WXMiniProgramTypePreview;
}
dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);
dispatch_async(globalQueue, ^{ dispatch_async(globalQueue, ^{
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
FlutterStandardTypedData *flutterThumbData = call.arguments[fluwxKeyThumbData];
FlutterStandardTypedData *hdImageDataPayload = call.arguments[@"hdImageData"];
NSData *thumbData = nil;
NSData *hdImageData = nil;
if (![flutterThumbData isKindOfClass:[NSNull class]]){
thumbData = flutterThumbData.data;
}
if (![hdImageDataPayload isKindOfClass:[NSNull class]]){
hdImageData = hdImageDataPayload.data;
}
NSNumber *scene = call.arguments[fluwxKeyScene];
NSNumber *typeInt = call.arguments[@"miniProgramType"];
WXMiniProgramType miniProgramType = WXMiniProgramTypeRelease;
if ([typeInt isEqualToNumber:@1]) {
miniProgramType = WXMiniProgramTypeTest;
} else if ([typeInt isEqualToNumber:@2]) {
miniProgramType = WXMiniProgramTypePreview;
}
[self sendMiniProgramWebpageUrl:call.arguments[@"webPageUrl"] [self sendMiniProgramWebpageUrl:call.arguments[@"webPageUrl"]
userName:call.arguments[@"userName"] userName:call.arguments[@"userName"]
path:call.arguments[@"path"] path:call.arguments[@"path"]
title:call.arguments[fluwxKeyTitle] title:call.arguments[fluwxKeyTitle]
Description:call.arguments[fluwxKeyDescription] Description:call.arguments[fluwxKeyDescription]
withShareTicket:[call.arguments[@"withShareTicket"] boolValue] withShareTicket:[call.arguments[@"withShareTicket"] boolValue]
miniProgramType:miniProgramType miniProgramType:miniProgramType
MessageExt:call.arguments[fluwxKeyMessageExt] MessageExt:call.arguments[fluwxKeyMessageExt]
MessageAction:call.arguments[fluwxKeyMessageAction] MessageAction:call.arguments[fluwxKeyMessageAction]
TagName:call.arguments[fluwxKeyMediaTagName] TagName:call.arguments[fluwxKeyMediaTagName]
InScene:[self intToWeChatScene:scene] InScene:[self intToWeChatScene:scene]
MsgSignature:call.arguments[fluwxKeyMsgSignature] MsgSignature:call.arguments[fluwxKeyMsgSignature]
HdImageData:hdImageData HdImageData:hdImageData
ThumbData:thumbData ThumbData:thumbData
ThumbDataHash:call.arguments[fluwxKeyThumbDataHash] ThumbDataHash:call.arguments[fluwxKeyThumbDataHash]
completion:^(BOOL done) { completion:^(BOOL done) {
result(@(done)); result(@(done));
} }];
];
}); });
}); });
} }
- (UIImage *)getCommonThumbnail:(FlutterMethodCall *)call {
NSDictionary *thumbnail = call.arguments[fluwxKeyThumbnail];
if (thumbnail == nil || thumbnail == (id) [NSNull null]) {
return nil;
}
NSString *suffix = thumbnail[@"suffix"];
NSNumber *compress = call.arguments[fluwxKeyCompressThumbnail];
NSData *thumbnailData = [self getNsDataFromWeChatFile:thumbnail];
UIImage *thumbnailImage = [self getThumbnailFromNSData:thumbnailData size:defaultThumbnailSize isPNG:[self isPNG:suffix] compress:[compress boolValue]];
return thumbnailImage;
}
//enum ImageSchema {
// NETWORK,
// ASSET,
// FILE,
// BINARY,
//}
- (NSData *)getNsDataFromWeChatFile:(NSDictionary *)weChatFile { - (NSData *)getNsDataFromWeChatFile:(NSDictionary *)weChatFile {
NSNumber *schema = weChatFile[@"schema"]; NSNumber *schema = weChatFile[@"schema"];
if ([schema isEqualToNumber:@0]) { if ([schema isEqualToNumber:@0]) {
NSString *source = weChatFile[keySource]; NSString *source = weChatFile[keySource];
NSURL *imageURL = [NSURL URLWithString:source]; NSURL *imageURL = [NSURL URLWithString:source];
...@@ -829,10 +763,11 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -829,10 +763,11 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (UIImage *)getThumbnailFromNSData:(NSData *)data size:(NSUInteger)size isPNG:(BOOL)isPNG compress:(BOOL)compress { - (UIImage *)getThumbnailFromNSData:(NSData *)data size:(NSUInteger)size isPNG:(BOOL)isPNG compress:(BOOL)compress {
UIImage *uiImage = [UIImage imageWithData:data]; UIImage *uiImage = [UIImage imageWithData:data];
if (compress) if (compress) {
return [ThumbnailHelper compressImage:uiImage toByte:size isPNG:isPNG]; return [ThumbnailHelper compressImage:uiImage toByte:size isPNG:isPNG];
else } else {
return uiImage; return uiImage;
}
} }
- (NSData *)getThumbnailDataFromNSData:(NSData *)data size:(NSUInteger)size compress:(BOOL)compress { - (NSData *)getThumbnailDataFromNSData:(NSData *)data size:(NSUInteger)size compress:(BOOL)compress {
...@@ -851,7 +786,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -851,7 +786,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} else { } else {
key = [_fluwxRegistrar lookupKeyForAsset:array[0] fromPackage:array[1]]; key = [_fluwxRegistrar lookupKeyForAsset:array[0] fromPackage:array[1]];
} }
return [[NSBundle mainBundle] pathForResource:key ofType:nil]; return [[NSBundle mainBundle] pathForResource:key ofType:nil];
} }
...@@ -860,7 +795,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -860,7 +795,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
NSString *packageName = @""; NSString *packageName = @"";
NSString *pathWithoutSchema = originPath; NSString *pathWithoutSchema = originPath;
NSInteger indexOfPackage = [pathWithoutSchema lastIndexOfString:@"?package="]; NSInteger indexOfPackage = [pathWithoutSchema lastIndexOfString:@"?package="];
if (indexOfPackage != JavaNotFound) { if (indexOfPackage != JavaNotFound) {
path = [pathWithoutSchema substringFromIndex:0 toIndex:indexOfPackage]; path = [pathWithoutSchema substringFromIndex:0 toIndex:indexOfPackage];
NSInteger begin = indexOfPackage + [fluwxKeyPackage length]; NSInteger begin = indexOfPackage + [fluwxKeyPackage length];
...@@ -868,7 +803,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -868,7 +803,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} else { } else {
path = pathWithoutSchema; path = pathWithoutSchema;
} }
return @[path, packageName]; return @[path, packageName];
} }
...@@ -877,7 +812,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -877,7 +812,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} }
- (enum WXScene)intToWeChatScene:(NSNumber *)value { - (enum WXScene)intToWeChatScene:(NSNumber *)value {
// enum WeChatScene { SESSION, TIMELINE, FAVORITE } // enum WeChatScene { SESSION, TIMELINE, FAVORITE }
if ([value isEqual:@0]) { if ([value isEqual:@0]) {
return WXSceneSession; return WXSceneSession;
} else if ([value isEqual:@1]) { } else if ([value isEqual:@1]) {
...@@ -889,254 +824,214 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -889,254 +824,214 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} }
} }
- (void)managerDidRecvLaunchFromWXReq:(LaunchFromWXReq *)request { - (void)managerDidRecvLaunchFromWXReq:(LaunchFromWXReq *)request {
[FluwxDelegate defaultManager].extMsg = request.message.messageExt; [FluwxDelegate defaultManager].extMsg = request.message.messageExt;
// LaunchFromWXReq *launchFromWXReq = (LaunchFromWXReq *)request; // LaunchFromWXReq *launchFromWXReq = (LaunchFromWXReq *)request;
// //
// if (_isRunning) { // if (_isRunning) {
// [FluwxDelegate defaultManager].extMsg = request.message.messageExt; // [FluwxDelegate defaultManager].extMsg = request.message.messageExt;
// } else { // } else {
// __weak typeof(self) weakSelf = self; // __weak typeof(self) weakSelf = self;
// _initialWXReqRunnable = ^() { // _initialWXReqRunnable = ^() {
// __strong typeof(weakSelf) strongSelf = weakSelf; // __strong typeof(weakSelf) strongSelf = weakSelf;
// [FluwxDelegate defaultManager].extMsg = request.message.messageExt // [FluwxDelegate defaultManager].extMsg = request.message.messageExt
// }; // };
// } // }
} }
- (void)onResp:(BaseResp *)resp { - (void)onResp:(BaseResp *)resp {
if ([resp isKindOfClass:[SendMessageToWXResp class]]) { if ([resp isKindOfClass:[SendMessageToWXResp class]]) {
SendMessageToWXResp *messageResp = (SendMessageToWXResp *) resp; SendMessageToWXResp *messageResp = (SendMessageToWXResp *) resp;
NSDictionary *result = @{ NSDictionary *result = @{
description: messageResp.description == nil ? @"" : messageResp.description, description: messageResp.description == nil ? @"" : messageResp.description,
errStr: messageResp.errStr == nil ? @"" : messageResp.errStr, errStr: messageResp.errStr == nil ? @"" : messageResp.errStr,
errCode: @(messageResp.errCode), errCode: @(messageResp.errCode),
fluwxType: @(messageResp.type), fluwxType: @(messageResp.type),
country: messageResp.country == nil ? @"" : messageResp.country, country: messageResp.country == nil ? @"" : messageResp.country,
lang: messageResp.lang == nil ? @"" : messageResp.lang}; lang: messageResp.lang == nil ? @"" : messageResp.lang};
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onShareResponse" arguments:result]; [_channel invokeMethod:@"onShareResponse" arguments:result];
} }
} else if ([resp isKindOfClass:[SendAuthResp class]]) { } else if ([resp isKindOfClass:[SendAuthResp class]]) {
SendAuthResp *authResp = (SendAuthResp *) resp; SendAuthResp *authResp = (SendAuthResp *) resp;
NSDictionary *result = @{ NSDictionary *result = @{
description: authResp.description == nil ? @"" : authResp.description, description: authResp.description == nil ? @"" : authResp.description,
errStr: authResp.errStr == nil ? @"" : authResp.errStr, errStr: authResp.errStr == nil ? @"" : authResp.errStr,
errCode: @(authResp.errCode), errCode: @(authResp.errCode),
fluwxType: @(authResp.type), fluwxType: @(authResp.type),
country: authResp.country == nil ? @"" : authResp.country, country: authResp.country == nil ? @"" : authResp.country,
lang: authResp.lang == nil ? @"" : authResp.lang, lang: authResp.lang == nil ? @"" : authResp.lang,
@"code": [FluwxStringUtil nilToEmpty:authResp.code], @"code": [FluwxStringUtil nilToEmpty:authResp.code],
@"state": [FluwxStringUtil nilToEmpty:authResp.state] @"state": [FluwxStringUtil nilToEmpty:authResp.state]
}; };
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onAuthResponse" arguments:result]; [_channel invokeMethod:@"onAuthResponse" arguments:result];
} }
} else if ([resp isKindOfClass:[AddCardToWXCardPackageResp class]]) { } else if ([resp isKindOfClass:[AddCardToWXCardPackageResp class]]) {
// pass
} else if ([resp isKindOfClass:[WXChooseCardResp class]]) { } else if ([resp isKindOfClass:[WXChooseCardResp class]]) {
// pass
} else if ([resp isKindOfClass:[WXChooseInvoiceResp class]]) { } else if ([resp isKindOfClass:[WXChooseInvoiceResp class]]) {
//TODO 处理发票返回,并回调Dart //TODO 处理发票返回,并回调Dart
WXChooseInvoiceResp *chooseInvoiceResp = (WXChooseInvoiceResp *) resp; WXChooseInvoiceResp *chooseInvoiceResp = (WXChooseInvoiceResp *) resp;
NSArray *array = chooseInvoiceResp.cardAry; NSArray *array = chooseInvoiceResp.cardAry;
NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:array.count]; NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:array.count];
for (int i = 0; i< array.count; i++) { for (int i = 0; i< array.count; i++) {
WXInvoiceItem *item = array[i]; WXInvoiceItem *item = array[i];
NSDictionary *dict = @{@"app_id":item.appID, @"encrypt_code":item.encryptCode, @"card_id":item.cardId}; NSDictionary *dict = @{@"app_id":item.appID, @"encrypt_code":item.encryptCode, @"card_id":item.cardId};
[mutableArray addObject:dict]; [mutableArray addObject:dict];
} }
NSError *error = nil; NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:mutableArray
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:mutableArray options:NSJSONWritingPrettyPrinted error: &error]; options:NSJSONWritingPrettyPrinted
error: &error];
NSString *cardItemList = @""; NSString *cardItemList = @"";
if ([jsonData length] && error == nil) { if ([jsonData length] && error == nil) {
cardItemList = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; cardItemList = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
} }
NSDictionary *result = @{ NSDictionary *result = @{
description: chooseInvoiceResp.description == nil ? @"" : chooseInvoiceResp.description, description: chooseInvoiceResp.description == nil ? @"" : chooseInvoiceResp.description,
errStr: chooseInvoiceResp.errStr == nil ? @"" : chooseInvoiceResp.errStr, errStr: chooseInvoiceResp.errStr == nil ? @"" : chooseInvoiceResp.errStr,
errCode: @(chooseInvoiceResp.errCode), errCode: @(chooseInvoiceResp.errCode),
fluwxType: @(chooseInvoiceResp.type), fluwxType: @(chooseInvoiceResp.type),
@"cardItemList":cardItemList @"cardItemList":cardItemList
}; };
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onOpenWechatInvoiceResponse" arguments:result]; [_channel invokeMethod:@"onOpenWechatInvoiceResponse" arguments:result];
} }
} else if ([resp isKindOfClass:[WXSubscribeMsgResp class]]) { } else if ([resp isKindOfClass:[WXSubscribeMsgResp class]]) {
WXSubscribeMsgResp *subscribeMsgResp = (WXSubscribeMsgResp *) resp; WXSubscribeMsgResp *subscribeMsgResp = (WXSubscribeMsgResp *) resp;
NSMutableDictionary *result = [NSMutableDictionary dictionary]; NSMutableDictionary *result = [NSMutableDictionary dictionary];
NSString *openid = subscribeMsgResp.openId; NSString *openid = subscribeMsgResp.openId;
if(openid != nil && openid != NULL && ![openid isKindOfClass:[NSNull class]]){ if (openid != nil && openid != NULL && ![openid isKindOfClass:[NSNull class]]) {
result[@"openid"] = openid; result[@"openid"] = openid;
} }
NSString *templateId = subscribeMsgResp.templateId; NSString *templateId = subscribeMsgResp.templateId;
if(templateId != nil && templateId != NULL && ![templateId isKindOfClass:[NSNull class]]){ if (templateId != nil && templateId != NULL && ![templateId isKindOfClass:[NSNull class]]) {
result[@"templateId"] = templateId; result[@"templateId"] = templateId;
} }
NSString *action = subscribeMsgResp.action; NSString *action = subscribeMsgResp.action;
if(action != nil && action != NULL && ![action isKindOfClass:[NSNull class]]){ if (action != nil && action != NULL && ![action isKindOfClass:[NSNull class]]) {
result[@"action"] = action; result[@"action"] = action;
} }
NSString *reserved = subscribeMsgResp.action; NSString *reserved = subscribeMsgResp.action;
if(reserved != nil && reserved != NULL && ![reserved isKindOfClass:[NSNull class]]){ if (reserved != nil && reserved != NULL && ![reserved isKindOfClass:[NSNull class]]) {
result[@"reserved"] = reserved; result[@"reserved"] = reserved;
} }
UInt32 scene = subscribeMsgResp.scene; UInt32 scene = subscribeMsgResp.scene;
result[@"scene"] = @(scene); result[@"scene"] = @(scene);
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onSubscribeMsgResp" arguments:result]; [_channel invokeMethod:@"onSubscribeMsgResp" arguments:result];
} }
} else if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) { } else if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) {
WXLaunchMiniProgramResp *miniProgramResp = (WXLaunchMiniProgramResp *) resp; WXLaunchMiniProgramResp *miniProgramResp = (WXLaunchMiniProgramResp *) resp;
NSDictionary *commonResult = @{ NSDictionary *commonResult = @{
description: miniProgramResp.description == nil ? @"" : miniProgramResp.description, description: miniProgramResp.description == nil ? @"" : miniProgramResp.description,
errStr: miniProgramResp.errStr == nil ? @"" : miniProgramResp.errStr, errStr: miniProgramResp.errStr == nil ? @"" : miniProgramResp.errStr,
errCode: @(miniProgramResp.errCode), errCode: @(miniProgramResp.errCode),
fluwxType: @(miniProgramResp.type), fluwxType: @(miniProgramResp.type),
}; };
NSMutableDictionary *result = [NSMutableDictionary dictionaryWithDictionary:commonResult]; NSMutableDictionary *result = [NSMutableDictionary dictionaryWithDictionary:commonResult];
if (miniProgramResp.extMsg != nil) { if (miniProgramResp.extMsg != nil) {
result[@"extMsg"] = miniProgramResp.extMsg; result[@"extMsg"] = miniProgramResp.extMsg;
} }
if (_channel != nil) {
// @"extMsg":miniProgramResp.extMsg == nil?@"":miniProgramResp.extMsg
if(_channel != nil){
[_channel invokeMethod:@"onLaunchMiniProgramResponse" arguments:result]; [_channel invokeMethod:@"onLaunchMiniProgramResponse" arguments:result];
} }
} else if ([resp isKindOfClass:[WXInvoiceAuthInsertResp class]]) { } else if ([resp isKindOfClass:[WXInvoiceAuthInsertResp class]]) {
// pass
} else if ([resp isKindOfClass:[WXOpenBusinessWebViewResp class]]) { } else if ([resp isKindOfClass:[WXOpenBusinessWebViewResp class]]) {
WXOpenBusinessWebViewResp *businessResp = (WXOpenBusinessWebViewResp *) resp; WXOpenBusinessWebViewResp *businessResp = (WXOpenBusinessWebViewResp *) resp;
NSDictionary *result = @{ NSDictionary *result = @{
description: [FluwxStringUtil nilToEmpty:businessResp.description], description: [FluwxStringUtil nilToEmpty:businessResp.description],
errStr: [FluwxStringUtil nilToEmpty:resp.errStr], errStr: [FluwxStringUtil nilToEmpty:resp.errStr],
errCode: @(businessResp.errCode), errCode: @(businessResp.errCode),
fluwxType: @(businessResp.type), fluwxType: @(businessResp.type),
@"resultInfo": [FluwxStringUtil nilToEmpty:businessResp.result], @"resultInfo": [FluwxStringUtil nilToEmpty:businessResp.result],
@"businessType": @(businessResp.businessType), @"businessType": @(businessResp.businessType),
}; };
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onWXOpenBusinessWebviewResponse" arguments:result]; [_channel invokeMethod:@"onWXOpenBusinessWebviewResponse" arguments:result];
} }
} else if ([resp isKindOfClass:[WXOpenCustomerServiceResp class]]) {
} else if ([resp isKindOfClass:[WXOpenCustomerServiceResp class]])
{
WXOpenCustomerServiceResp *customerResp = (WXOpenCustomerServiceResp *) resp; WXOpenCustomerServiceResp *customerResp = (WXOpenCustomerServiceResp *) resp;
NSDictionary *result = @{ NSDictionary *result = @{
description: [FluwxStringUtil nilToEmpty:customerResp.description], description: [FluwxStringUtil nilToEmpty:customerResp.description],
errStr: [FluwxStringUtil nilToEmpty:resp.errStr], errStr: [FluwxStringUtil nilToEmpty:resp.errStr],
errCode: @(customerResp.errCode), errCode: @(customerResp.errCode),
fluwxType: @(customerResp.type), fluwxType: @(customerResp.type),
@"extMsg":[FluwxStringUtil nilToEmpty:customerResp.extMsg] @"extMsg":[FluwxStringUtil nilToEmpty:customerResp.extMsg]
}; };
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onWXOpenBusinessWebviewResponse" arguments:result]; [_channel invokeMethod:@"onWXOpenBusinessWebviewResponse" arguments:result];
} }
// 相关错误信息
// 相关错误信息 } else if ([resp isKindOfClass:[WXOpenBusinessViewResp class]]) {
}else if ([resp isKindOfClass:[WXOpenBusinessViewResp class]])
{
WXOpenBusinessViewResp *openBusinessViewResp = (WXOpenBusinessViewResp *) resp; WXOpenBusinessViewResp *openBusinessViewResp = (WXOpenBusinessViewResp *) resp;
NSDictionary *result = @{ NSDictionary *result = @{
description: [FluwxStringUtil nilToEmpty:openBusinessViewResp.description], description: [FluwxStringUtil nilToEmpty:openBusinessViewResp.description],
errStr: [FluwxStringUtil nilToEmpty:resp.errStr], errStr: [FluwxStringUtil nilToEmpty:resp.errStr],
errCode: @(openBusinessViewResp.errCode), errCode: @(openBusinessViewResp.errCode),
@"businessType":openBusinessViewResp.businessType, @"businessType":openBusinessViewResp.businessType,
fluwxType: @(openBusinessViewResp.type), fluwxType: @(openBusinessViewResp.type),
@"extMsg":[FluwxStringUtil nilToEmpty:openBusinessViewResp.extMsg] @"extMsg":[FluwxStringUtil nilToEmpty:openBusinessViewResp.extMsg]
}; };
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onOpenBusinessViewResponse" arguments:result]; [_channel invokeMethod:@"onOpenBusinessViewResponse" arguments:result];
} }
// 相关错误信息
// 相关错误信息
} }
#ifndef NO_PAY #ifndef NO_PAY
else if ([resp isKindOfClass:[WXPayInsuranceResp class]]) { else if ([resp isKindOfClass:[WXPayInsuranceResp class]]) {
// pass
} else if ([resp isKindOfClass:[PayResp class]]) { } else if ([resp isKindOfClass:[PayResp class]]) {
PayResp *payResp = (PayResp *) resp; PayResp *payResp = (PayResp *) resp;
NSDictionary *result = @{ NSDictionary *result = @{
description: [FluwxStringUtil nilToEmpty:payResp.description], description: [FluwxStringUtil nilToEmpty:payResp.description],
errStr: [FluwxStringUtil nilToEmpty:resp.errStr], errStr: [FluwxStringUtil nilToEmpty:resp.errStr],
errCode: @(payResp.errCode), errCode: @(payResp.errCode),
fluwxType: @(payResp.type), fluwxType: @(payResp.type),
@"extData": [FluwxStringUtil nilToEmpty:[FluwxDelegate defaultManager].extData], @"extData": [FluwxStringUtil nilToEmpty:[FluwxDelegate defaultManager].extData],
@"returnKey": [FluwxStringUtil nilToEmpty:payResp.returnKey], @"returnKey": [FluwxStringUtil nilToEmpty:payResp.returnKey],
}; };
[FluwxDelegate defaultManager].extData = nil; [FluwxDelegate defaultManager].extData = nil;
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onPayResponse" arguments:result]; [_channel invokeMethod:@"onPayResponse" arguments:result];
} }
} else if ([resp isKindOfClass:[WXNontaxPayResp class]]) { } else if ([resp isKindOfClass:[WXNontaxPayResp class]]) {
// pass
} }
#endif #endif
} }
- (void)onReq:(BaseReq *)req { - (void)onReq:(BaseReq *)req {
if ([req isKindOfClass:[GetMessageFromWXReq class]]) { if ([req isKindOfClass:[GetMessageFromWXReq class]]) {
// pass
} else if ([req isKindOfClass:[ShowMessageFromWXReq class]]) { } else if ([req isKindOfClass:[ShowMessageFromWXReq class]]) {
// ShowMessageFromWXReq -- android spec // ShowMessageFromWXReq -- android spec
ShowMessageFromWXReq *showMessageFromWXReq = (ShowMessageFromWXReq *) req; ShowMessageFromWXReq *showMessageFromWXReq = (ShowMessageFromWXReq *) req;
WXMediaMessage *wmm = showMessageFromWXReq.message; WXMediaMessage *wmm = showMessageFromWXReq.message;
NSMutableDictionary *result = [NSMutableDictionary dictionary]; NSMutableDictionary *result = [NSMutableDictionary dictionary];
[result setValue:wmm.messageAction forKey:@"messageAction"]; [result setValue:wmm.messageAction forKey:@"messageAction"];
[result setValue:wmm.messageExt forKey:@"extMsg"]; [result setValue:wmm.messageExt forKey:@"extMsg"];
[result setValue:showMessageFromWXReq.lang forKey:@"lang"]; [result setValue:showMessageFromWXReq.lang forKey:@"lang"];
[result setValue:showMessageFromWXReq.country forKey:@"country"]; [result setValue:showMessageFromWXReq.country forKey:@"country"];
// Cache extMsg for later use (by calling 'getExtMsg') // Cache extMsg for later use (by calling 'getExtMsg')
[FluwxDelegate defaultManager].extMsg= wmm.messageExt; [FluwxDelegate defaultManager].extMsg = wmm.messageExt;
if (_isRunning) { if (_isRunning) {
[_channel invokeMethod:@"onWXShowMessageFromWX" arguments:result]; [_channel invokeMethod:@"onWXShowMessageFromWX" arguments:result];
} else { } else {
...@@ -1146,21 +1041,20 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1146,21 +1041,20 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
[strongSelf->_channel invokeMethod:@"onWXShowMessageFromWX" arguments:result]; [strongSelf->_channel invokeMethod:@"onWXShowMessageFromWX" arguments:result];
}; };
} }
} else if ([req isKindOfClass:[LaunchFromWXReq class]]) { } else if ([req isKindOfClass:[LaunchFromWXReq class]]) {
// ShowMessageFromWXReq -- ios spec // ShowMessageFromWXReq -- ios spec
LaunchFromWXReq *launchFromWXReq = (LaunchFromWXReq *) req; LaunchFromWXReq *launchFromWXReq = (LaunchFromWXReq *) req;
WXMediaMessage *wmm = launchFromWXReq.message; WXMediaMessage *wmm = launchFromWXReq.message;
NSMutableDictionary *result = [NSMutableDictionary dictionary]; NSMutableDictionary *result = [NSMutableDictionary dictionary];
[result setValue:wmm.messageAction forKey:@"messageAction"]; [result setValue:wmm.messageAction forKey:@"messageAction"];
[result setValue:wmm.messageExt forKey:@"extMsg"]; [result setValue:wmm.messageExt forKey:@"extMsg"];
[result setValue:launchFromWXReq.lang forKey:@"lang"]; [result setValue:launchFromWXReq.lang forKey:@"lang"];
[result setValue:launchFromWXReq.country forKey:@"country"]; [result setValue:launchFromWXReq.country forKey:@"country"];
// Cache extMsg for later use (by calling 'getExtMsg') // Cache extMsg for later use (by calling 'getExtMsg')
[FluwxDelegate defaultManager].extMsg= wmm.messageExt; [FluwxDelegate defaultManager].extMsg = wmm.messageExt;
if (_isRunning) { if (_isRunning) {
[_channel invokeMethod:@"onWXLaunchFromWX" arguments:result]; [_channel invokeMethod:@"onWXLaunchFromWX" arguments:result];
} else { } else {
...@@ -1171,19 +1065,16 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1171,19 +1065,16 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
}; };
} }
} }
} }
- (void)sendText:(NSString *)text - (void)sendText:(NSString *)text
InScene:(enum WXScene)scene InScene:(enum WXScene)scene
completion:(void (^ __nullable)(BOOL success))completion { completion:(void (^ __nullable)(BOOL success))completion {
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.scene = scene; req.scene = scene;
req.bText = YES; req.bText = YES;
req.text = text; req.text = text;
[WXApi sendReq:req [WXApi sendReq:req completion:completion];
completion:completion];
} }
- (void)sendImageData:(NSData *)imageData - (void)sendImageData:(NSData *)imageData
...@@ -1201,24 +1092,24 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1201,24 +1092,24 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
WXImageObject *ext = [WXImageObject object]; WXImageObject *ext = [WXImageObject object];
ext.imageData = imageData; ext.imageData = imageData;
ext.imgDataHash = (imgDataHash == (id) [NSNull null]) ? nil : imgDataHash; ext.imgDataHash = (imgDataHash == (id) [NSNull null]) ? nil : imgDataHash;
WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil : title WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil : title
Description:(description == (id) [NSNull null]) ? nil : description Description:(description == (id) [NSNull null]) ? nil : description
Object:ext Object:ext
MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt
MessageAction:(action == (id) [NSNull null]) ? nil : action MessageAction:(action == (id) [NSNull null]) ? nil : action
MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName
MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature
ThumbData: thumbData ThumbData: thumbData
ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash
];; ];;
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil
OrMediaMessage:message OrMediaMessage:message
bText:NO bText:NO
InScene:scene]; InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1226,7 +1117,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1226,7 +1117,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
TagName:(NSString *)tagName TagName:(NSString *)tagName
Title:(NSString *)title Title:(NSString *)title
Description:(NSString *)description Description:(NSString *)description
ThumbImage:(UIImage *)thumbImage
MessageExt:(NSString *)messageExt MessageExt:(NSString *)messageExt
MessageAction:(NSString *)messageAction MessageAction:(NSString *)messageAction
InScene:(enum WXScene)scene InScene:(enum WXScene)scene
...@@ -1236,22 +1126,22 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1236,22 +1126,22 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
completion:(void (^ __nullable)(BOOL success))completion { completion:(void (^ __nullable)(BOOL success))completion {
WXWebpageObject *ext = [WXWebpageObject object]; WXWebpageObject *ext = [WXWebpageObject object];
ext.webpageUrl = urlString; ext.webpageUrl = urlString;
WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil :title WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil :title
Description:(description == (id) [NSNull null]) ? nil : description Description:(description == (id) [NSNull null]) ? nil : description
Object:ext Object:ext
MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt
MessageAction:(messageAction == (id) [NSNull null]) ? nil : messageAction MessageAction:(messageAction == (id) [NSNull null]) ? nil : messageAction
MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName
MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature
ThumbData: thumbData ThumbData: thumbData
ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash
]; ];
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil
OrMediaMessage:message OrMediaMessage:message
bText:NO bText:NO
InScene:scene]; InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1261,7 +1151,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1261,7 +1151,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
MusicLowBandDataUrl:(NSString *)musicLowBandDataUrl MusicLowBandDataUrl:(NSString *)musicLowBandDataUrl
Title:(NSString *)title Title:(NSString *)title
Description:(NSString *)description Description:(NSString *)description
ThumbImage:(UIImage *)thumbImage
MessageExt:(NSString *)messageExt MessageExt:(NSString *)messageExt
MessageAction:(NSString *)messageAction MessageAction:(NSString *)messageAction
TagName:(NSString *)tagName TagName:(NSString *)tagName
...@@ -1271,7 +1160,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1271,7 +1160,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
ThumbDataHash:(NSString*)thumbDataHash ThumbDataHash:(NSString*)thumbDataHash
completion:(void (^ __nullable)(BOOL success))completion { completion:(void (^ __nullable)(BOOL success))completion {
WXMusicObject *ext = [WXMusicObject object]; WXMusicObject *ext = [WXMusicObject object];
if ([FluwxStringUtil isBlank:musicURL]) { if ([FluwxStringUtil isBlank:musicURL]) {
ext.musicLowBandUrl = musicLowBandUrl; ext.musicLowBandUrl = musicLowBandUrl;
ext.musicLowBandDataUrl = (musicLowBandDataUrl == (id) [NSNull null]) ? nil : musicLowBandDataUrl; ext.musicLowBandDataUrl = (musicLowBandDataUrl == (id) [NSNull null]) ? nil : musicLowBandDataUrl;
...@@ -1279,24 +1168,24 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1279,24 +1168,24 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
ext.musicUrl = musicURL; ext.musicUrl = musicURL;
ext.musicDataUrl = (dataURL == (id) [NSNull null]) ? nil : dataURL; ext.musicDataUrl = (dataURL == (id) [NSNull null]) ? nil : dataURL;
} }
WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil : title WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil : title
Description:description Description:description
Object:ext Object:ext
MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt
MessageAction:(messageAction == (id) [NSNull null]) ? nil : messageAction MessageAction:(messageAction == (id) [NSNull null]) ? nil : messageAction
MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName
MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature
ThumbData: thumbData ThumbData: thumbData
ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash
]; ];
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil
OrMediaMessage:message OrMediaMessage:message
bText:NO bText:NO
InScene:scene]; InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1304,7 +1193,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1304,7 +1193,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
VideoLowBandUrl:(NSString *)videoLowBandUrl VideoLowBandUrl:(NSString *)videoLowBandUrl
Title:(NSString *)title Title:(NSString *)title
Description:(NSString *)description Description:(NSString *)description
ThumbImage:(UIImage *)thumbImage
MessageExt:(NSString *)messageExt MessageExt:(NSString *)messageExt
MessageAction:(NSString *)messageAction MessageAction:(NSString *)messageAction
TagName:(NSString *)tagName TagName:(NSString *)tagName
...@@ -1319,8 +1207,9 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1319,8 +1207,9 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
message.messageExt = (messageExt == (id) [NSNull null]) ? nil : messageExt; message.messageExt = (messageExt == (id) [NSNull null]) ? nil : messageExt;
message.messageAction = (messageAction == (id) [NSNull null]) ? nil : messageAction; message.messageAction = (messageAction == (id) [NSNull null]) ? nil : messageAction;
message.mediaTagName = (tagName == (id) [NSNull null]) ? nil : tagName; message.mediaTagName = (tagName == (id) [NSNull null]) ? nil : tagName;
[message setThumbImage:thumbImage]; message.thumbData = (thumbData == (id) [NSNull null]) ? nil : thumbData;
message.thumbDataHash = (thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash;
WXVideoObject *ext = [WXVideoObject object]; WXVideoObject *ext = [WXVideoObject object];
if ([FluwxStringUtil isBlank:videoURL]) { if ([FluwxStringUtil isBlank:videoURL]) {
ext.videoLowBandUrl = videoLowBandUrl; ext.videoLowBandUrl = videoLowBandUrl;
...@@ -1328,38 +1217,31 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1328,38 +1217,31 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
ext.videoUrl = videoURL; ext.videoUrl = videoURL;
} }
message.mediaObject = ext; message.mediaObject = ext;
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil OrMediaMessage:message bText:NO InScene:scene];
OrMediaMessage:message
bText:NO
InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
- (void)sendEmotionData:(NSData *)emotionData - (void)sendEmotionData:(NSData *)emotionData
ThumbImage:(UIImage *)thumbImage
InScene:(enum WXScene)scene InScene:(enum WXScene)scene
MsgSignature:(NSString *)msgSignature MsgSignature:(NSString *)msgSignature
ThumbData:(NSData *)thumbData ThumbData:(NSData *)thumbData
ThumbDataHash:(NSString*)thumbDataHash ThumbDataHash:(NSString*)thumbDataHash
completion:(void (^ __nullable)(BOOL success))completion { completion:(void (^ __nullable)(BOOL success))completion {
WXMediaMessage *message = [WXMediaMessage message]; WXMediaMessage *message = [WXMediaMessage message];
[message setThumbImage:thumbImage]; message.thumbData = (thumbData == (id) [NSNull null]) ? nil : thumbData;
message.thumbDataHash = (thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash;
WXEmoticonObject *ext = [WXEmoticonObject object]; WXEmoticonObject *ext = [WXEmoticonObject object];
ext.emoticonData = emotionData; ext.emoticonData = emotionData;
message.mediaObject = ext; message.mediaObject = ext;
NSString *signature = (msgSignature == (id) [NSNull null]) ? nil : msgSignature; NSString *signature = (msgSignature == (id) [NSNull null]) ? nil : msgSignature;
if (signature != nil) { if (signature != nil) {
message.msgSignature = signature; message.msgSignature = signature;
} }
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil OrMediaMessage:message bText:NO InScene:scene];
OrMediaMessage:message
bText:NO
InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1367,7 +1249,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1367,7 +1249,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
fileExtension:(NSString *)extension fileExtension:(NSString *)extension
Title:(NSString *)title Title:(NSString *)title
Description:(NSString *)description Description:(NSString *)description
ThumbImage:(UIImage *)thumbImage
InScene:(enum WXScene)scene InScene:(enum WXScene)scene
MsgSignature:(NSString *)msgSignature MsgSignature:(NSString *)msgSignature
ThumbData:(NSData *)thumbData ThumbData:(NSData *)thumbData
...@@ -1376,23 +1257,20 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1376,23 +1257,20 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
WXMediaMessage *message = [WXMediaMessage message]; WXMediaMessage *message = [WXMediaMessage message];
message.title = title; message.title = title;
message.description = description; message.description = description;
[message setThumbImage:thumbImage]; message.thumbData = (thumbData == (id) [NSNull null]) ? nil : thumbData;
message.thumbDataHash = (thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash;
WXFileObject *ext = [WXFileObject object]; WXFileObject *ext = [WXFileObject object];
ext.fileExtension = extension; ext.fileExtension = extension;
ext.fileData = fileData; ext.fileData = fileData;
message.mediaObject = ext; message.mediaObject = ext;
NSString *signature = (msgSignature == (id) [NSNull null]) ? nil : msgSignature; NSString *signature = (msgSignature == (id) [NSNull null]) ? nil : msgSignature;
if (signature != nil) { if (signature != nil) {
message.msgSignature = signature; message.msgSignature = signature;
} }
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil OrMediaMessage:message bText:NO InScene:scene];
OrMediaMessage:message
bText:NO
InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1416,30 +1294,22 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1416,30 +1294,22 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
ext.webpageUrl = (webpageUrl == (id) [NSNull null]) ? nil : webpageUrl; ext.webpageUrl = (webpageUrl == (id) [NSNull null]) ? nil : webpageUrl;
ext.userName = (userName == (id) [NSNull null]) ? nil : userName; ext.userName = (userName == (id) [NSNull null]) ? nil : userName;
ext.path = (path == (id) [NSNull null]) ? nil : path; ext.path = (path == (id) [NSNull null]) ? nil : path;
ext.withShareTicket = withShareTicket; ext.withShareTicket = withShareTicket;
ext.hdImageData = hdImageData; ext.hdImageData = hdImageData;
ext.miniProgramType = programType; ext.miniProgramType = programType;
WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil : title WXMediaMessage *message = [self messageWithTitle:(title == (id) [NSNull null]) ? nil : title
Description:(description == (id) [NSNull null]) ? nil : description Description:(description == (id) [NSNull null]) ? nil : description
Object:ext Object:ext
MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt MessageExt:(messageExt == (id) [NSNull null]) ? nil : messageExt
MessageAction:(messageAction == (id) [NSNull null]) ? nil : messageAction MessageAction:(messageAction == (id) [NSNull null]) ? nil : messageAction
MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName MediaTag:(tagName == (id) [NSNull null]) ? nil : tagName
MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature
ThumbData: thumbData ThumbData:(thumbData == (id) [NSNull null] ? nil : thumbData)
ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash
]; ];
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil OrMediaMessage:message bText:NO InScene:scene];
OrMediaMessage:message
bText:NO
InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1450,7 +1320,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1450,7 +1320,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
Description:(NSString *)description Description:(NSString *)description
MessageExt:(NSString *)messageExt MessageExt:(NSString *)messageExt
MessageAction:(NSString *)action MessageAction:(NSString *)action
ThumbImage:(UIImage *)thumbImage
InScene:(enum WXScene)scene InScene:(enum WXScene)scene
MsgSignature:(NSString *)msgSignature MsgSignature:(NSString *)msgSignature
ThumbData:(NSData *)thumbData ThumbData:(NSData *)thumbData
...@@ -1460,27 +1329,24 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1460,27 +1329,24 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
ext.extInfo = info; ext.extInfo = info;
ext.url = url; ext.url = url;
ext.fileData = data; ext.fileData = data;
WXMediaMessage *message = [self messageWithTitle:title WXMediaMessage *message = [self messageWithTitle:title
Description:description Description:description
Object:ext Object:ext
MessageExt:messageExt MessageExt:messageExt
MessageAction:action MessageAction:action
MediaTag:nil MediaTag:nil
MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature MsgSignature:(msgSignature == (id) [NSNull null]) ? nil : msgSignature
ThumbData: thumbData ThumbData:(thumbData == (id) [NSNull null]) ? nil : thumbData
ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash ThumbDataHash:(thumbDataHash == (id) [NSNull null]) ? nil : thumbDataHash
]; ];
SendMessageToWXReq *req = [self requestWithText:nil SendMessageToWXReq *req = [self requestWithText:nil OrMediaMessage:message bText:NO InScene:scene];
OrMediaMessage:message
bText:NO
InScene:scene];
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
- (void)addCardsToCardPackage:(NSArray *)cardIds cardExts:(NSArray *)cardExts - (void)addCardsToCardPackage:(NSArray *)cardIds
cardExts:(NSArray *)cardExts
completion:(void (^ __nullable)(BOOL success))completion { completion:(void (^ __nullable)(BOOL success))completion {
NSMutableArray *cardItems = [NSMutableArray array]; NSMutableArray *cardItems = [NSMutableArray array];
for (NSString *cardId in cardIds) { for (NSString *cardId in cardIds) {
...@@ -1489,13 +1355,13 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1489,13 +1355,13 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
item.appID = @"wxf8b4f85f3a794e77"; item.appID = @"wxf8b4f85f3a794e77";
[cardItems addObject:item]; [cardItems addObject:item];
} }
for (NSInteger index = 0; index < cardItems.count; index++) { for (NSInteger index = 0; index < cardItems.count; index++) {
WXCardItem *item = cardItems[index]; WXCardItem *item = cardItems[index];
NSString *ext = cardExts[index]; NSString *ext = cardExts[index];
item.extMsg = ext; item.extMsg = ext;
} }
AddCardToWXCardPackageReq *req = [[AddCardToWXCardPackageReq alloc] init]; AddCardToWXCardPackageReq *req = [[AddCardToWXCardPackageReq alloc] init];
req.cardAry = cardItems; req.cardAry = cardItems;
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
...@@ -1514,10 +1380,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1514,10 +1380,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
chooseCardReq.signType = signType; chooseCardReq.signType = signType;
chooseCardReq.timeStamp = timestamp; chooseCardReq.timeStamp = timestamp;
[WXApi sendReq:chooseCardReq completion:completion]; [WXApi sendReq:chooseCardReq completion:completion];
} }
- (void)sendAuthRequestScope:(NSString *)scope - (void)sendAuthRequestScope:(NSString *)scope
State:(NSString *)state State:(NSString *)state
OpenID:(NSString *)openID OpenID:(NSString *)openID
...@@ -1527,8 +1391,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1527,8 +1391,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
req.scope = scope; // @"post_timeline,sns" req.scope = scope; // @"post_timeline,sns"
req.state = state; req.state = state;
req.openID = openID; req.openID = openID;
return [WXApi sendAuthReq:req return [WXApi sendAuthReq:req
viewController:viewController viewController:viewController
delegate:self delegate:self
...@@ -1546,9 +1409,9 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1546,9 +1409,9 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
req.state = state; req.state = state;
req.openID = openID; req.openID = openID;
req.nonautomatic = nonAutomatic; req.nonautomatic = nonAutomatic;
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1570,17 +1433,17 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1570,17 +1433,17 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
chooseInvoiceReq.cardSign = cardSign; chooseInvoiceReq.cardSign = cardSign;
chooseInvoiceReq.nonceStr = nonceStr; chooseInvoiceReq.nonceStr = nonceStr;
chooseInvoiceReq.signType = signType; chooseInvoiceReq.signType = signType;
// chooseCardReq.cardType = @"INVOICE"; // chooseCardReq.cardType = @"INVOICE";
chooseInvoiceReq.timeStamp = timestamp; chooseInvoiceReq.timeStamp = timestamp;
// chooseCardReq.canMultiSelect = 1; // chooseCardReq.canMultiSelect = 1;
[WXApi sendReq:chooseInvoiceReq completion:completion]; [WXApi sendReq:chooseInvoiceReq completion:completion];
} }
- (void)openCustomerService:(NSString *)url CorpId:(NSString *)corpId completion:(void (^)(BOOL))completion { - (void)openCustomerService:(NSString *)url CorpId:(NSString *)corpId completion:(void (^)(BOOL))completion {
WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init]; WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init];
req.corpid = corpId; //企业ID req.corpid = corpId; //企业ID
req.url = url; //客服URL req.url = url; //客服URL
[WXApi sendReq:req completion:completion]; [WXApi sendReq:req completion:completion];
} }
...@@ -1596,14 +1459,14 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1596,14 +1459,14 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
- (void)handleAuth:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)handleAuth:(FlutterMethodCall *)call result:(FlutterResult)result {
NSString *openId = call.arguments[@"openId"]; NSString *openId = call.arguments[@"openId"];
[self sendAuthRequestScope:call.arguments[@"scope"] [self sendAuthRequestScope:call.arguments[@"scope"]
State:(call.arguments[@"state"] == (id) [NSNull null]) ? nil : call.arguments[@"state"] State:(call.arguments[@"state"] == (id) [NSNull null]) ? nil : call.arguments[@"state"]
OpenID:(openId == (id) [NSNull null]) ? nil : openId OpenID:(openId == (id) [NSNull null]) ? nil : openId
NonAutomatic:[call.arguments[@"nonAutomatic"] boolValue] NonAutomatic:[call.arguments[@"nonAutomatic"] boolValue]
completion:^(BOOL done) { completion:^(BOOL done) {
result(@(done)); result(@(done));
}]; }];
} }
- (void)authByQRCode:(FlutterMethodCall *)call result:(FlutterResult)result { - (void)authByQRCode:(FlutterMethodCall *)call result:(FlutterResult)result {
...@@ -1613,7 +1476,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1613,7 +1476,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
NSString *timeStamp = call.arguments[@"timeStamp"]; NSString *timeStamp = call.arguments[@"timeStamp"];
NSString *signature = call.arguments[@"signature"]; NSString *signature = call.arguments[@"signature"];
NSString *schemeData = (call.arguments[@"schemeData"] == (id) [NSNull null]) ? nil : call.arguments[@"schemeData"]; NSString *schemeData = (call.arguments[@"schemeData"] == (id) [NSNull null]) ? nil : call.arguments[@"schemeData"];
BOOL done = [_qrauth Auth:appId nonceStr:nonceStr timeStamp:timeStamp scope:scope signature:signature schemeData:schemeData]; BOOL done = [_qrauth Auth:appId nonceStr:nonceStr timeStamp:timeStamp scope:scope signature:signature schemeData:schemeData];
result(@(done)); result(@(done));
} }
...@@ -1624,19 +1487,19 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1624,19 +1487,19 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
} }
- (void)onQrcodeScanned { - (void)onQrcodeScanned {
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onQRCodeScanned" arguments:@{@"errCode": @0}]; [_channel invokeMethod:@"onQRCodeScanned" arguments:@{@"errCode": @0}];
} }
} }
- (void)onAuthGotQrcode:(UIImage *)image { - (void)onAuthGotQrcode:(UIImage *)image {
NSData *imageData = UIImagePNGRepresentation(image); NSData *imageData = UIImagePNGRepresentation(image);
// if (imageData == nil) { // if (imageData == nil) {
// imageData = UIImageJPEGRepresentation(image, 1); // imageData = UIImageJPEGRepresentation(image, 1);
// } // }
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onAuthGotQRCode" arguments:@{@"errCode": @0, @"qrCode": imageData}]; [_channel invokeMethod:@"onAuthGotQRCode" arguments:@{@"errCode": @0, @"qrCode": imageData}];
} }
} }
- (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode { - (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode {
...@@ -1645,8 +1508,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1645,8 +1508,8 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
if (authCode != nil) { if (authCode != nil) {
result[@"authCode"] = authCode; result[@"authCode"] = authCode;
} }
if(_channel != nil){ if (_channel != nil) {
[_channel invokeMethod:@"onAuthByQRCodeFinished" arguments:result]; [_channel invokeMethod:@"onAuthByQRCodeFinished" arguments:result];
} }
} }
...@@ -1658,8 +1521,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1658,8 +1521,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
MediaTag:(NSString *)tagName MediaTag:(NSString *)tagName
MsgSignature:(NSString *)msgSignature MsgSignature:(NSString *)msgSignature
ThumbData:(NSData *)thumbData ThumbData:(NSData *)thumbData
ThumbDataHash:(NSString*)thumbDataHash ThumbDataHash:(NSString*)thumbDataHash {
{
WXMediaMessage *message = [WXMediaMessage message]; WXMediaMessage *message = [WXMediaMessage message];
message.title = title; message.title = title;
message.description = description; message.description = description;
...@@ -1669,7 +1531,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1669,7 +1531,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
message.mediaTagName = tagName; message.mediaTagName = tagName;
message.thumbData = thumbData; message.thumbData = thumbData;
message.thumbDataHash = thumbDataHash; message.thumbDataHash = thumbDataHash;
if(msgSignature != nil ){ if (msgSignature != nil) {
message.msgSignature = msgSignature; message.msgSignature = msgSignature;
} }
return message; return message;
...@@ -1682,21 +1544,23 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar; ...@@ -1682,21 +1544,23 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = bText; req.bText = bText;
req.scene = scene; req.scene = scene;
if (bText) if (bText) {
req.text = text; req.text = text;
else } else {
req.message = message; req.message = message;
}
return req; return req;
} }
-(NSString*)fetchWeChatAppId{ - (NSString*)fetchWeChatAppId {
NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
NSArray* types = infoDic[@"CFBundleURLTypes"]; NSArray *types = infoDict[@"CFBundleURLTypes"];
for(NSDictionary* dic in types){ for (NSDictionary *dict in types) {
if([@"weixin" isEqualToString:dic[@"CFBundleURLName"]]){ if ([@"weixin" isEqualToString:dict[@"CFBundleURLName"]]) {
return dic[@"CFBundleURLSchemes"][0]; return dict[@"CFBundleURLSchemes"][0];
} }
} }
return nil; return nil;
} }
@end @end
...@@ -8,24 +8,17 @@ ...@@ -8,24 +8,17 @@
@implementation FluwxStringUtil @implementation FluwxStringUtil
+ (BOOL)isBlank:(NSString *)string { + (BOOL)isBlank:(NSString *)string {
if (string == nil) { if (string == nil) {
return YES; return YES;
} }
if ([string isKindOfClass:[NSNull class]]) { if ([string isKindOfClass:[NSNull class]]) {
return YES; return YES;
} }
return [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0; return [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0;
} }
+ (NSString *)nilToEmpty:(NSString *)string { + (NSString *)nilToEmpty:(NSString *)string {
return string == nil ? @"" : string; return string == nil ? @"" : string;
} }
@end @end
...@@ -6,11 +6,12 @@ ...@@ -6,11 +6,12 @@
@interface ThumbnailHelper : NSObject @interface ThumbnailHelper : NSObject
+ (UIImage *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength isPNG:(BOOL)isPNG;
+ (UIImage *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength isPNG:(BOOL)isPNG;
/// NSData 压缩后转NSData /// NSData 压缩后转NSData
/// @param imageData 来源data /// @param imageData 来源data
/// @param maxLength 压缩目标值,压缩结果在maxLength的0.9~1之间 /// @param maxLength 压缩目标值,压缩结果在maxLength的0.9~1之间
+ (NSData *)compressImageData:(NSData *)imageData toByte:(NSUInteger)maxLength; + (NSData *)compressImageData:(NSData *)imageData toByte:(NSUInteger)maxLength;
@end @end
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
// Compress by quality // Compress by quality
CGFloat compression = 1; CGFloat compression = 1;
NSData *data = imageData; NSData *data = imageData;
NSLog(@"压缩前 %lu %lu ",(unsigned long)data.length,maxLength); NSLog(@"压缩前 %lu %lu", (unsigned long)data.length,maxLength);
if (data.length < maxLength) return data; if (data.length < maxLength) return data;
UIImage *image = [UIImage imageWithData:imageData]; UIImage *image = [UIImage imageWithData:imageData];
CGFloat max = 1; CGFloat max = 1;
CGFloat min = 0; CGFloat min = 0;
...@@ -29,20 +29,20 @@ ...@@ -29,20 +29,20 @@
} }
} }
NSLog(@"压缩第一次 %lu %lu ",(unsigned long)data.length,maxLength); NSLog(@"压缩第一次 %lu %lu", (unsigned long)data.length,maxLength);
if (data.length < maxLength) return data; if (data.length < maxLength) return data;
UIImage *resultImage; UIImage *resultImage;
resultImage = [UIImage imageWithData:data]; resultImage = [UIImage imageWithData:data];
// Compress by size // Compress by size
NSUInteger lastDataLength = 0; NSUInteger lastDataLength = 0;
while (data.length > maxLength && data.length != lastDataLength) { while (data.length > maxLength && data.length != lastDataLength) {
lastDataLength = data.length; lastDataLength = data.length;
CGFloat ratio = (CGFloat) maxLength / data.length; CGFloat ratio = (CGFloat) maxLength / data.length;
CGSize size = CGSizeMake((NSUInteger) (resultImage.size.width * sqrtf(ratio)), CGSize size = CGSizeMake((NSUInteger) (resultImage.size.width * sqrtf(ratio)),
(NSUInteger) (resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank (NSUInteger) (resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank
UIGraphicsBeginImageContext(size); UIGraphicsBeginImageContext(size);
[resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
resultImage = UIGraphicsGetImageFromCurrentImageContext(); resultImage = UIGraphicsGetImageFromCurrentImageContext();
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
data = UIImageJPEGRepresentation(resultImage, compression); data = UIImageJPEGRepresentation(resultImage, compression);
} }
NSLog(@"压缩第二次%lu %lu ",(unsigned long)data.length,maxLength); NSLog(@"压缩第二次 %lu %lu", (unsigned long)data.length,maxLength);
return data; return data;
} }
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
CGFloat compression = 1; CGFloat compression = 1;
NSData *data = UIImageJPEGRepresentation(image, compression); NSData *data = UIImageJPEGRepresentation(image, compression);
if (data.length < maxLength) return image; if (data.length < maxLength) return image;
CGFloat max = 1; CGFloat max = 1;
CGFloat min = 0; CGFloat min = 0;
for (int i = 0; i < 6; ++i) { for (int i = 0; i < 6; ++i) {
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
break; break;
} }
} }
UIImage *resultImage; UIImage *resultImage;
if (isPNG) { if (isPNG) {
NSData *tmp = UIImagePNGRepresentation([UIImage imageWithData:data]); NSData *tmp = UIImagePNGRepresentation([UIImage imageWithData:data]);
...@@ -81,24 +81,24 @@ ...@@ -81,24 +81,24 @@
} else { } else {
resultImage = [UIImage imageWithData:data]; resultImage = [UIImage imageWithData:data];
} }
if (data.length < maxLength) return resultImage; if (data.length < maxLength) return resultImage;
// Compress by size // Compress by size
NSUInteger lastDataLength = 0; NSUInteger lastDataLength = 0;
while (data.length > maxLength && data.length != lastDataLength) { while (data.length > maxLength && data.length != lastDataLength) {
lastDataLength = data.length; lastDataLength = data.length;
CGFloat ratio = (CGFloat) maxLength / data.length; CGFloat ratio = (CGFloat) maxLength / data.length;
CGSize size = CGSizeMake((NSUInteger) (resultImage.size.width * sqrtf(ratio)), CGSize size = CGSizeMake((NSUInteger) (resultImage.size.width * sqrtf(ratio)),
(NSUInteger) (resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank (NSUInteger) (resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank
UIGraphicsBeginImageContext(size); UIGraphicsBeginImageContext(size);
[resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
resultImage = UIGraphicsGetImageFromCurrentImageContext(); resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); UIGraphicsEndImageContext();
data = UIImageJPEGRepresentation(resultImage, compression); data = UIImageJPEGRepresentation(resultImage, compression);
} }
return resultImage; return resultImage;
} }
...@@ -107,27 +107,28 @@ ...@@ -107,27 +107,28 @@
CGSize imageSize = image.size; CGSize imageSize = image.size;
CGFloat width = imageSize.width; CGFloat width = imageSize.width;
CGFloat height = imageSize.height; CGFloat height = imageSize.height;
if (width <= newSize.width && height <= newSize.height) { if (width <= newSize.width && height <= newSize.height) {
return image; return image;
} }
if (width == 0 || height == 0) { if (width == 0 || height == 0) {
return image; return image;
} }
CGFloat widthFactor = newSize.width / width; CGFloat widthFactor = newSize.width / width;
CGFloat heightFactor = newSize.height / height; CGFloat heightFactor = newSize.height / height;
CGFloat scaleFactor = (widthFactor < heightFactor ? widthFactor : heightFactor); CGFloat scaleFactor = (widthFactor < heightFactor ? widthFactor : heightFactor);
CGFloat scaledWidth = width * scaleFactor; CGFloat scaledWidth = width * scaleFactor;
CGFloat scaledHeight = height * scaleFactor; CGFloat scaledHeight = height * scaleFactor;
CGSize targetSize = CGSizeMake(scaledWidth, scaledHeight); CGSize targetSize = CGSizeMake(scaledWidth, scaledHeight);
UIGraphicsBeginImageContext(targetSize); UIGraphicsBeginImageContext(targetSize);
[image drawInRect:CGRectMake(0, 0, scaledWidth, scaledHeight)]; [image drawInRect:CGRectMake(0, 0, scaledWidth, scaledHeight)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); UIGraphicsEndImageContext();
return newImage; return newImage;
} }
@end @end
...@@ -15,4 +15,5 @@ ...@@ -15,4 +15,5 @@
+ (instancetype)defaultManager; + (instancetype)defaultManager;
- (void)registerWxAPI:(NSString *)appId universalLink:(NSString *)universalLink; - (void)registerWxAPI:(NSString *)appId universalLink:(NSString *)universalLink;
@end @end
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论