FlutterWxworkPlugin.m 7.29 KB
#import "FlutterWxworkPlugin.h"

#import "WWKApiObject.h"

@implementation FlutterWxworkPlugin

FlutterResult authResult;
FlutterMethodChannel *channel;
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
   channel = [FlutterMethodChannel
      methodChannelWithName:@"flutter_wxwork"
            binaryMessenger:[registrar messenger]];
  FlutterWxworkPlugin* instance = [[FlutterWxworkPlugin alloc] init];
  [registrar addMethodCallDelegate:instance channel:channel];
}



- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
 if([@"isAppInstalled" isEqualToString:call.method]){
      NSString *str = [NSString stringWithFormat:@"%hhd",[WWKApi isAppInstalled]];
      result(str);
   }else if ([@"register" isEqualToString:call.method]) {
     NSDictionary *dic = call.arguments;
     NSString *scheme = dic[@"scheme"];
     NSString *corpId = dic[@"corpId"];
     NSString *agentId = dic[@"agentId"];
     result([NSString stringWithFormat:@"%hhd",[WWKApi registerApp:scheme corpId:corpId agentId:agentId]]);
  } else if ([@"auth" isEqualToString:call.method]){
     WWKSSOReq *req = [[WWKSSOReq alloc] init];
     // state参数为这次请求的唯一标示,客户端需要维护其唯一性。SSO回调时会原样返回
     req.state = call.arguments[@"state"];
     [WWKApi sendReq:req];
     authResult = result;
  }
   
     else if ([@"shareImage" isEqualToString:call.method]) {
        [self shareImage:call result:result];
    }
else if ([@"shareMiniProgram" isEqualToString:call.method]) {
        [self shareMiniProgram:call result:result];
    }  else {
    result(FlutterMethodNotImplemented);
  }
}




- (void)shareImage:(FlutterMethodCall *)call result:(FlutterResult)result {

    WWKSendMessageReq *req = [[WWKSendMessageReq alloc] init];
    WWKMessageImageAttachment *attachment = [[WWKMessageImageAttachment alloc] init];
    attachment.filename = @"test.gif";
    attachment.path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"gif"];
    req.attachment = attachment;
    [WWKApi sendReq:req];
    
}


- (void)shareMiniProgram:(FlutterMethodCall *)call result:(FlutterResult)result {

    WWKSendMessageReq *req = [[WWKSendMessageReq alloc] init];
    WWKMessageTextAttachment *attachment = [[WWKMessageTextAttachment alloc] init];
    attachment.text = @"分享的文本内容";
    req.attachment = attachment;
    [WWKApi sendReq:req];
// WWKSendMessageReq *req = [[WWKSendMessageReq alloc] init];
// WWKMessageMiniAppAttachment *attachment = [[WWKMessageMiniAppAttachment alloc] init];
// // 示例用小程序,请填写应用关联的小程序username、路径和图片以及标题

// NSString *userName = call.arguments[@"userName"];  //必须是应用关联的小程序,注意要有@app后缀
//    NSString *path = call.arguments[@"path"]; 
//    NSString *hdImageData = call.arguments[@"hdImageData"]; 
//    NSString *title = call.arguments[@"title"]; 
 
// attachment.userName = userName; //必须是应用关联的小程序,注意要有@app后缀
// attachment.path = path;
// NSURL *imageURL = [NSURL URLWithString:hdImageData];
//         //下载图片
//         NSData *data= [NSData dataWithContentsOfURL:imageURL];
// attachment.hdImageData = data;
// // attachment.hdImageData = UIImageJPEGRepresentation([UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"]], 1.0f);
// attachment.title = @"分享标题";
// req.attachment = attachment;        
// [WWKApi sendReq:req];
    
}




