全部产品
对象存储 OSS

初始化

更新时间:2017-09-15 16:46:26   分享:   

OSSClient是OSS服务的iOS客户端,它为调用者提供了一系列的方法,可以用来操作,管理存储空间(bucket)和文件(object)等。在使用SDK发起对OSS的请求前,您需要初始化一个OSSClient实例,并对它进行一些必要设置。

确定Endpoint

Endpoint是阿里云OSS服务在各个区域的地址,目前支持两种形式

Endpoint类型 解释
OSS区域地址 使用OSS Bucket所在区域地址,各个区域Endpoint参考这里
用户自定义域名 用户自定义域名,且CNAME指向OSS域名

关于Endpoint,可以参考:点击查看

OSS区域地址

使用OSS Bucket所在区域地址,Endpoint查询可以有下面两种方式:

  • 查询Endpoint与区域对应关系详情,可以参考:点击查看
  • 您可以登录 阿里云OSS控制台,进入Bucket概览页,Bucket域名的后缀部分:如bucket-1.oss-cn-hangzhou.aliyuncs.comoss-cn-hangzhou.aliyuncs.com部分为该Bucket的外网Endpoint。

Cname

您可以将自己拥有的域名通过Cname绑定到某个存储空间(bucket)上,然后通过自己域名访问存储空间内的文件。

比如您要将域名new-image.xxxxx.com绑定到深圳区域的名称为image的存储空间上:您需要到您的域名xxxxx.com托管商那里设定一个新的域名解析,将http://new-image.xxxxx.com 解析到 http://image.oss-cn-shenzhen.aliyuncs.com ,类型为CNAME。

设置EndPoint和凭证

移动终端是一个不受信任的环境,把AccessKeyIdAccessKeySecret直接保存在终端用来加签请求,存在极高的风险。建议只在测试时使用明文设置模式,业务应用推荐使用STS鉴权模式自签名模式,详细请参考:访问控制移动端直传。设置EndPoint和CredentialProvider示例如下:

  1. NSString *endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  2. // 由阿里云颁发的AccessKeyId/AccessKeySecret构造一个CredentialProvider。
  3. // 移动端建议使用STS方式初始化OSSClient。可以通过sample中STS使用说明了解更多(https://github.com/aliyun/aliyun-oss-ios-sdk/tree/master/DemoByOC)
  4. id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:@"AccessKeyId" secretKeyId:@"AccessKeySecret" securityToken:@"SecurityToken"];
  5. client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];

提示:

设置EndPoint为cname

如果您已经在bucket上绑定cname,将该cname直接设置到endPoint即可。如:

  1. NSString *endpoint = "http://new-image.xxxxx.com";
  2. ...
  3. client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];

注意,苹果要求支持ATS标准后,所有Endpoint URL都必须为HTTPS URL,而cname域名暂不支持证书设置,所以暂时不能用cname设置Endpoint

更多鉴权方式参考:访问控制

设置网络参数

也可以在初始化的时候设置详细的ClientConfiguration:

  1. NSString *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
  2. // 移动端建议使用STS方式初始化OSSClient。更多鉴权模式请参考后面的访问控制章节。
  3. id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:@"AccessKeyId" secretKeyId:@"AccessKeySecret" securityToken:@"SecurityToken"];
  4. OSSClientConfiguration * conf = [OSSClientConfiguration new];
  5. conf.maxRetryCount = 3; // 网络请求遇到异常失败后的重试次数
  6. conf.timeoutIntervalForRequest = 30; // 网络请求的超时时间
  7. conf.timeoutIntervalForResource = 24 * 60 * 60; // 允许资源传输的最长时间
  8. client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential clientConfiguration:conf];
本文导读目录
本文导读目录
以上内容是否对您有帮助?