七牛 8.8.0

七牛 8.8.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2024年8月

七牛七牛 维护。



七牛 8.8.0

七牛资源存储 SDK for Objective-C

@qiniu on weibo Software License Build Status Badge w/ Version GitHub release codecov Platform

安装

通过 CocoaPods

pod "Qiniu", "~> 8.5.3" 

通过 Swift Package Manager (Xcode 11+)

App 对接:
File -> Swift Packages -> Add Package Dependency,输入库链接,选择相应版本即可
库链接: https://github.com/qiniu/objc-sdk

库对接:
let package = Package(
    dependencies: [
        .package(url: "https://github.com/qiniu/objc-sdk", from: "8.5.3")
    ],
    // ...
)

运行环境

Qiniu SDK 版本 最低 iOS 版本 最低 OS X 版本 注意
8.5.x iOS 7 OS X 10.15 Xcode 最低版本 11
8.4.x iOS 7 OS X 10.15 Xcode 最低版本 11
8.3.x iOS 7 OS X 10.15 Xcode 最低版本 11
8.2.x iOS 7 OS X 10.15 Xcode 最低版本 11
8.1.x iOS 7 OS X 10.15 Xcode 最低版本 11
8.0.x iOS 7 OS X 10.15 Xcode 最低版本 11
7.5.x iOS 7 OS X 10.9 Xcode 最低版本 6.
7.4.x iOS 7 OS X 10.9 Xcode 最低版本 6.
7.3.x iOS 7 OS X 10.9 Xcode 最低版本 6.
7.2.x iOS 7 OS X 10.9 Xcode 最低版本 6.
7.1.x / AFNetworking-3.x iOS 7 OS X 10.9 Xcode 最低版本 6.
7.0.x / AFNetworking-2.x iOS 6 OS X 10.8 Xcode 最低版本 5.
7.x / AFNetworking-1.x iOS 5 OS X 10.7 Xcode 最低版本 5.
6.x iOS 6 Xcode 最低版本 5.

使用方法

简单上传

#import <QiniuSDK.h>
...
    NSString *token = @"从服务端SDK获取";
    QNUploadManager *upManager = [[QNUploadManager alloc] init];
    NSData *data = [@"Hello, World!" dataUsingEncoding : NSUTF8StringEncoding];
    [upManager putData:data key:@"hello" token:token
        complete: ^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
        NSLog(@"%@", info);
        NSLog(@"%@", resp);
    } option:[QNUploadOption defaultOptions]];
...

如果使用最新版本的 sdk,将默认自动判断上传空间。如需指定上传区域,可以按照以下方式进行上传:

#import <QiniuSDK.h>
...
    QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) {
        builder.useHttps = NO;// 是否使用https
        builder.zone = [QNFixedZone zone0];// 指定华东区域
        // builder.zone = [QNFixedZone zone1];// 指定华北区域
        // builder.zone = [QNFixedZone zone2];// 指定华南区域
        // builder.zone = [QNFixedZone zoneNa0];// 指定北美区域
        // builder.zone = [QNFixedZone zoneAs0];// 指定东南亚区域
    }];
    
    QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];
    QNUploadOption *option = [[QNUploadOption alloc] initWithProgressHandler:^(NSString *key, float percent) {
        NSLog(@"progress %f", percent);
    }];
    
    NSData *data = [@"Hello, World!" dataUsingEncoding:NSUTF8StringEncoding];
    NSString *token = @"从服务端SDK获取";
    [upManager putData:data key:@"hello" token:token complete: ^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
        NSLog(@"%@", info);
        NSLog(@"%@", resp);
    } option:option];
...

建议 QNUploadManager 在创建一次后重复使用,或者使用单例模式创建。

测试

所有测试

$ xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_Mac -configuration Release -destination 'platform=macOS,arch=x86_64'

指定测试

可以在单元测试上修改,熟悉 SDK

$ xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_Mac -configuration Release -destination 'platform=macOS,arch=x86_64' -only-testing:"QiniuSDK_MacTests/QNResumeUploadTest/test5M"

示例代码

  • 完整的示例代码请参考 QiniuDemo 目录下的代码
  • 具体细节的一些配置可参考 QiniuSDKTests 下面的一些单元测试,以及源代码

常见问题

  • 如果遇到 crc 链接错误,请将 libz.dylib 添加到项目中
  • 如果遇到 res_9_ninit 链接错误,请将 libresolv.dylib 添加到项目中
  • 如果需要支持 iOS 5 或支持 RestKit,请使用 AFNetworking 1.x 版本的分支
  • 如果遇到其他编译错误,请参考 CocoaPods 的 troubleshooting
  • iOS 9+ 强制使用 https,需要在 project build info 中添加 NSAppTransportSecurity 类型的 Dictionary。在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 类型的 Boolean,其值设为 YES。具体操作可参见 http://blog.csdn.net/guoer9973/article/details/48622823
  • 上传返回错误码的理解,status code 注释

代码贡献

详情请参考 代码提交指南.

贡献记录

联系我们

  • 如需帮助,请提交工单(在 portal 右侧点击咨询与建议提交工单,或者直接向 [email protected] 发送邮件)
  • 如有任何问题,可以到问答社区提问,问答社区
  • 更详细的文档,见 官方文档站
  • 如发现 bug,欢迎提交 issue
  • 如需提交功能需求,欢迎提交 issue
  • 如要提交代码,欢迎提交 pull request
  • 欢迎关注我们的 微信 && 微博,及时获取动态信息

代码许可

MIT 许可证(MIT)。详见 许可文件