closeBaseResource(String pathBase)

5.4.5 Примеры использования Android-фреймворка

Запрос обновления таблицы с помощью дельты

Таблица создается автоматически для запрашиваемого ресурса.

Expand source 

hyperHive. getDelta(resourceName).execute();

Добавление записей и удаление в одной операции

Expand source 

String queryCRUD = new CRUDRequestBuilder()

  .addUpsertOperation(new FruitsUpsertItem(100.0, "Апельсин"))

  .addUpsertOperation(new FruitsUpsertItem(101.0, "bananas"))

  .addUpsertOperation(new FruitsUpsertItem(102.0, "Хурма"))

  .addDeleteOperation(99)

  .build();

hyperHive. СRUDExecute(resourceName, queryCRUD).execute();

Создание или открытие зашифрованной базы данных

Expand source 

hyperHive. openBaseDefault(key);

Включение логирования и отправки по расписанию с сервера

Expand source 

// Подключить логирование

hyperHive. initLogging();

Выполнение операции асинхронно

Expand source 

hyperHive. CRUDExecute(resourceName, queryCRUD)

  .setHandler(uiHandler)

  .enqueue(new Callback<BaseStatus>() {

  @Override

  public void onResponse(Call<BaseStatus> call, BaseStatus baseStatus) {

  }

  @Override

  public void onFailure(Call<BaseStatus> call, Throwable t) {

  }

  });

Обработка промежуточных результатов и отмена выполнения запроса (setProgressListener)

Expand source 

hyperHive. CRUDExecute(resourceName, queryCRUD)

  .setProgressListener(new ProgressCallListener() {

НЕ нашли? Не то? Что вы ищете?

  @Override

  public boolean onChangeProgress(String message, long id) {

  // Обработка промежуточных результатов

  // возвращаем true если хотим прервать выполнение запроса

  return isCancel();

  }

  })

  .enqueue(new Callback<BaseStatus>() {

  @Override

  public void onResponse(Call<BaseStatus> call, BaseStatus baseStatus) {

  }

  @Override

  public void onFailure(Call<BaseStatus> call, Throwable t) {

  }

  });


Вызов запроса с указанием ожидаемого класса

Expand source 

TableMaterialStatus res = hyperHive().query(sqliteDir, query, TableMaterialStatus. class).execute();

5.5 Фреймворк iOS

Данный раздел содержит материалы, относящиеся к мобильному фреймворку iOS.

5.5.1 Подключение iOS-фреймворка в проект

Для подключения iOS-фреймворка в проект разработки мобильного приложения необходимо выполнить следующие шаги:

1. Загрузить архив с iOS-фреймворком (см. материал Загрузка дистрибутивов HyperHive). 


2. Разархивировать файл hhive-framework-iOS. zip

3. Используя Xcode подключить HHFW. framework из распакованной папки. Для этого: 


a. Нажать ALT+Command+A или кликнуть в меню File и выберите “Add files to …”, в появившемся окне перейти в распакованную папку, выбрать файл “HHFW. framework” и нажать “Add”;

b. Открыть файл проекта с расширением “.xcodeproj” на вкладке “General”:

c. В разделе: "Embedded Binaries" кликнуть на "+";

d. Из предложенного списка выбрать "HHFW. dramework":

4. Синхронизовать проект и собрать. После этого должен быть доступен импорт: "HHFW. h", что говорит о том, что фреймворк подключился успешно

5.5.2 Инициализация и настройка в рамках iOS-фреймворка

Главный класс для вызова методов API называется “HHFWController”. Создавать его экземпляр нет необходимости, класс реализует шаблон синглтон. Для доступа к нему необходимо вызвать классовый метод “+ (instancetype _Nonnull)sharedInstance”.

Для подключения всех доступных заголовочных файлов фреймворка достаточно подключить “HHFW. h”:

Expand source 

#import "HHFW/HHFW. h"

Фреймворк не хранит ссылку на сервер, её необходимо передавать в каждый метод, в котором есть параметр URL. По этой причине удобно создать обертку над фреймворком, в которой будет скомпонован и передан в методы нужный URL.

Ниже показан пример такого класса:

Expand source 

#import "HHFW/HHFW. h"

#define URL @"http://test. sp. "

@interface HHFWWrap()

@property (nonatomic, strong, nonnull) NSString *token;

@end

@implementation HHFWWrap

+ (instancetype _Nonnull)sharedInstance {

  static dispatch_once_t onceToken;

  static id sharedInstance;

  dispatch_once(&onceToken, ^{

  sharedInstance = [[HHFWWrap alloc] init];

  });

  return sharedInstance;

}