// - (void)handleShare:(FlutterMethodCall *)call result:(FlutterResult)result {
//     if ([@"shareText" isEqualToString:call.method]) {
//         [self shareText:call result:result];
//     } else if ([@"shareImage" isEqualToString:call.method]) {
//         [self shareImage:call result:result];
//     } else if ([@"shareWebPage" isEqualToString:call.method]) {
//         [self shareWebPage:call result:result];
//     } else if ([@"shareMusic" isEqualToString:call.method]) {
//         [self shareMusic:call result:result];
//     } else if ([@"shareVideo" isEqualToString:call.method]) {
//         [self shareVideo:call result:result];
//     } else if ([@"shareMiniProgram" isEqualToString:call.method]) {
//         [self shareMiniProgram:call result:result];
//     } else if ([@"shareFile" isEqualToString:call.method]) {
//         [self shareFile:call result:result];
//     }
// }

- (void)checkWWorkInstallation:(FlutterMethodCall *)call result:(FlutterResult)result {
    NSString *str = [NSString stringWithFormat:@"%hhd",[WWKApi isAppInstalled]];
      result(str);
   
    // result(@([WWKApi isAppInstalled]));
}

- (void)registerApp:(FlutterMethodCall *)call result:(FlutterResult)result {
    // NSNumber* doOnIOS =call.arguments[@"iOS"];

    // if (![doOnIOS boolValue]) {
    //     result(@NO);
    //     return;
    // }

    // NSString *appId = call.arguments[@"appId"];
    // if ([FluwxStringUtil isBlank:appId]) {
    //     result([FlutterError errorWithCode:@"invalid app id" message:@"are you sure your app id is correct ? " details:appId]);
    //     return;
    // }

    // NSString *universalLink = call.arguments[@"universalLink"];

    // if ([FluwxStringUtil isBlank:universalLink]) {
    //     result([FlutterError errorWithCode:@"invalid universal link" message:@"are you sure your universal link is correct ? " details:universalLink]);
    //     return;
    // }

    
 NSString *scheme = call.arguments[@"scheme"]; // 第三方App的Schema
 NSString *corpId = call.arguments[@"corpId"]; //   第三方App所属企业的ID
 NSString *agentId = call.arguments[@"agentId"]; // 第三方App在企业内部的ID
    // BOOL isWeChatRegistered = [WXApi registerApp:appId universalLink:universalLink];
 BOOL isWWKRegistered = [WWKApi registerApp:@"wwauthbdca186ec4257973000006" corpId:@"wwbdca186ec4257973" agentId:@"1000006"];
  result(@(isWWKRegistered));
    // result(@(isWeChatRegistered));
}

#pragma mark - AppDelegate

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options{
    return [WWKApi handleOpenURL:url delegate:self];
}

- (BOOL)isBlankString:(NSString *)string{

    if (string == nil) {

        return YES;

    }

    if (string == NULL) {

        return YES;

    }

    if ([string isKindOfClass:[NSNull class]]) {

        return YES;

    }

    if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]==0) {

        return YES;

    }

    return NO;

}

- (void)onResp:(WWKBaseResp *)resp {
    /*! @brief 所有通过sendReq发送的SDK请求的结果都在这个函数内部进行异步回调
     * @param resp SDK处理请求后的返回结果 需要判断具体是哪项业务的回调
     */
    /* SSO的回调 */
    if ([resp isKindOfClass:[WWKSSOResp class]]) {
        WWKSSOResp *r = (WWKSSOResp *)resp;
        NSMutableDictionary *mDic = [[NSMutableDictionary alloc]init];
        if([self isBlankString:r.code]){
              [mDic setObject:@"1" forKey:@"errCode"];
              [mDic setObject:@"" forKey:@"code"];
        }else{
             [mDic setObject:@"0" forKey:@"errCode"];
             [mDic setObject:r.code forKey:@"code"];
        }
        [mDic setObject:r.state forKey:@"state"];
        authResult(mDic);
       // [channel invokeMethod:@"auth" arguments:mDic];
    }

}



@end