We are currently experiencing the following weird issue with our iPhone app. As the title says, NSUserDefaults
is losing our custom keys and values when phone is rebooted but not unlocked, and this is happening on a very specific scenario.
Context:
We are using the
NSUserDefaults
in the app to store user data (e.g. username).Our app has Location enabled on Background Mode.
We are experiencing this issue only when distributing over the air or by Testflight. If I drag and drop the .ipa (same that was distributed over the air) into my phone using Xcode I don't experience this issue.
Situation: The user installs the app, logs in and the username is stored on the NSUserDefaults
successfully. Then, the user switches OFF they device and turns it back ON and lets the phone sit around for some time before unlocking the screen.
Problem: If in that time a significant location change is triggered, the app comes to live on background but the NSUserDefaults
is empty (Only has some keys from apple but none of our custom keys). Then, the NSUserDefaults
never gets this keys recovered no matter what you do (e.g. if you unlock your phone and open the app you will see the keys are still missing).
Any help or idea will be truly appreciated :)
[[NSUserDefaults standardUserDefaults] synchronize];
after setting your user name to make sure the data is flushed? If so, you might have found a bug and need to file a Radar. – Stylobate