box / box-ios-sdk

iOS SDK for the Box Content API
https://developer.box.com
Apache License 2.0
122 stars 113 forks source link

Make `URLSession` Configurable #927

Open tobihagemann opened 4 months ago

tobihagemann commented 4 months ago

Is your feature request related to a problem? Please describe.

We are unable to configure the URLSession beyond the default settings, see: https://github.com/box/box-ios-sdk/blob/a395222866dd441f474f25fbe15837ae37662e68/Sources/Network/BoxNetworkAgent.swift#L61

This restricts our ability to create background URLSessions with custom configurations, particularly concerning setting session identifiers and shared container identifiers.

Describe the solution you'd like

We propose updating the BoxNetworkAgent to create the URLSession based on some sort of configuration. One way could be to extend the BoxSDKConfiguration to accept a URLSessionConfiguration.

Describe alternatives you've considered

There isn't really an alternative. Since we're implementing a File Provider extension, we require the URLSessions to be configured as a background session.

Additional context

We are willing to contribute to implementing this feature and are open to creating a pull request. However, we would appreciate guidance from you to ensure the feature aligns with your best practices for your library.

arjankowski commented 4 months ago

Hi @tobihagemann,

Absolutely, I encourage you to contribute to the project 💯 As you've probably noticed, we strive to avoid introducing breaking changes in the project. Additionally, it's a requirement for incoming changes to have test coverage.

But before you embark on that journey, I'll just mention that we're currently putting a lot of effort into the new box-swift-sdk-gen🚀, which should be officially released this year. It's entirely generated using our tool, which creates the SDKs based on our public API. As of now, the project is fully functional, but we're constantly developing it, which may result in breaking changes, though they shouldn't be significant.

arjankowski commented 4 months ago

In the new SDK, when creating a BoxClient, you can pass a NetworkSession, which accepts the parameter URLSessionConfiguration that you mentioned here. You can find more information at this link.

tobihagemann commented 4 months ago

Oh, we didn't know about this new SDK. 😮 And indeed, it would probably already solve our issue if you're able to pass a URLSessionConfiguration. I guess, we'll take a look at it. Will there be a new tag in the near future, or will it stay at v0.1.0 for a while? Or what would you recommend for us?

arjankowski commented 4 months ago

Hi @tobihagemann, I've just released a new version v0.2.0, which includes our latest changes, so I recommend using it :)