Ask tech team
From QuickBlox Developers (API docs, code samples, SDK)
Jump to: navigation, search

We’d love your input on our survey about how you drive development with QuickBlox iOS SDK
It will take just 2 minutes of your time!


Download iOS SDK

Quickblox iOS SDK, version 2.6.5

Code samples

Learn how to enable Push Notifications, create a Chat room, authenticate users via Facebook, show users' locations and POIs, store and retrieve files from the cloud - these code samples are simple enough that even novice developers will be able to understand them.

Title APIs used Description
Simple iOS Chat code sample Chat, Users The Chat sample connects and socializes your users with the chat module. Features include: Peer to Peer Chat; Group chat; Location based chat; Push notifications for offline users.

Simple iOS WebRTC (VideoChat) code sample Chat, VideoChat The VideoChat code sample allows you to easily add video calling and audio calling features into your iOS app. Enable a video call function similar to FaceTime or Skype using this code sample as a basis.

User List.png Video Call.png Incoming Call.png

Simple iOS Custom Objects (key value data store) code sample Custom Objects This Custom Objects sample allows you to create any server side data structure, utilise it for any purpose, create any logic and many other custom features.

Simple iOS Location code sample Location, Users The Location sample connects app users with each other and their environment. Using GPS locations, map integrations and local data, end users can literally 'see' each other on the map and communicate with other users.

Simple iOS Push Notifications code sample Messages Push notifications to your user base — even when your app is not running! This sample enables you to send notifications and alerts to users at any time through an API or easy-to-use admin panel. You can filter who you send messages to through additional parameters.

Simple iOS Users authentication (Facebook, Twitter, OAuth integration) code sample Users The Users sample helps you manage and retain your user base across all platforms. It includes a simple authentication process with Single Sign-On and integration across all popular platforms, including social integration with Twitter/Facebook

Simple iOS content storage and update code sample Content The Content sample allows you to send, stream, store, share and save content, so that you may update your app's content without having to republish.

How to: add SDK to Xcode and connect to the cloud

Read Connecting Quickblox Framework with Your Project

Getting started

iOS SDK is really simple to use. In just a few minutes you can power up your mobile app with huge amount of awesome communication features & data services.

The common way to interact with QuickBlox can be presented with the following sequence of actions:

  1. Initialize framework with application credentials
  2. Login with existing user or register new one
  3. Perform actions with QuickBlox communication services and any data entities (users, locations, files, custom objects, pushes etc.)

Initialize framework

[QBSettings setApplicationID:92];
[QBSettings setAuthKey:@"wJHdOcQSxXQGWx5"];
[QBSettings setAuthSecret:@"BTFsj7Rtt27DAmT"];
[QBSettings setAccountKey:@"7yvNe17TnjNUqDoPwfqp"];

It's also possible to initialise the SDK with an existent QuickBlox token. It can be interesting in cases when you build a big system and you have the server side which generates QuickBlox tokens for example:

[QBSettings setApplicationID:92];
[QBSettings setAuthKey:@""]; // don't need to set
[QBSettings setAuthSecret:@""]; // don't need to set
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *expirationDate = [formatter dateFromString:@"2014-10-20 11:13:06 UTC"];
QBASession *session = [QBASession new];
session.token = @"f23d03bd2341a1f923b7d4c1fbee97af1cd296f2";
[[QBSession currentSession] startSessionWithDetails:session expirationDate:expirationDate];

A few words about Authentication and Authorization


Stating with QuickBlox iOS SDK 2.4 you don't need to manage session manually. SDK will automatically do all this job.

To be able to use QuickBlox API you have to create a user and be signed in.

To create a user use the following snippet:

