quickblox-ios-sdk

QuickBlox iOS SDK for messaging and video calling

BSD-3-CLAUSE License

Stars
396
Committers
22

Bot releases are visible (Hide)

quickblox-ios-sdk -

Published by about 7 years ago

Added + [QBSettings chatEndpointPort]; - The port the xmpp server is running on (only enterprise). If you do not explicitly set the port, the default port will be used. If you set the port to zero, the default port will be used. The default port is 5223.

quickblox-ios-sdk -

Published by about 7 years ago

Chat

Bugfix:

New:

  • Improved Chat log detalization and simplified output
  • Added Last activity for user with id: - [QBChat lastActivityForUserWithID:completion:] and - [QBChat lastActivityForUserWithID:timeout:completion:]

Deprecated:

  • Deprecated - [QBChat setActivePrivacyListWithName:] method. Use - [QBChat setDefaultPrivacyListWithName:
  • Removed deprecated methods: setChatDNSLookupCacheEnabled, setStreamResumptionEnabled

Models

New:

  • QBChatAttachement:
    • Added Nullability

    • Added subscript support for custom parameters. How to use (Objective-C/Swift code syntactic improvement):

       QBChatAttachment *attachment = [[QBChatAttachment alloc] init];
       //Set custom parameters:
       attachment[@"fileSize"] = @"1000";
       attachment[@"width"] = @"640";
       attachment[@"height"] = @"480";
       // Get custom parameters:
       NSInteger fileSize = attachment[@"fileSize"].integerValue;
       NSInteger width = attachment[@"width"].integerValue;
       NSInteger height = attachment[@"height"].integerValue;
      
  • QBCOCustomObject:
    • Added subscript support for fields parameters. How to use:

       QBCOCustomObject *object = [QBCOCustomObject customObject];
       object.className = MovieClass;    
       object[@"name"] = @"Terminator4";
       object[@"description"] = @"best movie ever!";
       object[@"raiting"] = @"5";
      
  • QBMPushMessage:
    • Making sure that dictionary inside dictionary is actually mutable
  • QBChatDialog:
    • Added room jid in to +[QBChatErrorsFabric errorNotJoinedToRoom:]
    • New debug description
  • QBChatMessage:
    • Added @property (nonatomic, assign, readonly) BOOL carbon;
  • QBCEntity:
    • New debug description
  • QBContactList:
    • New debug description
  • QBUUser:
    • New debug description

Deprecated:

  • QBChatMessage:
    • Removed deprecated @property BOOL read;
  • QBChatAttachement:
    • Deprecate @property NSString *data;. Use object subscripting instead;
  • QBSettings:
    • Removed deprecated methods: setChatDNSLookupCacheEnabled, setStreamResumptionEnabled
  • QBPrivacyItem:
    • Removed all deprecated methods
  • QBCBlobObjectAccess:
    • Change parent class from QBCEntity in to NSObject
  • QBContactList:
    • [QBContactList lastActivityForContactListItem:withCompletion:] method. Use - [QBChat lastActivityForUserID:completion:]

REST

Common

  • Refactoring internal rest functionality, style, and simplify interface

  • Encapsulated Public Interface in to Private.

  • Added RequestID, Request duration and Beautified Request / Response logging. Example:

     2017-05-19 13:38:44.774942 Snippet-macOS[87423:3432445] [QBCore]: Request[1]:
     POST URL:https://api.quickblox.com/users.json
     headers: {
         "Accept-Language" = "en-RU;q=1, ru-RU;q=0.9, uk-RU;q=0.8";
         "Content-Type" = "application/x-www-form-urlencoded";
         "QB-OS" = macOS;
         "QB-SDK" = "macOS 2.9.3.rc";
         "QB-Token" = xxxxxxxxxxxx;
         "QuickBlox-REST-API-Version" = "0.1.1";
         "User-Agent" = "Snippet-macOS/1.0 (Mac OS X Version 10.12.4 (Build 16E195))";
     }
     parameters: {
         user =     {
             email = "xxxxxxxxx";
             password = xxxxxxxxxx;
         };
     }
     2017-05-19 13:38:45.915378+0300 Snippet-macOS[87423:3432409] [QBCore]: Response[1]:
     headers: {
         "Access-Control-Allow-Origin" = "*";
         "Cache-Control" = "no-cache";
         Connection = "keep-alive";
         "Content-Length" = 48;
         "Content-Type" = "application/json; charset=utf-8";
         Date = "Fri, 19 May 2017 10:38:46 GMT";
         Duration = "1.139199";
         "QB-Token-ExpirationDate" = "2017-05-19 12:38:46 UTC";
         "QuickBlox-REST-API-Version" = "0.1.1";
         Server = "openresty/1.9.15.1";
         Status = "422 Unprocessable Entity";
         "Strict-Transport-Security" = "max-age=31536000";
         "X-Content-Type-Options" = nosniff;
         "X-Frame-Options" = SAMEORIGIN;
         "X-Request-Id" = "0035bcf1-b966-41c2-82d8-b9376c0def37";
         "X-Runtime" = "0.072549";
         "X-XSS-Protection" = "1; mode=block";
     }
     error: Request failed: client error (422)
     reasons: {
         errors =     {
             email =         (
                 "has already been taken."
             );
         };
     }
    

Locations

Deprecated in 2.9.3 Please note: the Location API along with associated documentation and code samples has been deprecated and is no longer maintained. We no longer provide support for this module, nor do we encourage its use in your project. We suggest that in order to achieve similar functionality, you use the Custom Objects API.")

AUTH

  • QBSession:
    • Fixed zombies in keychain functionality (macOS)
    • Refactored keychain functionality
    • Added @property (nonatomic, strong, readonly, class) QBSession *currentSession;
    • Added @property (assign, nonatomic, readonly) BOOL tokenHasExpired;

Chat

New:

  • Added new method for get the notifications settings status. + [QBRequest notificationsSettingsForDialogID:successBlock:errorBlock:]
  • User can turn YES/NO push notifications for offline messages in a dialog. Default value is YES. By default when a user is offline and other user sent a message to him then he will receive a push notification. It is possible to disable this feature. + [QBRequest updateNotificationsSettingsForDialogID:enable:successBlock:errorBlock:]
  • Added + [QBRequest markMessagesAsRead:dialogID:successBlock:errorBlock:]

Deprecated:

  • Deprecate + [QBRequest:updateMessage:successBlock:errorBlock:] method. Use + [QBRequest markMessagesAsRead:dialogID:successBlock:errorBlock:].
  • Deprecate + [QBRequest dialogsWithSuccessBlock:errorBlock:] method. Use '+ [QBRequest dialogsForPage:dialogID:extendedRequest:successBlock:errorBlock:].
  • Deprecate + [QBRequest messagesWithDialogID:successBlock:errorBlock:] method. Use '+ [QBRequest messagesWithDialogID:extendedRequest:successBlock:errorBlock:]'.

Users

New:

  • Multiple filters support. Example:

     NSDictionary *filters = @{@"filter" : @[
                                       [NSString stringWithFormat:@"number id in %@", @"28784298, 28784624"],
                                       [NSString stringWithFormat:@"date updated_at gt %@", @"2017-06-15T23:19:26Z"] ]};
     
     [QBRequest usersWithExtendedRequest:filters page:nil successBlock:nil errorBlock:nil];
    

Deprecated:

  • Remove all deprecated methods

Custom Objects

Deprecations:

  • Deprecate + [QBRequest objectsWithClassName:successBlock:errorBlock:] method. Use + [QBRequest objectsWithClassName:extendedRequest:successBlock:errorBlock:].

Push Notificaitons

Bugfix:

  • Fixed bug with error block multiple calls for unsubscribe. Method: + [QBRequest unregisterSubscriptionForUniqueDeviceIdentifier:successBlock:errorBlock:]

Content

Deprecated

  • Deprecated + [QBRequest blobsWithSuccessBlock:errorBlock:] method. Use 'blobsForPage:successBlock:errorBlock:'.
  • Deprecated + [QBRequest taggedBlobsWithSuccessBlock:errorBlock:] method. Use 'taggedBlobsForPage:successBlock:errorBlock:'.
  • Deprecated + [QBRequest taggedBlobsForPage:successBlock:errorBlock:] method.
  • Deprecated + [QBRequest createBlob:successBlock:errorBlock:] method.
  • Deprecated + [QBRequest completeBlobWithID:successBlock:errorBlock:] method.

New QBHTTPClient

Added new http client for custom https requests. Public interface:

  • [QBRequest GET:parameters:progress:success:failure:] - Creates and runs an QBRequest with a GET request.
  • [QBRequest HEAD:parameters:success:failure:] - Creates and runs an QBRequest with a HEAD request.
  • [QBRequest POST:parameters:progress:success:failure:] - Creates and runs an QBRequest with a POST request.
  • [QBRequest PUT:parameters:success:failure:] - Creates and runs an QBRequest with a PUT request.
  • [QBRequest PATCH:parameters:success:failure:] - Creates and runs an QBRequest with a PATCH request.
  • [QBRequest DELETE:parameters:success:failure:] - Creates and runs an QBRequest with a DELETE request.
quickblox-ios-sdk - v2.6.1 - Jun 27, 2017

Published by Raikerian over 7 years ago

Conference module (Enterprise-only feature):

  • Fixed issue with disappearing user in a room when the internet connection is slow.
  • Added ability to perform audio-only calls. Use new createSessionWithChatDialogID:conferenceType: method for this with desired conference type enum.
  • Fixed ability to subscribe to the user in session without being required to join the room (this introduces the ability to receive someone's media without sending own).
quickblox-ios-sdk -

Published by over 7 years ago

quickblox-ios-sdk - v2.6.0.1 - May 30, 2017

Published by Raikerian over 7 years ago

Fixed potential memory leak with for video calls when the recorder (introduced in 2.6) was not in use.

quickblox-ios-sdk - v2.6 - May 30, 2017 (DEPRECATED - use 2.6.0.1)

Published by over 7 years ago

  • WebRTC r 18213
  • Added QBRTCRecorder class. This class represents WebRTC audio and video calls recorder. Check out this link for more information on how to use it.
  • Added new delegate methods toQBRTCAudioSession class.
  • Added audioSessionDidStartPlayOrRecord: delegate. Called when the audio device is notified to begin playback or recording.
  • Added audioSessionDidStopPlayOrRecord: delegate. Called when the audio device is notified to stop playback or recording.
  • Added audioSessionDidBeginInterruption: delegate. Called when AVAudioSession starts an interruption event.
  • Added audioSessionDidEndInterruption:shouldResumeSession: delegate. Called when AVAudioSession ends an interruption event.
  • Added QBRTCAudioTrackSinkInterface protocol to QBRTCAudioTrack class. Use this protocol to sink audio data for a specific remote audio track in real time. Check out this link for more information on how to use it.
  • Added adaptOutputFormatToWidth:height:fps: method to QBRTCVideoCapture class. This method allows you to adapt frames in your capture to any possible dimension you want. Note that this method adapts existing captured frame, not the camera format.
  • Added userID NSNumber property to QBRTCMediaStreamTrack class. This means that both QBRTCAudioTrack and QBRTCVideoTrack classes will now have a specific user ID bound to them. Property will be nil if track is local.
  • Removed old deprecated QBRTCFrameConverter class.
quickblox-ios-sdk - WebRTCv2.5 - Mar 20, 2017

Published by over 7 years ago

  • WebRTC r 17226
  • Added Enterprise-only feature: WebRTC Conference calls. This feature allows to participate in video calls with up to 10 people. See https://quickblox.com/plans/.
  • Added volume property to QBRTCAudioTrack class. Use it to change volume for a specific remote audio track, which you can get in client for a specific user in call.
  • Added new audioLevelControlEnabled property in QBRTCMediaStreamConfiguration class. Determines whether webrtc audio level control is enabled. Rough example: slightly reducing audio volume for all tracks while you are talking (local audio track receiving sound). Default value is NO.
  • Removed old deprecated in 2.3 methods from QBRTCCameraCapture class.
  • Removed startSession deprecated method, use startSession: instead.
  • Removed stopSession deprecated method, use stopSession: instead.
  • Removed stopSessionAndTeardownOutputs: deprecated method, use stopSession: instead.
  • Removed selectCameraPosition: deprecated method, use setPosition: instead.
  • Removed currentPosition deprecated method, use position instead.
  • Deprecated deinitializeRTC method in QBRTCClient class. From now on QBRTCCLient managing deinitialization of webrtc on itself after initial initialization by initializeRTC method. Just remove usage of this method.
  • Removed old deprecated QBRTCSoundRouter class. Use QBRTCAudioSession instead.
  • Removed old deprecated enums inQBRTCConnectionState enum.
  • Removed QBRTCPixelFormat420v and QBRTCPixelFormatBGRA deprecated enums in QBRTCPixelFormat enum. Those formats weren't implemented by SDK and were completely unsupported.
  • Removed initWithPixelBuffer: deprecated method in QBRTCVideoFrame class. Use initWithPixelBuffer:videoRotation: instead.
quickblox-ios-sdk -

Published by over 7 years ago

v2.9.2 — Feb 14, 2017

  • Added support for VOIP push notifications (for now, only available for Enterprise plans)
    • Added sendVoipPush:toUsers: successBlock:errorBlock: and sendVoipPush:toUsersWithAnyOfTheseTags:successBlock:errorBlock: to QBRequest class. Use them in order to send VOIP push notifications.
    • Added QBMPushTypeAPNSVOIP push type to QBMPushType enum.
    • Added kQBMNotificationChannelsAPNSVOIP NSString constant as one of the notification channels.
    • AddedkQBMPushTypeAPNSVOIP NSString type as one of the push types.
  • Fixed possible leak in unregisterSubscriptionForUniqueDeviceIdentifier:successBlock:errorBlock method in QBRequest class.
quickblox-ios-sdk -

Published by over 7 years ago

Framework:

  • Built as dynamic framework.

    • Run Script Phase: Don't forget to add a RunScript Phase to your project, in order for framework to successfully compile when archiving.
    • Embedded binary: If you are not using CocoaPods and have QuickbloxWebRTC installed manually, don't forget to add it as Embedded binary.

    Developer comment: From now on framework is built and distributed as dynamic framework. You can read more about it here. This will also allow the use of use_frameworks! flag in pod file, that is using QuickbloxWebRTC framework as one of its pods.

  • Added full bitcode support.

    Developer comment: QuickbloxWebRTC framework is now fully supportsbitcode. You can enable bitcode in your project (if no other framework you are using don't have it) and we are highly encouraging you to do it. You can read more about bitcode here.

  • Reduced size of our framework from 84.3 mb to 67.4 mb.

    Developer comment: Bitcode support and dynamic framework itself have allowed us to reduce our framework size in ~21%.

Core:

  • Fixed-session:hungUpByUser:userInfo: delegate method of QBRTCClientDelegate protocol not being called (thanks to neshyurik for reporting the issue).
  • Fixed crash after accepting the incoming call that was cancelled by the caller.

Sample video chat:

  • Improved screen sharing codebase in QBRTCScreenCapture class. Now using kCVPixelFormatType_420YpCbCr8BiPlanarFullRange pixel format (better performance).
  • Reduced size of icons in sample.
quickblox-ios-sdk - v2.9.1 — Jan 16, 2017

Published by over 7 years ago

  • Refactored internal parsers: performance increase.
  • Fixed rare crash with collection, which was mutated while being enumerated due to access from different threads (thanks to ameenudheenirshad for reporting the issue)
  • Added support for application groups. Use setApplicationGroupIdentifier: method in QBSettings class.
  • Fixed issue with incorrect generic for reasons property in QBError (thanks to mosluce for reporting the issue)
  • Reduced Quickblox SDK binary size.
quickblox-ios-sdk - v 2.9 - Nov 10, 2016

Published by almost 8 years ago

  1. Implemented last activity. You can get last activity in seconds for user that is in your contact list. Will return 0 if user is online. Fore more information: XEP-0012:
  • Added lastActivityForContactListItem:withCompletion: and lastActivityForContactListItem:withTimeout:completion: methods to QBContactList class. Use them to get a last activity for contact list item.
  1. [QBChat]:
  • Added user ID validation in connectWithUser: methods.
  • QBChat will now store a copy of QBUUser instance while connected (was the direct link).
  • Fixed QBChat stored user not being cleared after disconnect (thanks intonarumori).
  • Fixed disconnectWithCompletionBlock: completion block not being called if chat is not connected (thanks intonarumori).
  • Fixed an issue that prevented group dialogs from being joined if chat did reconnect.
  1. Implemented markMessagesAsDelivered:dialogID:successBlock:errorBlock: QBRequest. Use it to mark messages as delivered.

  2. Deprecated read property in QBChatMessage class. Use readIDs to determine whether the message was read.

quickblox-ios-sdk - v2.8 — Sep 16, 2016

Published by about 8 years ago

  • Introducing refactored connect to chat. Now even faster.
  • Fixed Join in group dialogs deadlock, whenever user was performing join in bunch of rooms at the same time.
  • Added mutualBlock property to QBPrivacyItem class. By default user, who is blocking, can send messages and presences to the one he blocked without any errors. To achieve a two-way block set this property to YES. After that the user, who is blocking, will receive errors when will try to communicate with blocked user.
  • Updated inline documentations and nullability pointers in various classes headers.

iOS 10 - In order for QBSession restoration from keychain to work as intended, you from now on need to turn on keychain share in your application project capabilities.