phrase / ios-sdk

Phrase Over the Air iOS SDK
https://phrase.com
Other
14 stars 3 forks source link

New strings values are not available on updateTranslation completion handler #51

Closed h-leroy-betclic closed 1 year ago

h-leroy-betclic commented 1 year ago

New strings values are not available on updateTranslation completion handler

On PhraseSDK 4.0.1 (spm install) when calling Phrase.shared.updateTranslation or Phrase.shared.updateTranslation(for:), the strings that have been synchronised can't be retrieve in the completion handler.

Scenario (run on simulator iOS 16.1 - OTA release are in development status):

I use an HTTP proxy that confirm the sync is done with new strings value. I start the sync before func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) end. => I expect to use the new value in the completion handler as the documentation is telling it (may be it is a regression).

I use the following to retrieve the strings value :

None of these give the right value. BUT on the next launch, the string values are the last synchronised values.

github-actions[bot] commented 1 year ago

Hi h-leroy-betclic,

Thank you for your report.

Please note that updated translations downloaded through the SDK will only be visible once you re-start the app or manually refresh, e.g. by reloading the view controller (you can, for example, do this on a successful callback)

If this didn't answer your question, please submit a report directly to our Support team.

In order to further troubleshoot and replicate your issue we require more information about the issue and the organisation you belong to. Please reach out to us separately using the contact form while being logged into your Phrase account or send us an email via support@phrase.com.

Please sure to include the following information:

Thank you for your understanding.

Best, Henning from the Phrase Technical Support Team

Comment by Henning

h-leroy-betclic commented 1 year ago

Even i reload view controller, i will get the same old values : if it's not ok in the completion handler, it still will not be ok a step further in the view controller, that is calling the exact same function (NSLocalizedString). It's a bug/regression in your sdk.

The feature you sell is to refresh strings between appstore delivery. Imagine i create an OTA release :

It's just not possible to an OTA solution to be longer than an appstore delivery... the second step should not exist.

winkelsdorf commented 1 year ago

@h-leroy-betclic Thank you for your message and the issue report.

I was able to reproduce your issue, it is related to iOS caching the content of the already existing Bundle. The new content is not reloaded, even after the files have changed.

We are investigating a way around this limitation. Keeping you updated here.

h-leroy-betclic commented 1 year ago

Hi @winkelsdorf , Thank you for fixing the issue. When do you plan to release a new version of the sdk ?

winkelsdorf commented 1 year ago

Hi @h-leroy-betclic,

sorry for closing this ticket automatically by referencing it from our prepared release. The release is upcoming within the next hours.

hth!

h-leroy-betclic commented 1 year ago

Hello @winkelsdorf, Can you merge the PR https://github.com/phrase/ios-sdk/pull/52 ? Thank's

winkelsdorf commented 1 year ago

Hello @h-leroy-betclic,

I am currently waiting for the approval. Sorry for the delay and inconvenience but the release will be available asap.

winkelsdorf commented 1 year ago

@h-leroy-betclic Release 4.1.0 has just been published. Please check if your problem has been solved and thank you again for your patience!

h-leroy-betclic commented 1 year ago

@winkelsdorf Thank's it seems ok

winkelsdorf commented 1 year ago

@h-leroy-betclic Glad to hear that and thank you for your feedback! Closing this issue now 🎉

winkelsdorf commented 1 year ago

@h-leroy-betclic An addition: Since this caused performance problems for our other customers, individual disabling of the cache is now available via 'Phrase.shared.configuration.disableCaching' with release 4.2.0. Please adjust your code accordingly.