QBUUser *user = [QBUUser user];
user.login = @"garry";
user.password = @"garry5santos";
[QBRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) {
    // Success, do something
} errorBlock:^(QBResponse *response) {
    // error handling
    NSLog(@"error: %@", response.error);

Then you can login with the user:

[QBRequest logInWithUserLogin:@"garry" password:@"garry5santos" successBlock:^(QBResponse *response, QBUUser *user) {
    // Success, do something
} errorBlock:^(QBResponse *response) {
    // error handling
    NSLog(@"error: %@", response.error);

In order to use real time features you have to be logged in to Chat:

QBUUser *currentUser = [QBUUser user];
currentUser.ID = 2569; // your current user's ID
currentUser.password = @"garrySant88"; // your current user's password   
[[QBChat instance] connectWithUser:user completion:^(NSError * _Nullable error) {
    NSLog(@"Error: %@", error);

Read on: iOS SDK documentation (Apple style)

Full reference on classes and protocols used in QuickBlox iOS SDK:

iOS SDK Transition guide from version 1.9 to 2.0

Transition guide from version 1.9 to 2.x

Main changes

  • ARC compatible
  • Block callbacks
  • JSON based requests to QuickBlox API
  • General restructuring and reachitecture
  • Cocoapods integration

All requests to QuickBlox now start from QBRequest class.

CocoaPods integration

Remember: Be sure that you have $(inherited) in Other Linker Flags in build settings. Otherwise you will receive linking errors with undefined classes.

To install QuickBlox framework using CocoaPods - you should just add following line in your Podfile:

pod 'QuickBlox'

And run pod install in your Terminal.

That's all :)

More info you can find on, Get Started section.

Connecting to QuickBlox 1.9 SDK

[QBSettings setApplicationID:92];
[QBSettings setAuthorizationKey:@"wJHdOcQSxXQGWx5"];
[QBSettings setAuthorizationSecret:@"BTFsj7Rtt27DAmT"];
[QBSettings setAccountKey:@"7yvNe17TnjNUqDoPwfqp"];

2.0 SDK

[QBApplication sharedApplication].applicationId = 92;
[QBConnection registerServiceKey:@"wJHdOcQSxXQGWx5"];
[QBConnection registerServiceSecret:@"BTFsj7Rtt27DAmT"];
[QBSettings setAccountKey:@"7yvNe17TnjNUqDoPwfqp"];

QBSettings is replaced with:

  • QBApplication class is used for storing your app applicationId.
  • QBConnection class stores service key and secret.

Creating session example 1.9 SDK

[QBAuth createSessionWithExtendedRequest:extendedAuthRequest delegate:self];
#pragma mark -
#pragma mark QBActionStatusDelegate
// QuickBlox API queries delegate
- (void)completedWithResult:(QBResult*)result{
    // QuickBlox session creation result
    if( [result isKindOfClass:[QBAAuthSessionCreationResult class]] ){
        if( result.success ){
            // session created

2.0 SDK

[QBRequest createSessionWithSuccessBlock:^(QBResponse *response, QBASession *session) {
    // session created
} errorBlock:^(QBResponse *response) {
    // handle errors
    NSLog("%@", response.error);

Instead of QBActionStatusDelegate you need to implement block callbacks. In success block you could use QBASession object. If error block is fired you could look at error property of response object.

Upload/Download progress block example 1.9 SDK

UIImage *image = [UIImage imageNamed:@"greatImage.png"];
NSData* imageData = UIImagePNGRepresentation(image);
[QBContent TUploadFile:imageData fileName:@"Great Image" contentType:@"image/png" isPublic:NO delegate:self];
#pragma mark -
#pragma mark QBActionStatusDelegate
- (void)setProgress:(float)progress{
    NSLog(@"progress: %f", progress);

2.0 SDK

// show progress changes
QBRequestStatusUpdateBlock block = ^(QBRequest *request, QBRequestStatus *status) {
    NSLog(@"%f", status.percentOfCompletion);
// Upload file to QuickBlox server
UIImage *image = [UIImage imageNamed:@"greatImage.png"];
NSData* imageData = UIImagePNGRepresentation(image);
QBRequest *request = [QBRequest TUploadFile:imageData fileName:@"Great Image" contentType:@"image/png" isPublic:NO successBlock:nil statusBlock:block errorBlock:nil];

Push notification changes 1.9 SDK

// AppDelegate.m
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"didReceiveRemoteNotification userInfo=%@", userInfo);
// YourClass.m
QBASessionCreationRequest *extendedAuthRequest = [QBASessionCreationRequest request];
extendedAuthRequest.userLogin = @"injoitUser1";
extendedAuthRequest.userPassword = @"injoitUser1";
// QuickBlox session creation
[QBAuth createSessionWithExtendedRequest:extendedAuthRequest delegate:self];
#pragma mark -
#pragma mark QBActionStatusDelegate
// QuickBlox API queries delegate
- (void)completedWithResult:(QBResult *)result{
    // Success result
    if( result.success ){
        // QuickBlox session creation result
        if( [result isKindOfClass:[QBAAuthSessionCreationResult class]] ){            
            // Register as subscriber for Push Notifications
            [QBMessages TRegisterSubscriptionWithDelegate:self];
        // QuickBlox register for Push Notifications result
        else if( [result isKindOfClass:[QBMRegisterSubscriptionTaskResult class]] ){
            // you can now receive push notifications
        // show Errors

2.0 SDK

// AppDelegate.m
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"didReceiveRemoteNotification userInfo=%@", userInfo);
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    // register for push notifications
    [QBRequest registerSubscriptionForDeviceToken:deviceToken successBlock:^(QBResponse *response, NSArray *subscriptions) {
    // successfully subscribed
    } errorBlock:nil];
// YourClass.m
// Create extended session request (for push notifications)
QBSessionParameters *parameters = [[QBSessionParameters alloc] init];
parameters.userLogin = @"injoitUser1";
parameters.userPassword = @"injoitUser1";
// QuickBlox session creation
[QBRequest createSessionWithExtendedParameters:parameters successBlock:^(QBResponse *response, QBASession *session) {
    UIRemoteNotificationType types = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound;
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
} errorBlock:nil];

Errors 2.0 SDK

If errorBlock of the request is fired you have a response object within block:

[QBRequest userWithExternalID:555 successBlock:^(QBResponse *response, QBUUser *user) {
    NSLog(@"Successfull response!");
} errorBlock:^(QBResponse *response) {
    NSLog(@"Response error: %@", response.error.reasons);

From QBResponse class you could get information about failed request. error property is an instance of QBError class that stores information about error. reasons property of QBError class contains NSDictionary with human readable reasons of failure. If the reasons is nil than you could look at error property of QBError to identify where is the problem.

Framework changeling

v2.6.5 — Feb 4, 2016

  • Fixed issue with 'QBSession currentUser will only be reassigned if userID has changed'.
  • Fixed error block never called for QBRequest data type if session creation was failed.
  • Added handling a case with creating a session without internet.
  • Fixed issue with 'Join to room'.
  • Added session start skipping for QBChat connection.
  • Added check if received roomJID from server is different from created by QBChatDialog constructor
  • Fixed Warning for reconnect time interval being less then 5

v2.6.4 — Jan 27, 2016

  • Added storing session details per api endpoint, now you can easily switch api endpoints
  • Added full XMPP logging(disabled by default), enable it with [QBSettings enableXMPPLogging]
  • Added [QBRequest deleteCurrentUserWithSuccessBlock:errorBlock]. You can delete only current user.
  • Fixed chat connection in disconnectWithCompletionBlock

Deprecated methods:

+ [QBRequest deleteUserWithID:successBlock:errorBlock:]
+ [QBRequest deleteUserWithExternalID:successBlock:errorBlock:]
instead use +[QBRequest deleteCurrentUserWithSuccessBlock:errorBlock:]

v2.6.3 — Jan 20, 2016

  • Fixed restoring session on network connection lost
  • Fixed parsing errors from server
  • Changed server endpoints update time from 6h to 1h
  • Fixed QBDialog.requestOnlineUsers for group chat dialogs

v2.6.2 — Jan 8, 2016

  • Fixed content upload for iOS7
  • Improved QBChat performance

v2.6.1 — Dec 16, 2015

  • Content module: public URL and private URL for UID
  • Background session support for download requests.
  • Session configuration for REST requests

v2.6.0.2 — Dec 9, 2015

  • Bitcode is enadled
  • FBKVOController now is correctly prefixed

v2.6.0.1 — Dec 3, 2015

  • Fixed an issue with thread with group chat join.

v2.6 — Dec 2, 2015

  • QMServices 0.3.1
    • QMUsersService + Cache
  • QMChatViewController 0.3
    • Time header view
    • Transformed collection view to improve chat UX
  • SDK
    • NSURLSession is used in REST API core
    • Various improvements in auto-create session flow
    • Bugfix:
      • Completion block on [QBChat disconnectWithCompletionBlock:]' called only when disconnect failed
  • Samples
    • Updated to latest SDK, Services and ChatViewController
    • Read message status done right

v2.5 — Nov 9, 2015

  • Components:
    • QMServices 0.3 - Added QMUsersService to simplify operations with users. QMUsersCache - for caching users on disc. Refactoring and cleanup in QMContactListService and QMContactListCache.
  • Samples:
    • Updated to latest services and SDK.
  • SDK:
    • Add assert for incorrect app credentials when trying to create session.
    • Fixed module issue.
    • senderID is now added automatically to to the readIDs and deliveredIDs when message is received by SDK.
    • Unified Quickblox settings in one class.
    • Header with iOS version is added to ther REST API requests.
    • Unified interface for chat methods.

v2.4.6 — Oct 23, 2015

  • SDK:
    • Fixed issue with 'Auto-create session token cleanup'.
    • Added assert about incorrect credentials for SDK.
    • Fixed QBChatDialog 'updated_at' property parsing.
    • Fixed 'Unable to join to room issue'.
  • QMServices:
    • Bug fixes and improvements.
  • QMChatViewController:
    • Bug fixes and improvements.

v2.4.5 — Oct 13, 2015

  • Fixed an issue with create event request in Push Notifications API

v2.4.4 — Oct 12, 2015

  • SDK:
    • Fixed isLoggedIn for chat on iOS 7.
    • Dialog onLeave block not fired" issue fixed.
    • Simplified isEqual in iOS SDK models.
    • Add Generics and Nullability support.
    • Renamed QBChat login/logout/isLoggedIn methods to connect/disconnect/isConnected and QBChatDelegate delegate methods chatDidLogin/chatDidNotLoginWithError to chatDidConnect/chatDidNotConnectWithError
    • Fixed issue with custom parameters in createDialog:successBlock:errorBlock: request.
    • Removed sendDirectPresenceWithStatus in QBChat.
  • Samples:
    • Migrated to Xcode7 support
    • Swift 2, Nullability, Generics support in Swift Chat Sample.
    • Chat Samples: Fixed issue when dialog info was not correctly displayed.
  • QMServices (0.2.3):
    • Implemented update message mechanism.

v2.4.3 — Sep 30, 2015

  • SDK:
    • Added total unread messages count request.
    • Delete dialogs request with 'forAllUsers' option (deleting dialogs only for current user or for all users).
    • Delete messages request with 'forAllUsers' option (deleting messages only for current user or for all users).
    • Add ability to pass 'mark_as_read=0' for get messages request.
    • Removed QBChatRoom class
    • Quickblox framework could be connected to Swift projects without bridging header.
    • Replaced group chat delegates to handle online users statuses with blocks.
    • Renamed Messages module to PushNotifications module
  • Site Documentation:
    • Swift code snippets are added to chat sample documentation.
  • Samples:
    • Push notifications and auto login features are added to the Objective-C Chat Sample and Swift Chat Sample.
  • QMChatViewController:
    • Updated to 0.2.2 version.
  • QMServices:
    • Updated to 0.2.1 version.

v2.4.2 — Sep 25, 2015

  • Custom endpoints bug fixes

v2.4.1 — Sep 16, 2015

  • Custom endpoints bug fixes

v2.4 — Sep 11, 2015

  • Framework:
    • Automatic session management
    • 'Now typing' for group chats
    • Automatic push notifications environment management
    • Added a delegate QBChatDelegate.chatDidReconnect
    • Ability to change the TCP socket keep alive settings
    • The XMPP 'see-other-hosts' processing logic has been added
    • Deprecated the old chat room delegates with jid, added new with dialog id
    • Automatically add a dialog ID to each chat message
    • Set custom endpoints retrieval period time to 6h
    • Ability to manually send the 'delivered' status via QBChat.markAsDelivered method
    • New delegates for read/delivered statuses handling
  • Samples:
    • New completely rewritten Chat code samples on Objectve-C and Swift
    • Updated UI on all code samples
  • Other:

v2.3.0.4 — Aug 7, 2015

  • Fixed an issue with WebRTC video calls between iOS SDK and Firefox web browser

v2.3.0.3 — Jul 20, 2015

  • Fixed an issue with CustomObjects file upload

v2.3.0.2 — Jul 20, 2015

  • Fixed an issue with Content file upload for new AWS S3 SDK

v2.3.0.1 — Jun 17, 2015

  • Fixed a crash with [QBConnection setAutoCreateSessionEnabled:YES]

v2.3 — Jun 17, 2015

  • General:
    • Removed API 1.x
  • Chat:
    • Models QBAbstractMessage, QBChatMessage, QBChatHistoryMessage are merged into one model QBChatMessage
    • Now you must use QBChatDialog for all chat related operations. Previous methods are deprecated.
    • Added API to send and receive system messages: A method [[QBChat instance] sendSystemMessage:] and delegate chatDidReceiveSystemMessage:
    • Updated XMPPFramework
    • Ability to mark all chat messages as read: [QBRequest markMessagesAsRead:null dialogID:dialogID successBlock:errorBlock:]
    • Added readIds and dialogId properties to QBChatMessage model
    • TLS connection set by default now
    • Added methods to QBChatDelegate to track chat reconnection states
    • Added method to get a number on chat dialogs and messages: [QBRequest countOfDialogsWithExtendedRequest:successBlock:errorBlock:], [QBRequest countOfMessagesForDialogID:extendedRequest:successBlock:errorBlock:]
    • Added 2 delegate methods for Contact List API: chatDidReceiveAcceptContactRequestFromUser:, chatDidReceiveRejectContactRequestFromUser:
  • Content:
    • Simplified API to download files from Content module. Now QBCBlob model has next methods to get an url to file: publicUrl, publicUrlForID:, privateUrl, privateUrlForID:
  • Custom Objects:
    • Added aggregation API
  • Users:
    • New API to update user
    • Now SDK hosts current logged in user: [QBSession currentSession].currentUser
  • Messages:
    • New methods to register and unregister push notifications that take an additional argument to set device udid.
    • Now you can subscribe to push notifications just with single request: [QBRequest createSubscription:successBlock:errorBlock:]

Previous releases

v2.2.5 — Jun 12, 2015

  • Added readIDs field to QBChatHistoryMessage

v2.2.4 — Apr 28, 2015

  • Removed property QBChat.useMutualSubscriptionForContactList. Now it's always YES.
  • Fixed an issue with contact list accept request functionality.

v2.2.3 — Apr 10, 2015

  • Added method chatDidNotSendMessage:toRoomJid:error to QBChatDelegate

v2.2.2 — Apr 8, 2015

  • Fixed an issue with privacy lists in iOS7
  • Added an ability to block a user in 1-1 and group chats in a single privacy list.

v2.2.1 — Apr 2, 2015

  • Group blocks in chat
  • Added an ability to cancel QBRequest
  • Fixed an issue with chat room join where user's nick was 0

v2.2 — Mar 23, 2015

  • Switched from delegates to block-based API and JSON for Chat API. Previous methods are deprecated.
  • Added an ability to automatic recreate a session [QBConnection setAutoCreateSessionEnabled:YES]
  • Message Carbons(XEP-0280) for Chat
  • Stream Management(XEP-0198) for Chat
  • Auto-reconnection manager for Chat
  • Added an ability to set custom uniqueDeviceIdentifier when subscribe to push notifications: [QBRequest registerSubscriptionForDeviceToken: uniqueDeviceIdentifier: successBlock: errorBlock:]
  • Added an ability to enable activity indicator [QBConnection setNetworkIndicatorManagerEnabled:YES]
  • Fixed an issue with header QB-Token-ExpirationDate when 12h format is set
  • Fixed an issue with totalEntries for pagination requests
  • Fixed an issue with password update for user
  • QBChatDelegate now is multicast delegate
  • Update the logic of QBChatDialog.chatRoom. Now it returns the same value, not the new one.
  • Added an ability to use custom chat resource.

v2.1.1 — Mar 5, 2015

  • Added an ability to set custom parameters to chat dialog

v2.1 — Feb 9, 2015

  • Modules support added (now only WebRTC module uses this)
  • [QBChat instance].delegate property changed from retain to assign
  • Renamed Result class to QBResult
  • Fixed an issue where after social login with new API old requests weren't working

v2.0.12 — Dec 5, 2014

  • fixed some zombie issues
  • updates for Chat server domain logic
  • fixed an issues with chat message attachments parser
  • added a method requestUsersWithAffiliation to QBChat

v2.0.11 — Nov 20, 2014

  • fixed the QBGeneralResponsePage.totalEntries property

v2.0.10 — Oct 20, 2014

  • added 'delete ChatDialog' API
  • added an ability to init SDK with existent QuickBlox token
  • fixed a crash with email notifications
  • set chat message packet ID to MongoDB ObjectID
  • added 'Message Read' status for Chat

v2.0.9 — Oct 3, 2014

  • Fixed an issue with EndpointsAPIStorage

v2.0.8 — Sep 23, 2014

  • Fixed an issue with settings for enterprise account

v2.0.6 — Sep 18, 2014

  • Fixed an issue with update user password

v2.0.5 — Sep 16, 2014

  • Fixed an issue with "is typing" chat status

v2.0.4 — Sep 9, 2014

  • Fixed an issue with session creation with user email
  • Fixed an issue with chat markable messages

v2.0.2 — Sep 1, 2014

  • Fixed an issue with chat delegate chatRoomDidReceiveMessage:fromRoomJID: getting called twice

v2.0.1 — Aug 29, 2014

  • Fixes for Chat TLS negotiation
  • Fixes for arm64 architecture

v2.0 — Aug 28, 2014

  • New syntax for requests
  • ARC support for new API
  • Switched from delegates to block-based API
  • JSON requests
  • Added CocoaPods distribution
  • New API covered with tests
  • General re-architecture
  • Old API is fully supported + marked as deprecated
  • iOS8 Push Notifications support
  • Other Chat related features which we also included to this release:
  • Chat:
    • Added an ability to track 'user is typing' status
    • Added an ability to track 'delivered' status
    • Completely supports TLS negotiation
    • Added 'markMessagesAsRead' method to QBChat
    • Added 'createMessage' method to QBChat

v1.9.2 — Aug 21, 2014

  • Privacy List API

v1.9.1 — Jul 18, 2014

  • Remove senderID from QBChatMessage for group chat

v1.9 — Jul 17, 2014

  • Chat 2.0 API added
  • added customData field to QBUUser

v1.8.6 — May 29, 2014

  • Fixes for session recreation

v1.8.5 — May 22, 2014

  • Custom Objects:
    • fixed an issue with parser that prevented name array field in singular form
  • Content:
    • implemented upload/download file progress delegate
    • translated Blob public url to new format
  • Users:
    • added method [QBUsers usersWithExtendedRequest:filters delegate:self]
  • General:
    • Added new required settings method [QBSettings setAccountKey:@"..."]
    • integrated Endpoints API
    • fixed social login urls for custom servers
    • removed some deprecated methods
    • removed setZone and setServerDomain methods from QBSettings
    • removed kQBVideoChatTURNServerEndPoint key from video chat settings. Added a method to QBSettings to set TURN server endpoint.

v1.8.4 — April 10, 2014

  • Location:
    • added location push notifications

v1.8.3 — April 5, 2014

  • VideoChat:
    • added Cancel call handler
    • fixes for iOS7.1
  • Users:
    • QBUUser. blobID type changed to NSInteger. Now you can unset blob_id field of user - pass blob_id=-1
  • Chat:
    • added [QBChat instance].useMutualSubscriptionForContactList to manage subscriptions mode of chat contact list
    • QBContactListItem: added subscriptionState property
    • added ability to use secureTLS connection for chat: [QBSettings useTLSForChat:YES];
  • General:
    • fixes for QBToken header when use different API domains

v1.8.2 — January 28, 2014

  • enabled HTTPS by default
  • fixed some conflicts with AFNetworking
  • changed type of property QBLGeoDataGetRequest.radius from NSUInteger to CGFloat

v1.8.1 — January 15, 2014

  • VideoChat:
    • integrated iLBC audio codec
    • updated low level audio API

v1.8 — November 27, 2013

  • VideoChat:
    • updated VideoChat API
    • added ability to manage audio route
    • fixes for iOS7, iPhone5C, iPhone5S
  • Chat:
    • added Chat-history-to-CusomObjects plugin: [message saveWhenDeliveredToCustomObjectsWithClassName:@"ChatMessage" additionalParameters:@{@"age": @22, @"type": @"actor"}];
  • Enterprise:
    • added ability to manage S3 bucket: [QBSettings setContentBucket:@"name_of_S3_bucket"]
  • Messages:
    • updated device udid in iOS7
  • General:
    • fixed social login dialog in landscape mode
    • added arm64 support
    • set iOS 5.1.1 as min version
    • renamed BaseService class to QBBaseModule, static method sharedService to sharedModule
    • replaced core network library ASIHTTPRequest with AFNetworking
    • added access to token expiration date [QBBaseModule sharedModule].tokenExpirationDate
  • Custom Objects:
    • added Files API
    • added output parameter to manage records' output fields
    • added ctn, or filters
    • added ability to delete multiple records in single query [QBCustomObjects deleteObjectsWithIDs:@[345,678] className:@"Movie" delegate:self]
    • added ability to create multiple records in single query [QBCustomObjects createObjects:@[object1, object2] className:@"Movie" delegate:self];
    • added ability to update multiple records in single query [QBCustomObjects updateObjects:@[object1, object2] className:@"Movie" delegate:self];
  • Content:
    • added ability to update blob's file [QBContent TUpdateFileWithData:file file:blob delegate:self];

v1.7.2 — September 22, 2013

  • Updates for iOS7

v1.7.1 — August 16, 2013

  • Added ability to set custom API & Chat endpoints (usually these features need for Enterprise clients): [QBSettings setServerApiDomain:@""];[QBSettings setServerChatDomain:@""];

v1.7 — July 19, 2013<

  • Custom Objects:
    • Permissions API
    • Added method [QBCustomObjects objectsWithClassName: IDs:] to retrieve records by ids
  • Content:
    • Improved file upload query in case with 3G connection
  • Chat:
    • Removed deprecated methods createRoomWithName: and createPrivateRoomWithName: from QBChat class
    • Added ability to join room with custom nickname: [[QBChat instance] createOrJoinRoomWithName:testRoomName nickname:@"GarryGilbert" membersOnly:NO persistent:NO];
    • Updated QBChatRoomOccupant class: replaced NSUInteger userID field with NSString *nickname
    • Added method to send presense with all it's parameters [[QBChat instance] sendPresenceWithStatus:@"PC" show:QBPresenseShowDND priority:0 customParameters:@{@"job": @"manager", @"age": @"25"} toRoom:testRoom];
  • Users:
    • added method [QBUsers usersWithTwitterIDs:] to retrieve users with twitter ids
    • added method [QBUsers usersWithFacebookIDs:] to retrieve users with facebook ids

v1.6 — July 7, 2013

  • Contact list:
    • Added ContactList API
    • Added ‘sendPresenceWithStatus’ method to QBChat to send presence with additional text
    • Added ‘sendDirectPresenceWithStatus:toUser:’ method to QBChat to send direct presence inside contact list
  • QBChatMessage model:
    • Added convenience constructor to QBChatMessage: [QBChatMessage message]
    • Changed type of QBChatMessage ID field to NSString
    • Added ability to set custom parameters to QBChatMessage
  • Group chat:
    • Added ‘sendPresenceWithParameters:toRoom:’ method to QBChat to send presence to room
    • Auto add appID to room name –
    • Updated QBChatDelegate method ‘chatRoomDidChangeOnlineUsers:room:’. Now, each object from ‘onlineUsers’ array is an instance of QBChatRoomOccupant class
  • Video chat:
    • Updated VideoChat API: now you should work with QBVideoChat object instead of QBChat
    • Added ability to make audio calls (without video)
    • Added ability to set custom AVCaptureSession for video chat
    • Added ability to set kQBVideoChatP2PTimeout
    • Added ability to manage torch during call
    • Added ability to switch camera(back, face) during call
    • Added ability to set video capture preset
    • Added ‘cancelCall’ method to QBVideoChat to cancel ‘callUser:’ method
    • Added custom parameters to methods ‘callUser:’ & ‘acceptCall’

v1.5.2 — May 11, 2013

  • removed internal access to UDID
  • Users: added method to QBUsers usersWithPhoneNumbers: - allows to retrieve users by phone numbers
  • fixed 12h datetime format issue

v1.5.1 — March 12, 2013

  • Chat: added method to QBChat requestRoomOnlineUsers: – allows to retrieve room online users
  • Chat: added isJoined property to QBChatRoom
  • Chat: Unsupported symbols now will be removed from room name. You can validate room name using [QBChat roomNameToValidRoomName:roomName]
  • Chat: added method to QBChat destroyRoom: – allows to delete room
  • VideoChat: added muteVideoChat property to QBChat - allows to mute microphone during video conference.
  • Users: added method to QBUsers usersWithLogins: - allows to retrieve users by logins
  • Users: added method to QBUsers usersWithEmails: - allows to retrieve users by emails
  • Now you can manage timeout for queries [QBSettings setTimeOutSeconds:10]

v1.5 — February 20, 2013

  • Added VideoChat API
  • QBChat: replaced method – (void)chatRoomDidEnter:(NSString *)room with – (void)chatRoomDidEnter:(QBChatRoom *)room
  • QBChatDelegate: Now you dont need to use – (void)chatRoomDidCreate:(QBChatRoom*)room. In all cases (create or join room) chatRoomDidEnter method will be called
  • QBChat: Added new method for room creation: – (void)createOrJoinRoomWithName:(NSString *)name membersOnly:(BOOL)isMembersOnly persistent:(BOOL)isPersistent. Old methods marked as deprecated.

v1.4.1 — January 9, 2013

  • Added notification when social login dialog was closed – QuickbloxSocialDialogDidCloseNotification
  • QBChatDelegate now is retained
  • Added [QBSettings useProductionEnvironmentForPushNotifications:YES] to manage Push Notifications environment

v1.4 — December 11, 2012

  • CustomObjects: added method 'objectWithClassName:ID:' to QBCustomObjects class – allows to retrieve single object
  • CustomObjects: added Array type
  • CustomObjects: added special update operators
  • CustomObjects: added relations API
  • Social API: added 'scope' param: replaced QBUsers’s method 'logInWithSocialProvider:delegate:' with 'logInWithSocialProvider:scope:delegate:'
  • Social API: now you can auth using Social provider access token
  • Chat: added method to QBChatDelegate 'chatRoomDidChangeOnlineUsers:room:'
  • Chat: added method to QBChat 'requestRoomUsers' – allows to retrieve room members
  • Users: added to QBUsers method 'usersWithIDs' – allows to retrieve users by ids
  • Users: QBUUser.tags – property type changed from NSArray to NSMutableArray
  • Messages: added methods to send push notification without environment
  • Messages: added method to class QBMessages 'TSendPushWithText' – simple way to send push – just write text & send
  • Auth: Create session with device parameters is deprecated. Now you don’t need to create session with device parameters in order to use Push Notifications

v1.3.1 — October 26, 2012

  • Now delegate is retained
  • Allow to pass any object (not only NSString) to custom object’s fields
  • New great design for the Facebook login dialog
  • Added a new method ‘createPrivateRoomWithName:(NSString *)name’ to QBChat class. It allows to create only members rooms.

v1.3.0 — October 2, 2012

  • New Chat JID format (without user's login) (
  • NSCopying, NSCoding protocols for all models are implemented
  • isEqual method for all models is implemented
  • Added a convenient constructor to class Request and all inherited classes ([Request request])
  • Added a method to Messages API for stop receive Push Notifications - [QBMessages TUnregisterSubscriptionWithDelegate:self];
  • Added a method to Messages API for sending Push Notifications to users with tags - [QBMessages TSendPush:message toUsersWithAnyOfTheseTags:@"man, car" isDevelopmentEnvironment:YES delegate:self];
  • Added a property 'enableSessionExpirationAutoHandler' to QBSettings class for enable auto handling session expiration
  • C2DM enum was renamed to GCM
  • QBMPushEvent class was renamed to QBMApplePushEvent
  • Chat API was refactored
  • SBJSON was hidden
  • Updated Content Tags API
  • iOS 6 compatibility

v1.2.0 — August 27, 2012

  • Added Custom Objects API
  • Added Content tags API
  • Social API now returns social provider's access token & token's expiration date. No you can work with FB/Twitter API without fb/twitter sdk!

v1.1.0 — August 09, 2012

  • Added Social API. Now you can authenticate through QuickBlox Users module using your Facebook/Twitter account.
  • Added 'lastRequestAt' field to QBUUser
  • Added 'blob' field to QBCFileDownloadTaskResult
  • Added Chat module snippets

v1.0.0 — July 24, 2012

  • SDK stable version
  • All API calls are covered