- Fixed an issue when excluding some properties of native types
- Added an ability to exlude custom class fields from interacting with database:
Backendless.shared.data.excludeProperties(forClass: AnyClass, fieldNames: [String])
- fixed issue when publishing without PublishOptions
- fixed issue with pushing broadcast
- added @dynamicMemberLookup for the BackendlessUser
- fixed RT issue when user was able to subscribe only for one messaging channel
- some deprecated code was updated under the hood
- minimal iOS and tvOS versions changed to 12.0
- added implementation for BackendlessExpression
- fixed issue with mirroring class children
- added the
callbackUrlDomainargument to thegetAuthorizationUrlLinkmethods
- fixed RT
bulkUpsertmethods access level for class approach - fixed issue with
DataPermission'ssetPermission()function
- fixed issue when
getUserTokenmethod returned nil after login withstayLoggedIn = trueand re-runing app
- added a necessary
import Foundationline of code to the UserProperty class - the
loginWithOauth1method signature changed a little to:
func loginWithOauth1(providerCode: String, authToken: String, tokenSecret: String, fieldsMapping: [String : String], stayLoggedIn: Bool, responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func loginWithOauth1(providerCode: String, authToken: String, tokenSecret: String, guestUser: BackendlessUser, fieldsMapping: [String : String], stayLoggedIn: Bool, responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
- the response of the
createEmailConfirmationmethod changed to String:
func createEmailConfirmation(identity: String, responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added Hive support
- added support for DataQueryBuilder in the findFirst() and findLast() functions
- added method to create a directory:
func createDirectory(path: String, responseHandler: (() -> Void)!, errorHandler: ((Fault) -> Void)!)
- fixed bug with missing user token in requests after login
- fixed bug with the
makeRequest()method in the BackendlessRequestManager class when assigningrequest.httpBody
- the
PermissionOperationenum values updated to: UPDATE, FIND, REMOVE, LOAD_RELATIONS, ADD_RELATION, DELETE_RELATION, UPSERT - added method for batch ACL update:
func updateUsersPermissions(tableName: String, objectId: String, permissions: [AclPermissionDTO], responseHandler: (([Bool]) -> Void)!, errorHandler: ((Fault) -> Void)!)
- Swift-SDK updated. Minimal required versions:
- iOS 11.0
- macOS 10.13
- tvOS 11.0
- watchOS 5.0
- fixed issue when array for the JSON column is not saved
- added the commerce function for verifying Apple receipts:
Backendless.shared.commerce.verifyAppleReceipt(...)
- fixed issue with retrieving cached data
- Swift is set to v5
- added the function with
isUpsert = falseby default
func save(entity: Any, responseHandler: ((Any) -> Void)!, errorHandler: ((Fault) -> Void)!)
- the
create(),update()andsave()methods removed from the PersistenceService, please use instead:
func save(entity: [String : Any], isUpsert: Bool, responseHandler: (([String : Any]) -> Void)!, errorHandler: ((Fault) -> Void)!)
func save(entity: Any, isUpsert: Bool, responseHandler: ((Any) -> Void)!, errorHandler: ((Fault) -> Void)!)
- the
createBulk()methods renamed tobulkCreate() - the
updateBulk()methods renamed tobulkUpdate() - the
removeBulk()methods renamed tobulkRemove() - added support for upseert to the PersistenceService:
func save(entity: Any, isUpsert: Bool, responseHandler: ((Any) -> Void)!, errorHandler: ((Fault) -> Void)!)
func bulkUpsert(entities: [Any], responseHandler: (([String]) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added support for upsert/upsertBulk transaction operation
- added RT support for the upsert methods:
func addUpsertListener(responseHandler: ((Any) -> Void)!, errorHandler: ((Fault) -> Void)!) -> RTSubscription?
func addUpsertListener(whereClause: String, responseHandler: ((Any) -> Void)!, errorHandler: ((Fault) -> Void)!) -> RTSubscription?
func removeUpsertListeners(whereClause: String)
func removeUpsertListeners()
- fixed crash on session timeout in the
isValidUserToken()method
- added support for append operations in FileService
func append(fileName: String, filePath: String, content: Data, responseHandler: ((BackendlessFile) -> Void)!, errorHandler: ((Fault) -> Void)!)
func append(urlToFile: String, backendlessPath: String, responseHandler: ((BackendlessFile) -> Void)!, errorHandler: ((Fault) -> Void)!)
func append(fileName: String, filePath: String, base64Content: String, responseHandler: ((BackendlessFile) -> Void)!, errorHandler: ((Fault) -> Void)!)
func append(fileName: String, filePath: String, data: String, responseHandler: ((BackendlessFile) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added
uniqueEmailsparameter to the EmailEnvelope class
- deprecated methods removed from SDK
- added support for
fileReferencePrefixto GroupDataQueryBuilder - added ability to set headers to
CustomService.invoke - the
returnTypeparameter removed from the CustomServiceinvokemethods
- Socket.IO updated to v 16.0.1. Minimal required versions:
- iOS 10.0
- macOS 10.13
- tvOS 10.1
- watchOS 5.0
- added support for Grouping API:
func group(queryBuilder: GroupDataQueryBuilder, responseHandler: ((GroupResult) -> Void)!, errorHandler: ((Fault) -> Void)!)
func getGroupObjectCount(queryBuilder: GroupDataQueryBuilder, responseHandler: ((Int) -> Void)!, errorHandler: ((Fault) -> Void)!)
- the RelationStatus class is made Codable
- added methods to upload file from url:
func upload(urlToFile: String, backendlessPath: String, responseHandler: ((BackendlessFile) -> Void)!, errorHandler: ((Fault) -> Void)!)
func upload(urlToFile: String, backendlessPath: String, overwrite: Bool, responseHandler: ((BackendlessFile) -> Void)!, errorHandler: ((Fault) -> Void)!)
*added methods to send email from template with attachments:
func sendEmailFromTemplate(templateName: String, envelope: EmailEnvelope, attachments: [String], responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
func sendEmailFromTemplate(templateName: String, envelope: EmailEnvelope, templateValues: [String : String], attachments: [String], responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added support for counter listing:
func list(counterNamePattern: String, responseHandler: (([String]) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added
fileReferencePrefixproperty to DataQueryBuilder - added the
getAuthorizationUrlLinkmethods to User Service:
func getAuthorizationUrlLink(providerCode: String, responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
func getAuthorizationUrlLink(providerCode: String, fieldsMappings: [String : String], responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
func getAuthorizationUrlLink(providerCode: String, scope: [String], responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
func getAuthorizationUrlLink(providerCode: String, fieldsMappings: [String : String], scope: [String], responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
*added methods to the UserService:
func findByRole(roleName: String, responseHandler: (([BackendlessUser]) -> Void)!, errorHandler: ((Fault) -> Void)!)
func findByRole(roleName: String, loadRoles: Bool, responseHandler: (([BackendlessUser]) -> Void)!, errorHandler: ((Fault) -> Void)!)
func findByRole(roleName: String, queryBuilder: DataQueryBuilder, responseHandler: (([BackendlessUser]) -> Void)!, errorHandler: ((Fault) -> Void)!)
func findByRole(roleName: String, loadRoles: Bool, queryBuilder: DataQueryBuilder, responseHandler: (([BackendlessUser]) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added the
reloadCurrentUserproperty to the UserService to return the updated currentUser data
- fixed app init with custom domain to accept domens both with protocol or without
- added possibility to init app with custom domain name
- fixed RT issue when subscribtion failed for events unless socket is connected
- fixed RT issue when socket didn't reconnect automatically after the ConnectErrorEventListener is triggered
- fixed RT issue when channel didn't reconnect after login/logout and adding/removing listeners very quickly
- the
currentUseris fetched from remote when session resumed
- fixed issue with new version of Socket.IO
- tests refactoring in progress
- fixed the DataQueryBuilder
distinctproperty for Flutter-SDK - tests refactoring in progress
- added the ability to add/set the relation using the OpResult from the
uow.createanduow.updateas children parameter
- fixed issue when SDK crashed with several find methods for class approaches in parallel threads
- fixed issue when Date fields failed to parse in Java Custom Services
- fixed issue when RT socket reconnected after currentUser is updated
- fixed issue when Geometry fields failed to parse in Java Custom Services
- fixed issue with SPM after adding the BLUrlSession, BLUrlSessionShared and BLUrlSessionSetup classes
- fixed issue when RT socket didn't reconnect automatically after disconnect
- added the
ofView()method to the PersistenceService class - added methods to configure the URLSession for requests manually:
var useSharedUrlSession = false
// true: URLSession is created only once for all requests
// false: URLSession is created for every request
// to setup URLSessionConfiguration manually for all you URLSession requests
func setupURLSessionConfig(_ config: URLSessionConfiguration)
// to setup URLSession manually for all you requests
func setupURLSession(_ session: URLSession)
- fixed issue when Business Logic returned a date as a string
- fixed issue when RT stopped working after logout, relogin or when Internet disappeared
- added the
deepSave()methods to DataStoreFactory and MapDrivenDataStore
- added the
distinctproperty to DataQueryBuilder - fixed the listeners count in the RTListener.swift class
- methods marked as depreated:
logingWithFacebook(...)
loginWithTwitter(...)
loginWithGoogle(...)
- the iOS deployment target is set to 9.0 in the .podspec file
- the signatures of
func loginWithOauth2(providerName: String...)
func loginWithOauth1(providerName: String...)
changed to
func loginWithOauth2(providerCode: String...)
func loginWithOauth1(providerCode: String...)
- the signature of
func resendEmailConfirmation(email: String, responseHandler: (() -> Void)!, errorHandler: ((Fault) -> Void)!)
changed to
func resendEmailConfirmation(identity: String, responseHandler: (() -> Void)!, errorHandler: ((Fault) -> Void)!)
- added function to the UserService:
func createEmailConfirmation(identity: String, responseHandler: (([String : Any]) -> Void)!, errorHandler: ((Fault) -> Void)!)
- the GeoService functionality removed from SDK
- the minimum deployment target is changed to iOS 9.0
- travis.yml changed to work with Xcode 12.2
- added OAuth login methods:
func loginWithOauth2(providerName: String, token: String, fieldsMapping: [String : String], stayLoggedIn: Bool, responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func loginWithOauth2(providerName: String, token: String, guestUser: BackendlessUser, fieldsMapping: [String : String], stayLoggedIn: Bool, responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func loginWithOauth1(providerName: String, token: String, tokenSecret: String, fieldsMapping: [String : String], stayLoggedIn: Bool, responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func loginWithOauth1(providerName: String, token: String, tokenSecret: String, guestUser: BackendlessUser, fieldsMapping: [String : String], stayLoggedIn: Bool, responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
- fixed issue when FileService
rename(),move(),copy()methods responses URLs were encased in quotation marks
- fixed bug with FileService
rename(),move(),copy()methods response - fixed FileService tests
- added SPM support
- fixed the JSONSerialization issue in custom services
- added support for JSON data type, added the JSONUpdateBuilder class
- fixed bug when custom service method returns null in response
- added tests for the RT Relations Listeners
- fixed transactions fail issue when object is BackendlessUser
- added RT Listeners for Relations support
- fixed transactions fail issue when object is BackendlessUser
- class approach fixed to handle JSON column type correctly
- added transactions API
- most of the get/set methods are marked as deprecated andtheir corresponding properties changed to public. These getters and setters are still available, but will be removed in the future, please use the
.to access the properties - fixed the issue when
relationsDepth = 0was sent to server even when it wasn't set manually
- the
currentUserproperty in UserSevice changed to public and can be set manually. Current user is saved after the application restarts only whenstayLoggedIn = true
- the BackendlessUser and UserService properties became public, get/set methods are marked as deprecated
- fixed crash when saving object which doesn't have the
objectIdproperty - fixed the
BackendlessDataCollectionissue when trying to delete the last object from the collection - the Backendless
Identifiableprotocol for theBackendlessDataCollectionrenamed toBLIdentifiableto avoid the confusion with Swift'sIdentifiableprotocol
- fixed issue when Custom Class attached to User was Null when
stayLoggedInin is true
- fixed issue when user property is object of custom class
- fixed issue with class casting when Bunlde Name and Bundle Executable Name have different values
- fixed the FileService
removemethod response - tests fixed
- the
EmailBodypartsclass renamed to theEmailBodyParts - fixed issue with BLGeometry in BackendlessUser properties
- fixed issue with current user after the Twitter login
- DataQueryBuilder
excludedPropertiesrenamed toexcludeProperties
- added support for smart-text in rich media url
- fixed issue with Backendless.shared.customService.invoke callback crash
- the
propertiesof DataQueryBuilder and LoadRelationsQueryBuilder fixed to return all values when user set only one property as empty string - the
addAllProperties,excludeProperty,excludePropertiesmethods added to the DataQueryBuilder - fixed issue when DataStore methods didn't process Backendless types in response
- fixed class to table mapping issue
- fixed type casting for Backendless types
- fixed issue when parsing Geometry types for Flutter-SDK
- code refactored
- added the PersistenceHelper class
- classes related to current GeoService marked as deprecated
- fixed Backendless system classes conversion when working with dictionary approach
- fixed
isValidUserTokenmethod to return error when Internet connection is not available - refactored Fault constructor to handle URLSession errors correctly
- fixed tests according to the last server changes
- fixed the DataQueryBuilder
propertiesproperty to work correctly in search queries - fixed BLGeometry tests and methods that allow to get geometry objects from WKT or GeoJSON
- BackendlessDataCollection fixed
- fixed issue when BackendlessUser object lost its objectId while decoding
- fixed issue when RT disconnect listener didn't trigger when internet disappeared
- added Spatial Data support
- added guest login with social account:
func loginWithFacebook(accessToken: String, guestUser: BackendlessUser, fieldsMapping: [String: String], responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func loginWithTwitter(authToken: String, authTokenSecret: String, guestUser: BackendlessUser, fieldsMapping: [String: String], responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func loginWithGoogle(accessToken: String, guestUser: BackendlessUser, fieldsMapping: [String: String], responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added function to DataQueryBuilder and LoadRelationsQueryBuilder:
func addProperties(properties: String...)
- fixed issue when RT-subscriptions were lost after socket reconnection
- fixed the geolocation search in radius issue when all category points returned
- fixed LoadRelationsQueryBuilder issue with Users table
- fixed problems with saving/getting objects with File Reference property
- customized encoding/decoding for DataQueryBuilder
- fixed Units in the BackendlessGeoQuery which was broken for Objective-C in v5.6.2
- fixed CodingKeys in the BackendlessGeoQuery to work correctly with
sortByproperty
- fixed the currentUser wasn't updated issue when
stayLoggedIn = true - StoredObjects now store also the BackendlessUser and DeviceRegistration objects
- added the
relationsPageSizeproperty to the DataQueryBuilder - added the
sortByproperty to the BackendlessGeoQuery - fixed CodingKeys in the BackendlessGeoQuery
- fixed the
user-tokenduplication in the UserService
- fixed the
userTokenupdate issue - fixed the incorrect date format in the Backendless RequestManager class
- fixed the
addRelatedmethods bug when they worked assetRelated
- fixed the BackendlessUser password is not updating issue
- fixed the issue caused by spaces and dashes in the project's product name
- updated the
blUserLocalebehavior
- the
createmethod added into the PersistenceService - the
savemethod logic changed. When anobjectId != nilit works like update, whenobjectId == nilit works like create
- fixed crash in the createBulk method
- the update method returns fault when missing objectId
- fixed CodingKeys in class DeviceRegistration
- fixed error on decoding ObjectProperty received from Flutter
- fixed serialization/deserialization of GeoCluster
- fixed serialization/deserialization of MessageStatus
- fixed serialization/deserialization of class DeliveryOptions
- fixed serialization/deserialization of class ReconnectAttemptObject
- fixed serialization/deserialization of class BackendlessUser
- fixed bug when mapped relations are broken
- the FileService
saveFilemethod fixed to return url String value correctly - fixed putting and getting custom types in the CacheService
- added method to the CacheService
func get(key: String, ofType: Any.Type, responseHandler: ((Any?) -> Void)!, errorHandler: ((Fault) -> Void)!)
This method is available for Swift projects.
- fixed error on sending BackendlessGeoQuery with empty metadata
- the CacheService
getmethod returns nil if cache for the key doesn't exist - the CacheService
getmethod fixed to return String values correctly
- fixed a bug when missing inherited object properties
- fixed deserialization of BackendlessGeoQuery class
- fixed class to table mappings
- added RT support to the BackendlessDataCollection class
- the SharedObject
invokemethod fixed
- the BackendlessDataCollection whereClause fix
- the BackendlessDataCollection class fix
- added the BackendlessDataCollection class for automatic data loading purposes
- added the blUserLocale property (two character code) to the BackendlessUser object
- fixed crashes in the uploadFile and saveFile functions when file name contains unsupported characters
- added methods to UserService:
func setUserToken(value: String)
func getUserToken()
func loginAsGuest(responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func loginAsGuest(stayLoggedIn: Bool, responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added methods for Backendless headers:
func getHeaders() -> [String : String]
func setHeader(key: String, value: String)
func removeHeader(key: String)
- added Codable and NSCoding support for LoadRelationsQueryBuilder
- LoadRelationsQueryBuilder initializers updated
- the addRelations methods fixed to work correctly
- added methods to GeoService:
func getFencePointsCount(geoFenceName: String, responseHandler: ((Int) -> Void)!, errorHandler: ((Fault) -> Void)!)
func getFencePointsCount(geoFenceName: String, geoQuery: BackendlessGeoQuery, responseHandler: ((Int) -> Void)!, errorHandler: ((Fault) -> Void)!)
- the sendEmailFromTemplate functions signatures changed:
func sendEmailFromTemplate(templateName: String, envelope: EmailEnvelope, responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
func sendEmailFromTemplate(templateName: String, envelope: EmailEnvelope, templateValues: [String : String], responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
- the sendEmails functions renamed into the sendEmailFromTemplate:
func sendEmailFromTemplate(templateName: String, envelope: EmailEnvelope, responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
func sendEmailFromTemplate(templateName: String, templateValues: [String : String], envelope: EmailEnvelope, responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added custom serialization/deserialization for class BackendlessGeoQuery
- the EmailEnvelope signatures changed
- code refactoring
- version 0.0.12 experienced some cocoapods issues, so they are fixed in 0.0.13 - please use this version instead
- added the SearchMatchesResult class
- fixed the relativeFind method to return SearchMatchesResult correctly
- added serializations/deserialization for class SearchMatchesResult
- added distance field in class GeoPoint
- fixed the GeoPoint saving issue which caused crash when sending custom object in metadata
- customized serialization/deserialization for the next classes: DeliveryOptions, GeoPoint, GeoQueryRectangle
- fixed password issue when updating the BackendlessUser objects
- fixed Date type issue when retrieving object or registering BackendlessUser with custom Date field
- fixed the BackendlessUser properties methods
- added support of custom smart-text substitutions for push templates:
func pushWithTemplate(templateName: String, templateValues: [String : Any], responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added Channel function:
func sendCommand(commandType: String, data: Any?, responseHandler: (() -> Void)!, errorHandler: ((Fault) -> Void)!)
- added IEmailEnvelope protocol, EmailEnvelope, EnvelopeWithRecepients and EnvelopeWithQuery classes
- added functions to MessagingService:
func sendEmails(templateName: String, envelope: IEmailEnvelope, responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
func sendEmails(templateName: String, templateValues: [String : String], envelope: IEmailEnvelope, responseHandler: ((MessageStatus) -> Void)!, errorHandler: ((Fault) -> Void)!)
- added groups support for push notifications (for iOS 12+)
- the AtomicCounters compareAndSet function fixed to return Bool in response instead of Int
- added functions to UserService:
func loginWithTwitter(authToken: String, authTokenSecret: String, fieldsMapping: [String: String], responseHandler: ((BackendlessUser) -> Void)!, errorHandler: ((Fault) -> Void)!)
func resendEmailConfirmation(email: String, responseHandler: (() -> Void)!, errorHandler: ((Fault) -> Void)!)
- fixed bug in the CacheService methods when key contains spaces
- fixed crashes in DataPermission when object is Dictionary
- added the segmentQuery property to the DeliveryOptions
- removed the device registration methods that don't take deviceToken as parameter
- removed the
refreshDeviceTokenmethod - removed the unnecessary init methods
- customized Serialization/Deserialization for next classes: ObjectProperty, BackendlessFileInfo, GeoCategory, BackendlessUser, UserProperty
init(from decoder: Decoder) throws
func encode(to encoder: Encoder) throws
- added functions to FileService:
func exists(path: String, responseHandler: ((Bool) -> Void)!, errorHandler: ((Fault) -> Void)!)
func listing(path: String, responseHandler: (([BackendlessFileInfo]) -> Void)!, errorHandler: ((Fault) -> Void)!)
func remove(path: String, pattern: String, recursive: Bool, responseHandler: (() -> Void)!, errorHandler: ((Fault) -> Void)!)
- added functions to MessagingService:
func unregisterDevice(channels: [String], responseHandler: ((Bool) -> Void)!, errorHandler: ((Fault) -> Void)!)
func refreshDeviceToken(newDeviceToken: Data, responseHandler: ((Bool) -> Void)!, errorHandler: ((Fault) -> Void)!)
- classes made to conform to the Codable protocol: DataQueryBuilder, LoadRelationsQueryBuilder, BackendlessGeoQuery, GeoQueryRectangle, PublishOptions, DeliveryOptions, BackendlessFileInfo, PublishMessageInfo, UserInfo, ReconnectAttemptObject, BulkEvent
- deviceId is stored permanently in Keychain after device registration
- resolved issue when request response returned in the wrong thread
- fixed the issue of NSClassFromString method when namespace contains dashes
- added support of sortBy and properties for LoadRelationsQueryBuilder
- channel name property getter set to open
- device token is saved on the device when registering in Backendless first time
- added functions to MessagingService:
func registerDevice(responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
func registerDevice(channels: [String], responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
func registerDevice(expiration: Date, responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
func registerDevice(channels: [String], expiration: Date, responseHandler: ((String) -> Void)!, errorHandler: ((Fault) -> Void)!)
func getDeviceRegistrations(responseHandler: (([DeviceRegistration]) -> Void)!, errorHandler: ((Fault) -> Void)!)
- some beautiful changes are made with README.md
- CHANGELOG.md added
- this is the very first release of the Backendless Swift-SDK