10.0.0-beta.3
Pre-release
Pre-release
·
42 commits
to master
since this release
Installation:
- CocoaPods: specify version
10.0.0-beta.3in your Podfile.
use_frameworks!
target 'MyApp' do
pod 'SwiftyDropbox', '~> 10.0.0-beta.3'
end
- Swift Package Manager: use the "Up to next major version" option and specify
10.0.0-beta.3.
Features of the new version of the SDK:
- The new version of the SDK is fully compatible with Objective-C, allowing seamless integration and interoperability with existing Objective-C codebases.
- The previous dependency on Alamofire has been eliminated in the new version of the SDK, as it now includes native networking capabilities. This means that there are no longer any external dependencies.
- The new version of the SDK introduces support for background sessions, enabling tasks to be performed in the background even when the app is not foregrounded. Additionally, this support extends to an arbitrary number of app extensions.
- The new version of the SDK provides helpful examples of utilizing background session functionality in TestSwiftyDropbox, showcasing a few usage scenarios and showing how to incorporate this feature effectively into third party projects.
- In the previous version of the SDK, serialization errors could lead to app crashes. In the new version of the SDK, serialization errors are now instead propagated to the application calling the SDK, resulting in a more stable and reliable app experience. There is a new case in the
CallErrorenum,.serializationError, available in route completion handlers. - Stone now generates SDK code based on Jinja templates. This approach is significantly more maintainable than the previous string concatenation approach.
- Unit test coverage has been significantly increased.
- Integration tests from the previous version of the SDK are still applicable and are used in the new version of the SDK, ensuring that existing integration scenarios can be maintained and validated.
- The new version of the SDK offers an example of integrating with SwiftUI projects, in TestSwiftyDropbox.
- It is now possible to mock API responses in the SDK, facilitating the writing of tests that simulate different API behaviors and scenarios, ultimately enhancing the robustness of their own testing process.
Breaking changes:
- The new version of the SDK no longer supports Carthage as a dependency management option. If you previously relied on Carthage, you will need to migrate to another supported method such as CocoaPods or Swift Package Manager.
- In the new version of the SDK, it is now necessary to specify the final location for file downloads at the start of the load operation, see download style request. This differs from the previous behavior where the location could be deferred until the completion of the download process.
- Due to the removal of Alamofire, public Alamofire types have been removed from the new version of the SDK. The
SessionDelegatefrom the previous version of the SDK has been removed without a direct replacement. AlamofireServerTrustManagerin the new version of the SDK does not have a direct replacement. However, you can implement certificate pinning by providing a URL session authentication challenge handler. This allows for custom authentication behaviors while interacting with secure servers. If your workflows relied on these specific features in ways that are no longer implementable, please inform us so that we can better understand and address any potential issues. - In the new version of the SDK, SDK classes can no longer be subclassed. If your usage heavily relied on subclassing SDK classes, please let us know so that we can provide alternative solutions or workarounds if possible.
- Due to the extensive nature of the rewrite and the introduction of new features in the new version of the SDK, when transitioning to the new version of the SDK it is important to perform thorough testing of your codebase. The significant changes and enhancements in the new version of the SDK may introduce subtle behavioral changes or edge cases that were not present in the previous version of the SDK.