This repository has been archived by the owner on Feb 13, 2025. It is now read-only.
Releases: Kinvey/swift-sdk
Releases · Kinvey/swift-sdk
3.18.1
3.18.0
Improvements
- Swift.Codable Support and deprecation of ObjectMapper in favor of
Swift.Codable
(#303) - Replacing all
fatalErrors()
calls to throw Errors instead (#305)
Bugfixes
- Fixed memory leak in DataStore.removeAll() (#304)
Deprecated
ObjectMapper
is now deprecated in favor ofSwift.Codable
Breaking Changes
Entity.CodingKeys
renamed toEntity.EntityCodingKeys
to avoid confusions when subclassingEntity
DataStore<MyEntity>.collection()
now can throw errors, so atry
is now required, for example:try DataStore<MyEntity>.collection()
Options()
constructor now can throw erros, so atry
is now required, for example:try Options(timeout: 120)
- Custom types used in
CustomEndpoint
calls now requires to provide implement theJSONDecodable
protocol
3.17.1
3.17.0
Improvements
- Better code coverage (#297)
Bugfixes
- None
Deprecated
Client.initialize(appKey:appSecret:accessGroup:apiHostName:authHostName:encrypted:schema:completionHandler:)
Client.initialize(appKey:appSecret:accessGroup:apiHostName:authHostName:encryptionKey:schema:completionHandler:)
CustomEndpoint.CompletionHandler
CustomEndpoint.execute(_:params:client:completionHandler:)
DataStore.pull(_:deltaSetCompletionHandler:deltaSet:completionHandler:)
DataStore.purge(_:completionHandler:)
DataStore.push(timeout:completionHandler:)
DataStore.sync(_:deltaSetCompletionHandler:deltaSet:completionHandler:)
Entity.Key.acl
Entity.Key.entityId
Entity.Key.metadata
FileStore.download(_:storeType:ttl:completionHandler:)
FileStore.download(_:ttl:completionHandler:)
FileStore.find(_:ttl:completionHandler:)
FileStore.refresh(_:ttl:completionHandler:)
FileStore.remove(_:completionHandler:)
FileStore.upload(_:data:ttl:completionHandler:)
FileStore.upload(_:image:imageRepresentation:ttl:completionHandler:)
FileStore.upload(_:path:ttl:completionHandler:)
FileStore.upload(_:stream:ttl:completionHandler:)
Metadata.Key.authtoken
Metadata.Key.entityCreationTime
Metadata.Key.lastModifiedTime
User.PersistableUsernameKey
User.changePassword(newPassword:completionHandler:)
User.exists(username:client:completionHandler:)
User.forgotUsername(email:client:completionHandler:)
User.get(userId:client:completionHandler:)
User.login(authSource:_:createIfNotExists:authServiceId:client:completionHandler:)
User.lookup(_:completionHandler:)
User.resetPassword(usernameOrEmail:client:completionHandler:)
User.save(newPassword:completionHandler:)
User.sendEmailConfirmation(forUsername:client:completionHandler:)
User.signup(username:password:user:client:completionHandler:)
Breaking Changes
Client.initialize(appKey:appSecret:accessGroup:apiHostName:authHostName:encrypted:schemaVersion:migrationHandler:)
Client.initialize(appKey:appSecret:accessGroup:apiHostName:authHostName:encryptionKey:schemaVersion:migrationHandler:)
Client.timeoutInterval
DataStore.collection(_:deltaSet:autoPagination:client:tag:validationStrategy:)
DataStore.count(_:readPolicy:completionHandler:)
DataStore.find(_:deltaSet:readPolicy:completionHandler:)
DataStore.find(_:readPolicy:completionHandler:)
DataStore.find(byId:readPolicy:completionHandler:)
DataStore.getInstance(_:deltaSet:client:tag:validationStrategy:)
DataStore.group(count:countType:condition:readPolicy:completionHandler:)
DataStore.group(keys:avg:avgType:condition:readPolicy:completionHandler:)
DataStore.group(keys:initialObject:reduceJSFunction:condition:readPolicy:completionHandler:)
DataStore.group(keys:max:maxType:condition:readPolicy:completionHandler:)
DataStore.group(keys:min:minType:condition:readPolicy:completionHandler:)
DataStore.group(keys:sum:sumType:condition:readPolicy:completionHandler:)
DataStore.pull(_:deltaSet:deltaSetCompletionHandler:completionHandler:)
DataStore.remove(_:writePolicy:completionHandler:)
DataStore.remove(byId:writePolicy:completionHandler:)
DataStore.remove(byIds:writePolicy:completionHandler:)
DataStore.removeAll(_:completionHandler:)
DataStore.removeById(_:writePolicy:completionHandler:)
DataStore.save(_:writePolicy:completionHandler:)
FileStore.getInstance(client:)
FileStore.getInstance(fileType:client:)
Metadata.AuthTokenKey
Metadata.EctKey
Metadata.LmtKey
Options.init(_:)
User.destroy(userId:hard:client:completionHandler:)
User.find(query:client:completionHandler:)
User.login(redirectURI:micURL:authServiceId:client:)
User.presentMICViewController(redirectURI:timeout:forceUIWebView:authServiceId:client:completionHandler:)
User.resetPassword(email:client:completionHandler:)
User.resetPassword(username:client:completionHandler:)
3.16.0
Improvements
- MIC support for the Resource Owner Credentials Grant flow (#290)
- Outdated compiler warnings removed (#291)
Bugfixes
- Use autopaging when Delta Sync is not available (#289)
- Fix inconsistencies when Delta Sync is enabled and an autopaging request fails (#292)
- Bugfix: Fix inconsistencies when Delta Sync is enabled and
fields
is used in the query (#293) - Bugfix: Correctly handle OAuth MIC errors in a returned redirect URI (#294)
Deprecated
User.login(redirectURI:username:password:)
. UseUser.login(username:password:provider:options:completionHandler:)
instead
Breaking Changes
- None
3.15.0
Improvements
X-Kinvey-Device-Info
is a new header that includes more information about the device (#282)- Upgrading PromiseKit to version 6 (#284)
- The client-side Delta Set feature has been replaced by a server-side implementation called Delta Sync that offers better performance and scalability (#261, #286, #287)
- Default log level is now
.warning
(#283)
Bugfixes
- Make the
ValidationStrategy
work as intended (#285) - Canceling
DataStore.find()
requests not working in some situations (#288)
Deprecated
- None
Breaking Changes
- None
3.14.0
Improvements
let person: Person = <#...#>
let notificationToken = person.observe { (objectChange: Kinvey.ObjectChange<Person>) in
switch objectChange {
case .change(let person):
print("person object changed")
case .deleted:
print("person object deleted")
case .error(let error):
print("\(error)")
}
}
let dataStore = DataStore<Person>.collection(.sync)
let notificationToken = dataStore.observe {
switch $0 {
case .initial(let results):
print("initial results")
case .update(let results, let deletions, let insertions, let modifications):
print("dataStore changed")
case .error(let error):
print("\(error)")
}
}
- Allow usage of
authServiceID
for MIC calls (#277) User
andEntity
now conforms toHashable
andEquatable
(#279)
Bugfixes
DataStore.removeAll()
request was wrong (#274)- Queries were not translated correctly for non-entity classes, like
Acl
for example (#278) - Live Service messages not coming with strict permissions (#280)
Deprecated
- None
Breaking Changes
- None
3.13.0
Improvements
- DataStore instances are not cached anymore allowing multiple configurations for the same DataStore (#272)
- HTTP header
User-Agent
now includes the Swift version (#270) - Client instances can now be created using
instanceID
(#267)
Kinvey.sharedClient.initialize(appKey: "myAppKey", appSecret: "myAppSecret", instanceId: "my-instance-id") {
switch $0 {
case .success(let user):
print("\(user?.userId ?? "nil")")
case .failure(let error):
print("\(error)")
}
}
Bugfixes
- Memory consumption fixed for
DataStore<T>.find()
calls (#268) FileStore
now returns the proper result types for sync wait calls (#266)- User lockdowns now is fully supported automatically logging out users in lockdown state (#265)
Deprecated
- None