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 |


