iOS 共享到Google Drive!

iOS 共享到Google Drive!OK,今天我们来对接一下分享文件到Google Drive

从网上扒拉扒拉半天,然后看,嗯,大概知道怎么回事,开始搞吧。

首先pod导入:

pod ‘GoogleAPIClientForREST/Drive’

pod ‘GoogleSignIn’

然后好像还需要引入一个GoogleService-Info.plist文件,当然,这个文件在之前接入firebase统计的时候就已经有了,然后和我们的运营一起找了半天怎么将他们给关联起来😓

随后在平台上看到有说,需要打开开关,打开后果然OK,具体位置当时没有记录,如有遇到可以之后补充。

然后就是配置文件里进行URL types里添加Scheme,对应的则是GoogleService-Info.plist文件中的REVERSED_CLIENT_ID字段的值。

info文件中配置.png

OK,开始最喜欢的代码环节。

//导入头文件

#import

#import

#import

共享开始

/// Google Drive

– (void)googleDriveAction {

// 数据初始化

self.googleDriveService = [GTLRDriveService new];

[self googleLogin];

}

登录调用。我这里不知道为何有些信息不能直接从配置文件中读取,因此自己手动进行了设置,实际开发根据实际情况处理。

// 1. 登录

– (void)googleLogin {

// 如果没有登录,则去登录

if ([GIDSignIn sharedInstance].currentUser == nil) {

GIDSignIn.sharedInstance.delegate = self;

GIDSignIn.sharedInstance.scopes = @[kGTLRAuthScopeDrive];

// 因为不能正常读取GoogleService文件中的属性,因此手动设置

GIDSignIn.sharedInstance.clientID = @”19603075583-d8eutqdn957od7veesggt4d1morkpuak.apps.googleusercontent.com”;

GIDSignIn.sharedInstance.presentingViewController = self;

[GIDSignIn.sharedInstance signIn];

}else {

[self uploadFile:[[NSBundle mainBundle] pathForResource:@”4″ ofType:@”pdf”] isImage:NO];

}

}

实现登录代理

// 实现代理

@interface ShareViewController ()

– (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error {

if (error == nil) {

self.googleDriveService.authorizer = user.authentication.fetcherAuthorizer;

self.googleUser = user;

[self uploadFile:[[NSBundle mainBundle] pathForResource:@”4″ ofType:@”pdf”] isImage:NO];

}else {

self.googleDriveService.authorizer = nil;

self.googleUser = nil;

}

}

上传文件

– (void)uploadFile:(NSString *)filePath isImage:(BOOL)isImage {

if (!filePath || ![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {

NSLog(@”file not exist”);

return;

}

// 4M 以内

NSData *fileData = [[NSFileManager defaultManager] contentsAtPath:filePath];

GTLRDrive_File *metadata = [GTLRDrive_File object];

metadata.name = isImage?@”4.jpeg”:@”4.pdf”;

GTLRUploadParameters *uploadParameters = [GTLRUploadParameters uploadParametersWithData:fileData MIMEType:isImage?@”image/jpeg”:@”application/pdf”];

uploadParameters.shouldUploadWithSingleRequest = TRUE;

GTLRDriveQuery_FilesCreate *query = [GTLRDriveQuery_FilesCreate queryWithObject:metadata

uploadParameters:uploadParameters];

query.fields = @”id”;

GTLRService *driveService = [[GTLRService alloc] init];

driveService.APIKey = @”AIzaSyBbmukUdjQaU-mMf5IvwY7Hjx10q0kqKFU”;

driveService.rootURLString = @”https://www.googleapis.com/upload/drive/v3/”;

driveService.authorizer = self.googleDriveService.authorizer;

[driveService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket,

GTLRDrive_File *file,

NSError *error) {

if (error == nil) {

NSLog(@”File ID %@”, file.identifier);

} else {

NSLog(@”An error occurred: %@”, error);

}

}];

}

OK,到这里就结束了,文件共享成功。

发表评论

邮箱地址不会被公开。 必填项已用*标注