开发者社区> 问答> 正文

iOS-SDK之如何实现初始化?

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.com的oss-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和凭证


移动终端是一个不受信任的环境,把AccessKeyId和AccessKeySecret直接保存在终端用来加签请求,存在极高的风险。建议只在测试时使用明文设置模式,业务应用推荐使用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];

展开
收起
青衫无名 2017-10-18 13:58:07 2595 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
聚划算iOS平台动态化方案LuaView 立即下载
滴滴出行iOS端瘦身实践 立即下载
一个跨平台的云服务SDK需要什么 立即下载