qiniu / objc-sdk

Qiniu Resource (Cloud) Storage Objective-C SDK for Mac/iOS
http://developer.qiniu.com
MIT License
435 stars 197 forks source link

Qiniu Resource Storage SDK for Objective-C

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

安装

通过 CocoaPods

pod "Qiniu", "~> 8.8.0" 

通过 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.8.0")
    ],
    // ...
)

运行环境

Qiniu SDK 版本 最低 iOS版本 最低 OS X 版本 Notes
8.8.x iOS 9 OS X 10.15 Xcode 最低版本 11
8.7.x iOS 9 OS X 10.15 Xcode 最低版本 11
8.6.x iOS 7 OS X 10.15 Xcode 最低版本 11
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 None 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 = YES;// 是否使用https
        builder.zone = [[QNAutoZone alloc] init];// 根据 bucket 自动查询区域
        // builder.zone = [QNFixedZone createWithRegionId:@"z0"];// 指定华东区域
        // builder.zone = [QNFixedZone createWithRegionId:@"z1"];// 指定华北区域
        // builder.zone = [QNFixedZone createWithRegionId:@"z2"];// 指定华南区域
        // builder.zone = [QNFixedZone createWithRegionId:@"na0"];// 指定北美区域
        // builder.zone = [QNFixedZone createWithRegionId:@"as0"];// 指定东南亚区域
    }];

    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"

示例代码

常见问题

代码贡献

详情参考 代码提交指南.

贡献记录

联系我们

代码许可

The MIT License (MIT). 详情见 License 文件.