MeliDevSDK 0.1.6

MeliDevSDK 0.1.6

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT许可证
发布上次发布2017年1月

Ignacio Giagante 维护。



 
依赖
AFNetworking~> 3.0
MBProgressHUD~> 1.0.0
 

  • 作者
  • Ignacio Giagante

MercadoLibre 的 iOS SDK

这是 MercadoLibre 平台的官方 iOS SDK。

如何安装它?

CocoaPods (iOS 8.0 或更高版本)

步骤 2:创建 Podfile

CocoaPods 管理的项目依赖项在名为 Podfile 的文件中指定。在您的 Xcode 项目 (.xcodeproj) 文件相同的目录中创建此文件

$ touch Podfile
$ open -a Xcode Podfile

您刚刚创建了 pod 文件,并使用 Xcode 打开了它!准备好向空的 pod 文件添加一些内容了吗?

将以下行复制并粘贴到 TextEdit 窗口中

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '8.0'
pod 'MeliDevSDK', '~> 0.1.4'

您不应该使用 TextEdit 编辑 pod 文件,因为 TextEdit 喜欢将标准引号替换为更图形化的引号。这可能会导致 CocoaPods 混淆并显示错误,因此最好仅使用 Xcode 或其他编程文本编辑器。

步骤 3:安装依赖项

现在您可以安装项目中的依赖项了

$ pod install

从现在起,在构建项目时,务必要始终打开生成的 Xcode 工作空间 (.xcworkspace) 而不是项目文件

$ open .xcworkspace

如何开始使用它?

为了开始使用 SDK,您需要使用以下静态方法初始化 SDK

  [Meli startSDK: CLIENT_ID_VALUE withRedirectUrl: REDIRECT_URL_VALUE error:&error];

其中

  • 客户端标识符:当您在 MercadoLibre 开发者网站上创建应用程序时提供的 App ID 参数。
  • 重定向 URI:您在 MercadoLibre 开发者网站上创建应用程序时提供的前端 URI。请注意,这个 URL 不一定属于实际的网站。

通过用户授权应用程序

SDK 提供了授权用户使用 MercadoLibre 凭据使用您应用程序的功能。为了做到这一点,您需要遵循以下步骤

1 - 请求身份标识。如果已存在,则表示您已获得使用需要授权的MercadoLibre API的权限。

2 - 如果您没有身份标识,您应该使用以下静态方法初始化sdk并开始登录过程。

  (void) startSDK: (NSString *) clientId withRedirectUrl:(NSString *) redirectUrl error:(NSError **) error;
  (void) startLogin: (UIViewController *) clientViewController withSuccesBlock: (void (^)()) successBlock withErrorBlock: (void (^)(NSString *)) errorBlock;

此最后一种方法将检查是否已初始化sdk。如果没有,将会记录一条消息,提示您进行初始化。

如果在尝试获取访问令牌时没有出现错误,导航控制器将控制权交给客户端视图控制器。

进行GET调用

匿名

NSString * result = [Meli get:path error:&error];

SuccessBlock successBlock = ^(NSURLSessionTask *task, id responseObject) {
    [self parseData:responseObject];
};

FailureBlock failureBlock = ^(NSURLSessionTask *operation, NSError *error) {
    if(error) {
        [self processError:operation error:error];
    }
};

[Meli get:path successBlock:successBlock failureBlock:failureBlock];

认证

NSString * result = [Meli getAuth:path withIdentity: [Meli getIdentity] error: &error];

SuccessBlock successBlock = ^(NSURLSessionTask *task, id responseObject) {
    [self parseData:responseObject];
};

FailureBlock failureBlock = ^(NSURLSessionTask *operation, NSError *error) {
    if(error) {
        [self processError:operation error:error];
    }
};

[Meli asyncGetAuth:path withIdentity: identity successBlock:successBlock failureBlock:failureBlock];

进行POST调用

NSString * result = [Meli post:path withBody:[self createJsonDataForPost] withIdentity: [Meli getIdentity] error:&error];
or
AsyncHttpOperationBlock operationBlock = ^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"Response: %@", responseObject);
        } else {
            NSLog(@"Error: %@, %@, %@", error, response, responseObject);
        }
    };

[Meli asyncPost:path withBody:body withIdentity: [Meli getIdentity] operationBlock:operationBlock];

进行PUT调用

NSString * result = [Meli put:path withBody:jsonData error:&error];
or
AsyncHttpOperationBlock operationBlock = ^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"Response: %@", responseObject);
        } else {
            NSLog(@"Error: %@, %@, %@", error, response, responseObject);
        }
    };

[Meli put:path withBody:[self createJsonDataForPut] withIdentity: [Meli getIdentity] error:&error];

进行DELETE调用

注意:在DELETE示例代码中,您将注意到它试图删除一个问题。因此,如果您要创建一个问题,应检查该项目不属于同一用户,否则您将从MercadoLibre API收到错误。
NSString * result = [Meli delete:path withIdentity: [Meli getIdentity] error:&error];
or
SuccessBlock successBlock = ^(NSURLSessionTask *task, id responseObject) {
    [self parseData:responseObject];
};

FailureBlock failureBlock = ^(NSURLSessionTask *operation, NSError *error) {
    if(error) {
        [self processError:operation error:error];
    }
};

[Meli asyncDelete:path withIdentity: [Meli getIdentity] successBlock:successBlock failureBlock:failureBlock];

示例

在GitHub存储库中的代码中,有一个示例项目,包含如何使用SDK的示例。