This commit is contained in:
v7lin 2021-03-19 16:19:29 +08:00
parent db4c1712c2
commit 6a7dce2903
2 changed files with 77 additions and 78 deletions

View File

@ -6,7 +6,7 @@
@end @end
@implementation WeiboKitPlugin { @implementation WeiboKitPlugin {
FlutterMethodChannel * _channel; FlutterMethodChannel *_channel;
} }
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar { + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
@ -18,35 +18,35 @@
[registrar addMethodCallDelegate:instance channel:channel]; [registrar addMethodCallDelegate:instance channel:channel];
} }
static NSString * const METHOD_REGISTERAPP = @"registerApp"; static NSString *const METHOD_REGISTERAPP = @"registerApp";
static NSString * const METHOD_ISINSTALLED = @"isInstalled"; static NSString *const METHOD_ISINSTALLED = @"isInstalled";
static NSString * const METHOD_AUTH = @"auth"; static NSString *const METHOD_AUTH = @"auth";
static NSString * const METHOD_SHARETEXT = @"shareText"; static NSString *const METHOD_SHARETEXT = @"shareText";
static NSString * const METHOD_SHAREIMAGE = @"shareImage"; static NSString *const METHOD_SHAREIMAGE = @"shareImage";
static NSString * const METHOD_SHAREWEBPAGE = @"shareWebpage"; static NSString *const METHOD_SHAREWEBPAGE = @"shareWebpage";
static NSString * const METHOD_ONAUTHRESP = @"onAuthResp"; static NSString *const METHOD_ONAUTHRESP = @"onAuthResp";
static NSString * const METHOD_ONSHAREMSGRESP = @"onShareMsgResp"; static NSString *const METHOD_ONSHAREMSGRESP = @"onShareMsgResp";
static NSString * const ARGUMENT_KEY_APPKEY = @"appKey"; static NSString *const ARGUMENT_KEY_APPKEY = @"appKey";
static NSString * const ARGUMENT_KEY_SCOPE = @"scope"; static NSString *const ARGUMENT_KEY_SCOPE = @"scope";
static NSString * const ARGUMENT_KEY_REDIRECTURL = @"redirectUrl"; static NSString *const ARGUMENT_KEY_REDIRECTURL = @"redirectUrl";
static NSString * const ARGUMENT_KEY_TEXT = @"text"; static NSString *const ARGUMENT_KEY_TEXT = @"text";
static NSString * const ARGUMENT_KEY_TITLE = @"title"; static NSString *const ARGUMENT_KEY_TITLE = @"title";
static NSString * const ARGUMENT_KEY_DESCRIPTION = @"description"; static NSString *const ARGUMENT_KEY_DESCRIPTION = @"description";
static NSString * const ARGUMENT_KEY_THUMBDATA = @"thumbData"; static NSString *const ARGUMENT_KEY_THUMBDATA = @"thumbData";
static NSString * const ARGUMENT_KEY_IMAGEDATA = @"imageData"; static NSString *const ARGUMENT_KEY_IMAGEDATA = @"imageData";
static NSString * const ARGUMENT_KEY_IMAGEURI = @"imageUri"; static NSString *const ARGUMENT_KEY_IMAGEURI = @"imageUri";
static NSString * const ARGUMENT_KEY_WEBPAGEURL = @"webpageUrl"; static NSString *const ARGUMENT_KEY_WEBPAGEURL = @"webpageUrl";
static NSString * const ARGUMENT_KEY_RESULT_ERRORCODE = @"errorCode"; static NSString *const ARGUMENT_KEY_RESULT_ERRORCODE = @"errorCode";
static NSString * const ARGUMENT_KEY_RESULT_ERRORMESSAGE = @"errorMessage"; static NSString *const ARGUMENT_KEY_RESULT_ERRORMESSAGE = @"errorMessage";
static NSString * const ARGUMENT_KEY_RESULT_USERID = @"userId"; static NSString *const ARGUMENT_KEY_RESULT_USERID = @"userId";
static NSString * const ARGUMENT_KEY_RESULT_ACCESSTOKEN = @"accessToken"; static NSString *const ARGUMENT_KEY_RESULT_ACCESSTOKEN = @"accessToken";
static NSString * const ARGUMENT_KEY_RESULT_REFRESHTOKEN = @"refreshToken"; static NSString *const ARGUMENT_KEY_RESULT_REFRESHTOKEN = @"refreshToken";
static NSString * const ARGUMENT_KEY_RESULT_EXPIRESIN = @"expiresIn"; static NSString *const ARGUMENT_KEY_RESULT_EXPIRESIN = @"expiresIn";
-(instancetype)initWithChannel:(FlutterMethodChannel *)channel { - (instancetype)initWithChannel:(FlutterMethodChannel *)channel {
self = [super init]; self = [super init];
if (self) { if (self) {
_channel = channel; _channel = channel;
@ -57,7 +57,7 @@ static NSString * const ARGUMENT_KEY_RESULT_EXPIRESIN = @"expiresIn";
- (void)handleMethodCall:(FlutterMethodCall *)call - (void)handleMethodCall:(FlutterMethodCall *)call
result:(FlutterResult)result { result:(FlutterResult)result {
if ([METHOD_REGISTERAPP isEqualToString:call.method]) { if ([METHOD_REGISTERAPP isEqualToString:call.method]) {
NSString * appKey = call.arguments[ARGUMENT_KEY_APPKEY]; NSString *appKey = call.arguments[ARGUMENT_KEY_APPKEY];
[WeiboSDK registerApp:appKey]; [WeiboSDK registerApp:appKey];
result(nil); result(nil);
} else if ([METHOD_ISINSTALLED isEqualToString:call.method]) { } else if ([METHOD_ISINSTALLED isEqualToString:call.method]) {
@ -74,8 +74,8 @@ static NSString * const ARGUMENT_KEY_RESULT_EXPIRESIN = @"expiresIn";
} }
} }
-(void)handleAuthCall:(FlutterMethodCall*)call result:(FlutterResult)result { - (void)handleAuthCall:(FlutterMethodCall *)call result:(FlutterResult)result {
WBAuthorizeRequest * request = [WBAuthorizeRequest request]; WBAuthorizeRequest *request = [WBAuthorizeRequest request];
request.scope = call.arguments[ARGUMENT_KEY_SCOPE]; request.scope = call.arguments[ARGUMENT_KEY_SCOPE];
request.redirectURI = call.arguments[ARGUMENT_KEY_REDIRECTURL]; request.redirectURI = call.arguments[ARGUMENT_KEY_REDIRECTURL];
request.shouldShowWebViewForAuthIfCannotSSO = YES; request.shouldShowWebViewForAuthIfCannotSSO = YES;
@ -84,36 +84,36 @@ static NSString * const ARGUMENT_KEY_RESULT_EXPIRESIN = @"expiresIn";
result(nil); result(nil);
} }
-(void)handleShareTextCall:(FlutterMethodCall*)call result:(FlutterResult)result { - (void)handleShareTextCall:(FlutterMethodCall *)call result:(FlutterResult)result {
WBSendMessageToWeiboRequest * request = [WBSendMessageToWeiboRequest request]; WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest request];
WBMessageObject * message = [WBMessageObject message]; WBMessageObject *message = [WBMessageObject message];
message.text = call.arguments[ARGUMENT_KEY_TEXT]; message.text = call.arguments[ARGUMENT_KEY_TEXT];
request.message = message; request.message = message;
[WeiboSDK sendRequest:request]; [WeiboSDK sendRequest:request];
result(nil); result(nil);
} }
-(void)handleShareMediaCall:(FlutterMethodCall*)call result:(FlutterResult)result { - (void)handleShareMediaCall:(FlutterMethodCall *)call result:(FlutterResult)result {
WBSendMessageToWeiboRequest * request = [WBSendMessageToWeiboRequest request]; WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest request];
WBMessageObject * message = [WBMessageObject message]; WBMessageObject *message = [WBMessageObject message];
if ([METHOD_SHAREIMAGE isEqualToString:call.method]) { if ([METHOD_SHAREIMAGE isEqualToString:call.method]) {
message.text = call.arguments[ARGUMENT_KEY_TEXT]; message.text = call.arguments[ARGUMENT_KEY_TEXT];
WBImageObject * object = [WBImageObject object]; WBImageObject *object = [WBImageObject object];
FlutterStandardTypedData * imageData = call.arguments[ARGUMENT_KEY_IMAGEDATA]; FlutterStandardTypedData *imageData = call.arguments[ARGUMENT_KEY_IMAGEDATA];
if (imageData != nil) { if (imageData != nil) {
object.imageData = imageData.data; object.imageData = imageData.data;
} else { } else {
NSString * imageUri = call.arguments[ARGUMENT_KEY_IMAGEURI]; NSString *imageUri = call.arguments[ARGUMENT_KEY_IMAGEURI];
NSURL * imageUrl = [NSURL URLWithString:imageUri]; NSURL *imageUrl = [NSURL URLWithString:imageUri];
object.imageData = [NSData dataWithContentsOfFile:imageUrl.path]; object.imageData = [NSData dataWithContentsOfFile:imageUrl.path];
} }
message.imageObject = object; message.imageObject = object;
} else if ([METHOD_SHAREWEBPAGE isEqualToString:call.method]) { } else if ([METHOD_SHAREWEBPAGE isEqualToString:call.method]) {
WBWebpageObject * object = [WBWebpageObject object]; WBWebpageObject *object = [WBWebpageObject object];
object.objectID = [[NSUUID UUID].UUIDString stringByReplacingOccurrencesOfString:@"-" withString:@""]; object.objectID = [[NSUUID UUID].UUIDString stringByReplacingOccurrencesOfString:@"-" withString:@""];
object.title = call.arguments[ARGUMENT_KEY_TITLE]; object.title = call.arguments[ARGUMENT_KEY_TITLE];
object.description = call.arguments[ARGUMENT_KEY_DESCRIPTION]; object.description = call.arguments[ARGUMENT_KEY_DESCRIPTION];
FlutterStandardTypedData * thumbData = call.arguments[ARGUMENT_KEY_THUMBDATA]; FlutterStandardTypedData *thumbData = call.arguments[ARGUMENT_KEY_THUMBDATA];
if (thumbData != nil) { if (thumbData != nil) {
object.thumbnailData = thumbData.data; object.thumbnailData = thumbData.data;
} }
@ -125,36 +125,35 @@ static NSString * const ARGUMENT_KEY_RESULT_EXPIRESIN = @"expiresIn";
result(nil); result(nil);
} }
# pragma mark - AppDelegate #pragma mark - AppDelegate
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WeiboSDK handleOpenURL:url delegate:self]; return [WeiboSDK handleOpenURL:url delegate:self];
} }
-(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 {
return [WeiboSDK handleOpenURL:url delegate:self]; return [WeiboSDK handleOpenURL:url delegate:self];
} }
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
return [WeiboSDK handleOpenURL:url delegate:self]; return [WeiboSDK handleOpenURL:url delegate:self];
} }
# pragma mark - WeiboSDKDelegate #pragma mark - WeiboSDKDelegate
-(void)didReceiveWeiboRequest:(WBBaseRequest *)request {
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {
} }
-(void)didReceiveWeiboResponse:(WBBaseResponse *)response { - (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
NSMutableDictionary * dictionary = [NSMutableDictionary dictionary]; NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setValue:[NSNumber numberWithInteger:response.statusCode] forKey:ARGUMENT_KEY_RESULT_ERRORCODE]; [dictionary setValue:[NSNumber numberWithInteger:response.statusCode] forKey:ARGUMENT_KEY_RESULT_ERRORCODE];
if ([response isKindOfClass:[WBAuthorizeResponse class]]) { if ([response isKindOfClass:[WBAuthorizeResponse class]]) {
if (response.statusCode == WeiboSDKResponseStatusCodeSuccess) { if (response.statusCode == WeiboSDKResponseStatusCodeSuccess) {
WBAuthorizeResponse * authorizeResponse = (WBAuthorizeResponse *) response; WBAuthorizeResponse *authorizeResponse = (WBAuthorizeResponse *)response;
NSString * userId = authorizeResponse.userID; NSString *userId = authorizeResponse.userID;
NSString * accessToken = authorizeResponse.accessToken; NSString *accessToken = authorizeResponse.accessToken;
NSString * refreshToken = authorizeResponse.refreshToken; NSString *refreshToken = authorizeResponse.refreshToken;
long long expiresIn = ceil(authorizeResponse.expirationDate.timeIntervalSinceNow);// long long expiresIn = ceil(authorizeResponse.expirationDate.timeIntervalSinceNow); //
[dictionary setValue:userId forKey:ARGUMENT_KEY_RESULT_USERID]; [dictionary setValue:userId forKey:ARGUMENT_KEY_RESULT_USERID];
[dictionary setValue:accessToken forKey:ARGUMENT_KEY_RESULT_ACCESSTOKEN]; [dictionary setValue:accessToken forKey:ARGUMENT_KEY_RESULT_ACCESSTOKEN];
[dictionary setValue:refreshToken forKey:ARGUMENT_KEY_RESULT_REFRESHTOKEN]; [dictionary setValue:refreshToken forKey:ARGUMENT_KEY_RESULT_REFRESHTOKEN];
@ -163,7 +162,7 @@ static NSString * const ARGUMENT_KEY_RESULT_EXPIRESIN = @"expiresIn";
[_channel invokeMethod:METHOD_ONAUTHRESP arguments:dictionary]; [_channel invokeMethod:METHOD_ONAUTHRESP arguments:dictionary];
} else if ([response isKindOfClass:[WBSendMessageToWeiboResponse class]]) { } else if ([response isKindOfClass:[WBSendMessageToWeiboResponse class]]) {
if (response.statusCode == WeiboSDKResponseStatusCodeSuccess) { if (response.statusCode == WeiboSDKResponseStatusCodeSuccess) {
WBSendMessageToWeiboResponse * sendMessageToWeiboResponse = (WBSendMessageToWeiboResponse *) response; WBSendMessageToWeiboResponse *sendMessageToWeiboResponse = (WBSendMessageToWeiboResponse *)response;
} }
[_channel invokeMethod:METHOD_ONSHAREMSGRESP arguments:dictionary]; [_channel invokeMethod:METHOD_ONSHAREMSGRESP arguments:dictionary];
} }