- (void)authWithUserName:(NSString * _Nonnull)userName

  password:(NSString * _Nonnull)password

  andDomain:(NSString * _Nonnull)domain

  completionHandler:(void(^ _Nullable)(BOOL isSuccess))handler {

  [[HHFWController sharedInstance] authLogin:userName

  password:password

  url:URL

  deviceID:deviceID

  completionHandler:^(NSArray<NSString *> * _Nullable availableResources, NSInteger curlErrorCode, NSInteger httpErrorCode){

  if (availableResources && availableResources. count > 0) {

  NSString *url = [NSString stringWithFormat:@"%@%@/%@/%@/%@", URL,

                GET_TOKEN, userName, password, domain];

  [[HHFWController sharedInstance] getWithBaseURL:url params:nil

  headers:nil

        completionHandler:^(id jsonResult){

  self. token = jsonResult[@"data"];

                        if (handler) {

                        handler(YES);

        }

  }];

  } else if (handler) {

  handler(NO);

  }

  }];

}

- (void)createWithParameters:(NSDictionary * _Nonnull)parameters

  completionHandler:(void(^ _Nullable)())handler {

  NSString *tokenParam = [NSString stringWithFormat:@"Bearer %@",

  self. token];

[[HHFWController sharedInstance] postWithURL:[URL

  stringByAppendingString:RESOURCE_REFERENCE_CREATE]

  params:parameters 

  headers:@{@"Authorization":tokenParam,

        @"Content-Type":@"application/json"}

  completionHandler:^(id _Nonnull jsonResult) {

  if (handler) {

  handler();

  }

  }];

}

- (void)logout {

  [[HHFWController sharedInstance] logout];

}

@end

5.5.3 Вызов методов iOS

Большинство методов выполняются асинхронно в фоновом потоке. По этой причине, если необходимо визуализировать результат выполнения запроса, следует передать блок “(HHFWCompletionHandler _Nullable)handler” в метод, который вызовется автоматически на основном потоке после выполнения метода. Стоит отметить, что “completionHandler” для метода авторизации отличается от остальных, потому что параметрами данного блока являются:

    список доступных ресурсов сurl-ошибки http-ошибки

В то время как остальные методы принимают блок, параметром которого есть json-ответ.

Expand source 

[[HHFWController sharedInstance] authLogin:userName

  password:password

  url:URL

  deviceIDdeviceID

  completionHandler:^(NSArray<NSString *> * _Nullable availableResources, NSInteger curlErrorCode, NSInteger httpErrorCode){

       // в данном блоке необходимо обработать ошибки и продолжить работу

       // при наличии доступных ресурсов в ответе сервера

}];

Требуется обратить внимание на то, что перед использованием многих методов необходимо произвести авторизацию, иначе методы не будут выполнять ничего кроме вызова блока handler c параметром nil.

5.5.4 Описание методов iOS

    Авторизация пользователя по логину и паролю

Метод служит для авторизации пользователя с использованием логина и пароля. Метод возвращает ответ в формате json.

- (NSDictionary *)authWithBaseURL:(NSString *)baseURL

  cookie:(NSString *)cookie

  device:(NSString *)device

  environment:(NSString *)env

  project:(NSString *)prj

  application:(NSString *)app;

    Отмена авторизации

Метод служит для выхода из режима авторизованного пользователя.

- (void)logout;

    GET-запрос

Метод служит для получения данных от сервера.

Содержит параметры:

params – параметры запроса в формате json;

headers – http-заголовки;

handler.

- (void)getWithBaseURL:(NSString * _Nonnull)sURL

  params:(NSDictionary * _Nullable)params

  headers:(NSDictionary * _Nullable)headers

  completionHandler:(HHFWCompletionHandler _Nullable)handler;


    POST-запрос

Метод служит для отправки данных на сервер. Параметры см. GET-запрос.

- (void)getWithBaseURL:(NSString * _Nonnull)sURL

  params:(NSDictionary * _Nullable)params

  headers:(NSDictionary * _Nullable)headers

  completionHandler:(HHFWCompletionHandler _Nullable)handler;


    Работа с дельтой

Метод служит для работы с дельта кэшированием. Метод принимает параметр “handler”, в который надо передать блок. Его выполнение запустится при завершении данного метода. При вызове данного запроса выполняется скачивание с сервера данных ресурса и сохранение их в локальной базе данных, соответствующей указанному ресурсу.

- (void)getResourceDeltaFromURL:(NSString * _Nonnull)sBaseURL

  resourceName:(NSString * _Nonnull)sResourceName

  parameters:(NSString * _Nullable)sParams

  completionHandler:(HHFWCompletionHandler _Nullable)handler;

    Работа с дельтой с дополнительным параметром “parameters”

Метод аналогичный предыдущему, но с дополнительным параметром “parameters”, который служит для конкретизации запрашиваемых ресурсов.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17