Giter Club home page Giter Club logo

ios-sdk's Introduction

allychat-ios

SDK для добавления в iOS-приложения функциональности обмена сообщениями в реальном времени.

Требования

  • Xcode 6
  • iOS 7.0
  • ARC

Установка

Через СocoaPods.

platform :ios, '7.0'
pod 'ACSDK', :git => "https://github.com/allychat/ios-sdk.git"

Без CocoaPods:

  1. Добавьте ACSDK.framework в ваш проект.
  2. Ваше приложение должно быть собрано со следующими подключаемыми библиотеками:
  • libicucore.dylib

С чего начать

В начале советуем ознакомиться с демо-приложением в папке ACSDKDemo, которое содержит примеры использования различных возможностей SDK, таких как прием/отправку сообщений, подписку на Push-уведомления, вызовы методов REST API. Так как демо-проект использует систему управления зависимостями CocoaPods, для просмотра необходимо открывать AllychatDemo.xcworkspace.

Нaчало работы

Для работы с SDK необходимо его проинициализировать, передав Application ID и URL сервера.

#import <ACSDK/ACSDK.h>

[[ACSDK defaultInstance] setApplicationId:@"app_id" serverURL:[NSURL URLWithString:@"https://example.com"]];

Регистрация пользователя

//Create new User
ACUserModel *user = [ACUserModel userWithAlias:@"ALIAS"];

//Or you can avoid setting the alias
//ACUserModel *user = [ACUserModel anonymousUser];

//Register (or login) to Allychat server
[[ACSDK defaultInstance] signIn:user completion:^(ACUserModel *userModel, NSError *error) {
    if (error) {
        // handle error
    } else {
        // userModel contains signed in user data
    }
}];

После успешной регистрации (авторизации) станет доступен список комнат.

Отправка сообщений

// current room
ACRoomModel *room = [ACSDK defaultInstance].supportRoom;

// sending text
ACMessageModel *textMessageModel = [ACTextMessageModel messageWithText:@"text" room:room];
[[ACSDK defaultInstance] sendMessage:textMessageModel];

// sending image
UIImage *image = ...;
ACMessageModel *imageMessageModel = [ACImageMessageModel messageWithImage:image room:room];
[[ACSDK defaultInstance] sendMessage:imageMessageModel];

Изменение состояния сообщений при отправке передается с помощью уведомлений ACSDKDidUpdateMessageStatusNotification и ACSDKDidUpdateUploadProgressNotification, а также через методы делегата:

- (void)allyChatSDK:(ACSDK *)allyChatSDK didUpdateMessageStatus:(ACMessageModel *)messageModel room:(ACRoomModel *)roomModel;
- (void)allyChatSDK:(ACSDK *)allyChatSDK didUpdateUploadProgress:(ACMessageModel *)messageModel room:(ACRoomModel *)roomModel;

Подготовка к отправке сообщения с изображением может занять некоторое время, поскольку объект с изображением необходимо сохранить на диск в формате, пригодном для передачи по сети. После завершения сохранения в поле imageURL содержится путь до изображения на локальном диске, которое доступно пока происходит загрузка файла на сервер.

Завершение подготовки передается с помощью уведомления ACSDKDidPrepareMessageNotification, а также через метод делегата:

- (void)allyChatSDK:(ACSDK *)allyChatSDK didPrepareMessage:(ACMessageModel *)messageModel room:(ACRoomModel *)roomModel;

Получение сообщений

Новые сообщения доставляются в реальном времени через центр уведомлений (ACSDKDidReceiveMessageNotification) и через метод делегата:

- (void)allyChatSDK:(ACSDK *)allyChatSDK didReceiveMessage:(ACMessageModel *)messageModel room:(ACRoomModel *)roomModel;

Для получения истории сообщений используются методы SDK:

ACMessageModel *messageModelOrNil = ...;
[[ACSDK defaultInstance] messagesAfterMessage:messageModelOrNil room:room limit:limit completion:^(NSArray *messages, BOOL hasMore, NSError *error) {
    ...
}];

[[ACSDK defaultInstance] messagesBeforeMessage:messageModelOrNil room:room limit:limit completion:^(NSArray *messages, BOOL hasMore, NSError *error) {
    ...
}];

В случае передачи nil в качестве параметра messageModel, в качестве точки отсчета используется сообщение, следующее за последним. То есть messagesBeforeMessage:nil room:room limit:limit completion:completion вернет limit самых последних сообщений в комнате, а messagesAfterMessage:nil room:room limit:limit completion:completion вернет пустой список.

По умолчанию всем полученным сообщениям устанавливается статус 'Прочитано'. Для самостоятельной установки данного статуса необходимо убрать соответствующий флаг и использовать метод SDK

// init
[[ACSDK defaultInstance] setApplicationId:@"app_id" serverURL:[NSURL URLWithString:@"https://example.com"]];
[ACSDK defaultInstance].setReadForAllDeliveredMessages = NO;

// send read status
[[ACSDK defaultInstance] setReadForMessage:messageModel];

Создание новой комнаты

ACUserModel *anotherUser = [ACUserModel userWithAlias:@"alias"];
[[ACSDK defaultInstance] createRoomWithUser:anotherUser completion:^(ACRoomModel *roomModel, NSError *error) {
        ...
}];

Обновление списка комнат

При появлении новой комнаты или изменении существующей происходит отправка уведомления ACSDKDidUpdateRoomsNotification, а также вызов метода делегата

- (void)allyChatSDK:(ACSDK *)allyChatSDK didUpdateRooms:(NSArray *)rooms;

Push-уведомления

NSData *deviceToken = ...;
[[ACSDK defaultInstance] subscribeToAPNs:deviceToken];

[[ACSDK defaultInstance] unsubscribeFromAPNs];

Отправка местоположения на сервер

CLLocation *location = ...;
[[ACSDK defaultInstance] sendLocation:location];

ios-sdk's People

Contributors

alexizh avatar octoberry avatar ramtararam avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.