0.21.0 / 5-3-2018
Breaking Change
- Renamed
onFailure:
toonError:
to better support Objective-C - Removed
case .modified
for.updated
inConversationCollection
class - Deprecated
.memberLeft
,.memberInvited
,.memberJoined
and.memberChanged
in Conversation class for newObservable
type of ofMemberModel.State
New
Call
member state: Observe for changes in member states
call.memberState.subscribe(onSuccess: { state in
switch state {
case .answered(let member):
break
case .rejected(let member):
break
case .hangUp(let member):
break
}
})
```objective-c
[conversation memberChangesObjcOnInvited:^(NXMMember * _Nonnull member) {
// code here
} onJoined:^(NXMMember * _Nonnull member) {
// code here
} onLeft:^(NXMMember * _Nonnull member) {
// code here
}];
Bugs
- Fixed
.disable()
media when logging out - Wrapper around on Swift methods for Objective-C
- Better design for docs and in-line comments
- Member cache not updating after Database write
- Fixed issue where some Objective-c methods/property got left behind during Swift 4 mitgration
0.20.0 / 22-2-2018
Breaking changes
Rename
Audio
class has been renamed toMedia
RTCController
class has been renamed toMediaController
Previous version:
Conversation.audio
Client.media
New version:
Conversation.media
Client.media // same property name
Observable
- Removed
RxSwift.Observable
object for our own wrapper which is well documented with a simpler API design. Now you haveNexmoConversation.Observable
andNexmoConversation.MutableObservable
Signal.addHandler
is now.subscribe(onSuccess: onError:)
along with all async code to be consistent across the whole codebase.disposed
is not required now as the client is a singleton
Previous version:
events.newEventReceived.addHandler { event in
// code here
}
client.login(with: token).subscribe(onNext: {
// code here
}, onError: { error in
// code here
}).disposed(by: disposeBag)
New version:
client.login(with: token).subscribe(onSuccess: {
// code here
}, onError: { error in
// code here
})
Note:
onNext:
has to be replaced withonSuccess:
disposed
has been removed
NexmoConversation.Observable
class
Two property:
.mainThread
.backgroundThread
6 Methods: (2 for subscribe and 4 high order function for chaining observable).
filter
map
flatMap
reduce
subscribe
NexmoConversation.MutableObservable
class (subclass of NexmoConversation.Observable
class)
One extra property:
.value
Call
Simple wrapper for Conversation
class to create a call
Create call
do {
let users = ["user1", "user2"]
try client.media.call(users, onSuccess: { result in
// code here
// result contains Call object and any errors from requesting invites for users
}, onError: { networkError in
// code here
})
} catch let error {
// code here
}
Pass a list of users to create a Call
object
Receive an incoming call
try client.media.inboundCalls.subscribe(onSuccess: { call in
// code here
})
Get given a Call
object for all incoming calls
Answer incoming call
call.answer(onSuccess: {
// code here
}, onFailure: { error in
// code here
})
onSuccess:
will be called when call has been answered
Reject incoming call
call.reject()
optional onError:
can be called
hangup call
call.hangUp(onSuccess: {
// code here
}, onFailure: { error in
// code here
})
onSuccess
is called when call has successfully hangup
Bugs
- Fixed bug where SynchronizingState did not do sync in order
- Fixed bug with ghost conversation would get lost due to memory ref
- Fixed bug where
Media
session was creating a connection too early
Others
- Documentation now has 100% coverage, few minor changes to section list and ordering of enum values to always be on top of a class.
- Console logs are more readable and take up less space
- Fixed some Swiftlint warnings and errors
- Security updates on repo
0.19.2 / 8-2-2018
Fix issue where muting did not work on second attempt and issues where full sync had to happen on second launch due to database permissions.
0.19.1 / 2-2-2018
Fix cocoapods build
0.19.0 / 1-2-2018
Breaking changes
AudioEvent
has now be renamed to MediaEvent
to reflect other media type that will soon be available
let event = event as? MediaEvent
invitations
in RTCController
has been renamed to media
getter
Old:
client.rtc.invitations
New:
client.media.invitations
MessageSent
in Conversation
class has now moved to EventCollection
inside the Conversation
class
Old:
conversation.messageSent.addHandler { event in
// sent event here...
}
New:
conversation.events.eventSent.addHandler { event in
// sent event here...
}
Changes
Documentation has been updated to reflect most recent API change. This should now be much more simple to understand
Removed GLOSS dependency for Swift 4 JSON
0.18.1 / 26-12-2017
Bugs
- Fixed RTC build issue
0.18.0 / 26-12-2017
Feature
- Support Swift 4 and Xcode 9+
0.18.2 / 1-1-2018
Bugs
- Fixed build issue
0.18.1 / 26-12-2017
Bugs
- Fixed RTC build issue
0.18.0 / 26-12-2017
Feature
- Support Swift 4 and Xcode 9+
0.17.0 / 20-12-2017
Bugs
- Handle empty JSON object returned from DELETE event request
- iOS pass APNS device token and environment (debug / release) to back end on login
Feature
- Expose push notification status
- Enable / disable audio in a conversation that I am a member of
- Event when another user has enabled / disabled audio in conversation
- Enable / disable loudspeaker
0.16.0 / 06-11-2017
Bugs
- Draft events were not getting deleted
- Removed trailing slash at end of URL on image download
0.15.0 / 14-09-2017
Breaking Change
- Database changes, please reinstall the app
Feature
- Fetch images from media server
- IOS 10 UserNotifications framework supported
- Download image method
- Image caching
0.14.0 / 14-09-2017
Breaking Change
client.conversation.new(Model, withJoin)
now requires aString
with a display name
Feature
- Auto-reconnect mechanism via feature toggle
Changes
- Refactor error messages to be readable
0.13.0 / 05-09-2017
Bugs
- Conversation.left() method & received member:left event do not update member state
- Sending typing does not update current member typing status
- Dont persist created conversation that we have not joined
0.12.0 / 21-08-2017
Feature
- Fetch user
- Auto reconnect
Bugs
- Fix crash on sync
0.11.0 / 08-08-2017
Feature
- Conversation collection updated for incoming contextual event i.e text and image
- Expose a reason for new conversation insert i.e "invited by"
- Exposed timestamp of member states
Bugs
- Fix crash on sync
- Made sure date foramtter created ones
- Reduce excess consuming of memory by about 80%
- Handle member already has joined error
0.10.0 / 21-07-2017
Feature
- Conversation collection can now be observed
Bugs
- Fix crash on sync
- Event body savedwith the correct format
0.9.3 / 06-07-2017
Breaking change
- accountController renamed to account
- conversationController renamed to conversation
- client.close() renamed to client.disconnect()
Feature
- Kick member from own object
Bugs
- Fixed issue where sync could not be completed
0.9.2 / 30-06-2017
Bugs
- Remove join checks when making network request
0.9.1 / 26-06-2017
Feature
- Equatable for public enum
- Update event that are deleted and insert new type, timestamp and payload
Bugs
- Connects twice on first run
0.9.0 / 16-06-2017
Breaking change
- Create conversation returns a facade object rather then the REST model
- Removed Objective-C prefix NXM and NX for Swift
Feature
- Custom log level. use
Configuration.default
- Internal error reporting. use
Client.internalNetworkError
Bugs
- Fix issue where display name was not set
- Fix issue with creating new conversation with same name failed
0.8.0 / 31-05-2017
Breaking changes
- Deprecated
client.connectionStatusChanged
client.syncComplete
- New
client.state
/// Global state of client /// /// - disconnected: Default state SDK has disconnected from all services. triggered on user logout/disconnects and inital state /// - connecting: Requesting permission to reconnect /// - connected: Connected to all services /// - outOfSync: SDK is not in sync yet /// - synchronizing: Synchronising with current progress state /// - synchronized: synchronised all services and ready to be used enum State { case disconnected case connecting case connected case outOfSync case synchronizing(SynchronizingState) case synchronized } /// State of synchronizing /// /// - conversations: processing conversations /// - events: processing events /// - members: processing members /// - users: processing users /// - receipt: processing receipts /// - tasks: sending all unsent request i.e events enum SynchronizingState { case conversations case events case members case users case receipt case tasks }
Changes
- Client console log configurable uisng
Configuration
class. i.e
client.configuration = Configuration(with: .info)
client.login(with: TOKEN)
0.7.0 / 26-04-2017
Changes
- Remove seenDate and deliveredDate from receipt records. Only keep NXMReceiptRecord.date as we know the type already
- Change User.me to: accountController.user
- Send event is now done in one step i.e send(String), send(Image)
- Same conversation object is not passed back in callbacks
- 'setTrying(:Bool)' is now two methods called start and stop
- Exposed last event id in conversation
- Renamed some classses to only use prefix in Objective-c
- Updated dependencies
- Updated docs
Bugs
- Bug fixes
0.6.1 / 11-04-2017
Feature
- better access of user state
- Delete events
Bugs
- Bug fixes
Changes
- Stabilised SDK
- Updated dependencies
- Updated docs
- Support for Carthage
- New framework on Git tag
0.0.6 / 24-03-2017
Bugs
- Bug fixes
Changes
- Expose conversation and Event method
- Stabilised SDK
- Updated dependencies
0.0.5 / 08-11-2016
Bugs
- Bug fixes
- Base URL not points to prod
0.0.4 / 04-10-2016
Feature
- Send image
- IPS
- Push notification support
0.0.3 / 07-10-2016
Bugs
- Bug fixes
Changes
- Minor framework update
0.0.1 / 04-10-2016
Changes
- Initial commit