提交 0b1311ec authored 作者: cjl_macbook's avatar cjl_macbook
上级 49bc09b0
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#import "FluwxWXApiHandler.h" #import "FluwxWXApiHandler.h"
#import "FluwxShareHandler.h" #import "FluwxShareHandler.h"
#import "FluwxLaunchMiniProgramHandler.h" #import "FluwxLaunchMiniProgramHandler.h"
#import "FluwxSubscribeMsgHandler.h"
@implementation FluwxPlugin @implementation FluwxPlugin
...@@ -22,6 +22,7 @@ FluwxAuthHandler *_fluwxAuthHandler; ...@@ -22,6 +22,7 @@ FluwxAuthHandler *_fluwxAuthHandler;
FluwxWXApiHandler *_fluwxWXApiHandler; FluwxWXApiHandler *_fluwxWXApiHandler;
FluwxPaymentHandler *_fluwxPaymentHandler; FluwxPaymentHandler *_fluwxPaymentHandler;
FluwxLaunchMiniProgramHandler *_fluwxLaunchMiniProgramHandler; FluwxLaunchMiniProgramHandler *_fluwxLaunchMiniProgramHandler;
FluwxSubscribeMsgHandler *_fluwxSubscribeMsgHandler;
- (void)dealloc - (void)dealloc
{ {
...@@ -52,7 +53,7 @@ FluwxLaunchMiniProgramHandler *_fluwxLaunchMiniProgramHandler; ...@@ -52,7 +53,7 @@ FluwxLaunchMiniProgramHandler *_fluwxLaunchMiniProgramHandler;
_fluwxWXApiHandler = [[FluwxWXApiHandler alloc] init]; _fluwxWXApiHandler = [[FluwxWXApiHandler alloc] init];
_fluwxPaymentHandler = [[FluwxPaymentHandler alloc] initWithRegistrar:registrar]; _fluwxPaymentHandler = [[FluwxPaymentHandler alloc] initWithRegistrar:registrar];
_fluwxLaunchMiniProgramHandler = [[FluwxLaunchMiniProgramHandler alloc] initWithRegistrar:registrar]; _fluwxLaunchMiniProgramHandler = [[FluwxLaunchMiniProgramHandler alloc] initWithRegistrar:registrar];
_fluwxSubscribeMsgHandler = [[FluwxSubscribeMsgHandler alloc] initWithRegistrar:registrar];
} }
return self; return self;
...@@ -89,6 +90,11 @@ FluwxLaunchMiniProgramHandler *_fluwxLaunchMiniProgramHandler; ...@@ -89,6 +90,11 @@ FluwxLaunchMiniProgramHandler *_fluwxLaunchMiniProgramHandler;
[_fluwxLaunchMiniProgramHandler handleLaunchMiniProgram:call result:result]; [_fluwxLaunchMiniProgramHandler handleLaunchMiniProgram:call result:result];
return; return;
} }
if([@"subscribeMsg" isEqualToString: call.method]){
[_fluwxSubscribeMsgHandler handleSubscribeWithCall:call result:result];
return;
}
if ([call.method hasPrefix:@"share"]) { if ([call.method hasPrefix:@"share"]) {
[_fluwxShareHandler handleShare:call result:result]; [_fluwxShareHandler handleShare:call result:result];
......
//
// FluwxSubscribeMsgHandler.m
// fluwx
//
// Created by cjl on 2018/12/19.
//
#import "FluwxSubscribeMsgHandler.h"
#import <WXApiRequestHandler.h>
@implementation FluwxSubscribeMsgHandler {
NSObject <FlutterPluginRegistrar> *_registrar;
}
- (instancetype)initWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
self = [super init];
if (self) {
_registrar = registrar;
}
return self;
}
- (void)handleSubscribeWithCall:(FlutterMethodCall *)call result:(FlutterResult)result {
NSDictionary *params = call.arguments;
NSString *appId = [params valueForKey:@"appId"];
int scene = [[params valueForKey:@"scene"] intValue];
NSString *templateId = [params valueForKey:@"templateId"];
NSString *reserved = [params valueForKey:@"reserved"];
WXSubscribeMsgReq *req = [WXSubscribeMsgReq new];
req.scene = (UInt32) scene;
req.templateId = templateId;
req.reserved = reserved;
req.openID = appId;
BOOL b = [WXApi sendReq:req];
result(@(b));
}
@end
//
// FluwxSubscribeMsgHandler.h
// fluwx
//
// Created by cjl on 2018/12/19.
//
#import <Foundation/Foundation.h>
#import <Flutter/Flutter.h>
NS_ASSUME_NONNULL_BEGIN
@interface FluwxSubscribeMsgHandler : NSObject
-(instancetype) initWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar;
-(void)handleSubscribeWithCall:(FlutterMethodCall *)call result:(FlutterResult)result;
@end
NS_ASSUME_NONNULL_END
...@@ -38,6 +38,7 @@ FlutterMethodChannel *fluwxMethodChannel = nil; ...@@ -38,6 +38,7 @@ FlutterMethodChannel *fluwxMethodChannel = nil;
} }
#pragma mark - WXApiDelegate #pragma mark - WXApiDelegate
- (void)onResp:(BaseResp *)resp { - (void)onResp:(BaseResp *)resp {
if ([resp isKindOfClass:[SendMessageToWXResp class]]) { if ([resp isKindOfClass:[SendMessageToWXResp class]]) {
if (_delegate if (_delegate
...@@ -51,15 +52,13 @@ FlutterMethodChannel *fluwxMethodChannel = nil; ...@@ -51,15 +52,13 @@ FlutterMethodChannel *fluwxMethodChannel = nil;
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),
type: messageResp.type == nil ? @2 :@(messageResp.type), type: messageResp.type == nil ? @2 : @(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,
fluwxKeyPlatform: fluwxKeyIOS fluwxKeyPlatform: fluwxKeyIOS
}; };
[fluwxMethodChannel invokeMethod:@"onShareResponse" arguments:result]; [fluwxMethodChannel invokeMethod:@"onShareResponse" arguments:result];
...@@ -76,14 +75,14 @@ FlutterMethodChannel *fluwxMethodChannel = nil; ...@@ -76,14 +75,14 @@ FlutterMethodChannel *fluwxMethodChannel = nil;
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),
type: authResp.type == nil ?@1:@(authResp.type), type: authResp.type == nil ? @1 : @(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,
fluwxKeyPlatform: fluwxKeyIOS, fluwxKeyPlatform: fluwxKeyIOS,
@"code":[StringUtil nilToEmpty:authResp.code], @"code": [StringUtil nilToEmpty:authResp.code],
@"state": [StringUtil nilToEmpty:authResp.state] @"state": [StringUtil nilToEmpty:authResp.state]
}; };
...@@ -111,27 +110,37 @@ FlutterMethodChannel *fluwxMethodChannel = nil; ...@@ -111,27 +110,37 @@ FlutterMethodChannel *fluwxMethodChannel = nil;
if ([_delegate respondsToSelector:@selector(managerDidRecvSubscribeMsgResponse:)]) { if ([_delegate respondsToSelector:@selector(managerDidRecvSubscribeMsgResponse:)]) {
[_delegate managerDidRecvSubscribeMsgResponse:(WXSubscribeMsgResp *) resp]; [_delegate managerDidRecvSubscribeMsgResponse:(WXSubscribeMsgResp *) resp];
} }
WXSubscribeMsgResp *subscribeMsgResp = (WXSubscribeMsgResp *) resp;
NSDictionary *subMsgResult = @{
@"openid": subscribeMsgResp.openId,
@"templateId": subscribeMsgResp.templateId,
@"action": subscribeMsgResp.action,
@"reserved": subscribeMsgResp.reserved,
@"scene": @(subscribeMsgResp.scene),
};
[fluwxMethodChannel invokeMethod:@"onSubscribeMsgResp" arguments:subMsgResult];
} else if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) { } else if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) {
if ([_delegate respondsToSelector:@selector(managerDidRecvLaunchMiniProgram:)]) { if ([_delegate respondsToSelector:@selector(managerDidRecvLaunchMiniProgram:)]) {
[_delegate managerDidRecvLaunchMiniProgram:(WXLaunchMiniProgramResp *) resp]; [_delegate managerDidRecvLaunchMiniProgram:(WXLaunchMiniProgramResp *) resp];
} }
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),
type: miniProgramResp.type == nil ?@1:@(miniProgramResp.type), type: miniProgramResp.type == nil ? @1 : @(miniProgramResp.type),
fluwxKeyPlatform: fluwxKeyIOS, fluwxKeyPlatform: fluwxKeyIOS,
}; };
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;
} }
...@@ -153,21 +162,20 @@ FlutterMethodChannel *fluwxMethodChannel = nil; ...@@ -153,21 +162,20 @@ FlutterMethodChannel *fluwxMethodChannel = nil;
if ([_delegate respondsToSelector:@selector(managerDidRecvPayInsuranceResponse:)]) { if ([_delegate respondsToSelector:@selector(managerDidRecvPayInsuranceResponse:)]) {
[_delegate managerDidRecvPayInsuranceResponse:(WXPayInsuranceResp *) resp]; [_delegate managerDidRecvPayInsuranceResponse:(WXPayInsuranceResp *) resp];
} }
}else if ([resp isKindOfClass:[PayResp class]]) { } else if ([resp isKindOfClass:[PayResp class]]) {
if ([_delegate respondsToSelector:@selector(managerDidRecvPaymentResponse)]) { if ([_delegate respondsToSelector:@selector(managerDidRecvPaymentResponse)]) {
[_delegate managerDidRecvPaymentResponse:(PayResp *) resp]; [_delegate managerDidRecvPaymentResponse:(PayResp *) resp];
} }
PayResp *payResp = (PayResp *) resp; PayResp *payResp = (PayResp *) resp;
NSDictionary *result = @{ NSDictionary *result = @{
description:[StringUtil nilToEmpty:payResp.description] , description: [StringUtil nilToEmpty:payResp.description],
errStr: [StringUtil nilToEmpty:resp.errStr], errStr: [StringUtil nilToEmpty:resp.errStr],
errCode: @(payResp.errCode), errCode: @(payResp.errCode),
type: payResp.type == nil ?@5:@(payResp.type), type: payResp.type == nil ? @5 : @(payResp.type),
@"returnKey":payResp.returnKey== nil?@"":payResp.returnKey, @"returnKey": payResp.returnKey == nil ? @"" : payResp.returnKey,
fluwxKeyPlatform: fluwxKeyIOS, fluwxKeyPlatform: fluwxKeyIOS,
}; };
[fluwxMethodChannel invokeMethod:@"onPayResponse" arguments:result]; [fluwxMethodChannel invokeMethod:@"onPayResponse" arguments:result];
......
...@@ -47,6 +47,12 @@ Stream<WeChatLaunchMiniProgramResponse> get responseFromLaunchMiniProgram => ...@@ -47,6 +47,12 @@ Stream<WeChatLaunchMiniProgramResponse> get responseFromLaunchMiniProgram =>
StreamController<WeChatLaunchMiniProgramResponse> StreamController<WeChatLaunchMiniProgramResponse>
_responseLaunchMiniProgramController = new StreamController.broadcast(); _responseLaunchMiniProgramController = new StreamController.broadcast();
StreamController<WeChatSubscribeMsgResp> _responseFromSubscribeMsg =
new StreamController.broadcast();
Stream<WeChatSubscribeMsgResp> get responseFromSubscribeMsg =>
_responseFromSubscribeMsg.stream;
final MethodChannel _channel = const MethodChannel('com.jarvanmo/fluwx') final MethodChannel _channel = const MethodChannel('com.jarvanmo/fluwx')
..setMethodCallHandler(_handler); ..setMethodCallHandler(_handler);
...@@ -63,6 +69,9 @@ Future<dynamic> _handler(MethodCall methodCall) { ...@@ -63,6 +69,9 @@ Future<dynamic> _handler(MethodCall methodCall) {
} else if ("onPayResponse" == methodCall.method) { } else if ("onPayResponse" == methodCall.method) {
_responsePaymentController _responsePaymentController
.add(WeChatPaymentResponse.fromMap(methodCall.arguments)); .add(WeChatPaymentResponse.fromMap(methodCall.arguments));
} else if ("onSubscribeMsgResp" == methodCall.method) {
_responseFromSubscribeMsg
.add(WeChatSubscribeMsgResp.fromMap(methodCall.arguments));
} }
return Future.value(true); return Future.value(true);
...@@ -180,3 +189,20 @@ Future pay( ...@@ -180,3 +189,20 @@ Future pay(
"extData": extData, "extData": extData,
}); });
} }
Future subscribeMsg({
@required String appId,
@required int scene,
@required String templateId,
String reserved,
}) async {
return await _channel.invokeMethod(
"subscribeMsg",
{
"appId": appId,
"scene": scene,
"templateId": templateId,
"reserved": reserved,
},
);
}
...@@ -115,3 +115,18 @@ class WeChatPaymentResponse { ...@@ -115,3 +115,18 @@ class WeChatPaymentResponse {
extData = map["extData"], extData = map["extData"],
androidTransaction = map["transaction"]; androidTransaction = map["transaction"];
} }
class WeChatSubscribeMsgResp {
final String openid;
final String templateId;
final String action;
final String reserved;
final int scene;
WeChatSubscribeMsgResp.fromMap(Map map)
: openid = map["openid"],
templateId = map["templateId"],
action = map["action"],
reserved = map["reserved"],
scene = map["scene"];
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论