云豹直播系统源码接入华为云存储,含问题及解决方法
云豹直播系统源码接入华为云存储该怎么做?以下是云豹科技小编为大家整理的全套方案教程,各位客户大大们可以看着教程自行学习,也可直接联系我司为您接入。
云豹直播系统源码接入华为云存储的前期准备工作
1.注册云服务账号开通对象存储服务。
(1)登录公有云网站。在页面右上角单击“注册”。按需填写注册 信息并单击“同意协议并注册”。
(2)开通OBS服务,使用OBS服务之前必须先充值,才能正常使用OBS服务。
(3)登录OBS管理控制台。单击页面右上角的“费用”进入费用中心页面。单击“充值”, 系统自动跳转到充值窗口。根据界面提示信息,对账户进行充值。充值成功后,关闭充值窗口,返回管理控制台首页。单击“对象存储服务”,开通并进入OBS管理控制台。
2.创建访问密钥
OBS通过用户账号中的AK和SK进行签名验证,确保通过授权的账号才能访问指定的OBS资源。
(1).登录OBS控制台。
(2).单击页面右上角的用户名,并选择“我的凭证”。
(3).在“我的凭证”页面,单击左侧导航栏的“访问密钥”。
(4).在“访问密钥”页面,单击“新增访问密钥”。
(5).在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。
(6).用户如果未绑定邮箱和手机,则只需输入登录密码。用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。
(7).单击“确定”。在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。
3.获取终端节点(Endpoint)
请在地区和终端节点页面获取OBS各区域的终端节点(Endpoint)信息。
4.创建桶并配置参数
示例图如下:
5.下载OBS iOS SDK的最新版本:OBS iOS SDK
(1).将OBS.framework添加到工程中,勾选“Copy items if needed”。
(2).将“TARGETS > Build Settings > Apple LLVM9.0 – language –Modules > Allow Non-modular includes in Framework Modules”设置成“Yes”。
(3).引入头文件#import <OBS/OBS.h>
二、云豹直播系统源码接入华为云存储,部分代码如下
1.创建一个OBSClient实例
OBSStaticCredentialProvider *credentailProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:HUAWEI_KEY secretKey:HUAWEI_SECRET_KEY]; OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:@"Endpoint" credentialProvider:credentailProvider]; // 初始化client OBSClient *client = [[OBSClient alloc] initWithConfiguration:conf]; // 创建列举对象请求 OBSListBucketsRequest *request = [OBSListBucketsRequest new]; // 列举对象 OBSBFTask *task = [client listBuckets:request completionHandler:^(OBSListBucketsResponse *response, NSError *error) { }];
2.上传文件
//backetname 桶名称 // filePath 文件路径 //objectname 对象描述标识(文件名) OBSPutObjectWithFileRequest *requests = [[OBSPutObjectWithFileRequest alloc] initWithBucketName:backetname objectKey:objectname uploadFilePath:filePath]; // 上传进度 requests.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100); }; // 上传文件结果回调 [ client putObject:requests completionHandler:^(OBSPutObjectResponse *response, NSError *error){ if([response.statusCodeisEqualToString:@"200"]){ // 生成授权访问url [client createV2PreSignedURL:requests expireAfter:3600 completionHandler:^(NSString *urlString, NSString *httpVerb, NSDictionary *signedHeaders) { NSRange range = [urlString rangeOfString:@"?AWSAccessKeyId"];//匹配得到的下标 NSLog(@"获取下标===%lu",(unsigned long)range.location); NSString *zstring = [urlString substringToIndex:range.location]; [imageUrlArray addObject:zstring]; NSLog(@"链接%@",zstring); }]; }else{ //图片上传失败 } }]; [task waitUntilFinished];
注意:
Endpoint是以http或https开头,要不然上传会报错
filePath是文件路径,如果想传data数据的话需要用到流式上传,需要使用OBSPutObjectWithDataRequest作为对象的数据源。
集成过程中遇到的问题:
1.集成完成后上传文件提示Attempted to create a task in a session that has been invalidated这个错误导致崩溃。原因是obsclient没有放在函数外边,导致创建后销毁的太早了,每次创建后都会重新创建一个client所致。
解决方法:
1)创建全局obsclient
2)如果是局部变量的话,应该通过对请求任务执行waitUntilFinished操作以保证Client在请求任务执行期间始终有效,否则可能造成网络请求失败,程序崩溃的问题。
2.上传成功后打印response中并没有返回文件的链接
解决方法:在上传成功后进行在使用url进行授权访问,调用createV2PreSignedURL方法回去文件链接地址,如果在上传文件之前调用此方法也会生成链接,所以将本方法放到了上传成功之后调用的。
以上就是云豹直播系统源码在接入华为云存储时的操作步骤、可能会出现的问题以及解决方法,如果还有不明白的地方,欢迎联系云豹科技。
声明:以上内容为云豹科技原创,未经公司同意,禁止转载,否则将追究相关法律责任www.yunbaokj.com