I have just installed the latest update to the iPhone.
I also have deleted my app from the iPhone and noticed that a previous install of my app has left the Settings bundle on my phone after I dis-installed the app. Now, I have a Settings bundle without the related app.
This should not be possible as the older version sandbox should have been cleaned up or deleted when I dis-installed the previous (older version ) of my app.
What's going on? How did this happen? What programmatically happen that could even allow the Settings bundle to persist?
In order to solve this situation, I did a full restore to the original factory settings and this eliminates the app Settings bundle that had no related app. Restoring your contacts, etc did not cause an issue.
Having said this, it still seems strange that you can un-install an app and have the settings bundle remain. But, it is a good design for their to be different sandboxes for different installs of the same app which keeps everything ring fenced.
Related
I'm currently adding iCloud support for my app, but i noticed that in the iCloud -> manage storage settings my app's icon is missing. I've added the Icon-Small.png/Icon-Small-50.png plus their #2x versions in the xcode project in the "Resources" folder, then added their names in Info.plist but it still shows white.
What am i doing wrong?
Once you show up in Settings, a little like registering your device for push notifications, there's some caching happening. You should try resetting all settings and installing fresh. Also if it's a physical device, not the simulator, try to delete the app, set the date forward by over a day, install fresh, and it should bypass that cache.
Did you build the app, compile it, and added the icon very later on? This is usually a caché issue. The best way to go around this is to uninstall the app from your device and do a clean build.
So I have this app that is already on the app store. To get support for multi language localization we recently changed the localization configuration.
Old configuration:
./Localizable.strings
New Configuration:
./Swedish.lproj/General.strings
./Swedish.lproj/Localizable.strings
./Swedish.lproj/Settings.strings
If I remove the old version and install the new one everything works as expected, but if I leave the old version on the phone when I install the new one, the translations in ./Swedish.lproj/Localizable.strings won't be visible. So it seems to me like the old ./Localizable.strings is still left on the phone, hiding the new ./Swedish.lproj/Localizable.strings. The translations in ./Swedish.lproj/General.strings and ./Swedish.lproj/Settings.strings both works.
My fear is that if we release the update as is the users would be forced to uninstall the app before installing the update to get the translations to work, which would mean that they lose all their saved data. So you can see why this issue has high priority.
If I have understood the cause of the problem correctly, my question is how do I get rid of the ./Localizable.strings already present on the phone? The more general question would be how do I solve this problem?
Are you testing this in debug mode and Xcode is installing the new binary onto the device/simulator or are you doing an Adhoc build-and-archive and then test the update via itunes?
I know that xcode at times will not overwrite files when doing an build and run in debug mode. A touch of the file will not help, but only a clean-all, exit and restart of both Xcode and simulator cures it.
If you are using the adhoc build then the complete app bundle sould be overwritten. If this is not working something serious is at fault.
I have an application already on the store and would like to release an update. Since my app deals with databases and I've had to change some parts of it, I would like to ensure that the update does not affect the existing functionality in any way once the user updates from the App Store.
What I did was this - install the first version of my app on my device. Changed the update's version in info.plist to 1.1 and run it via xcode (and install on my device). But what happens by doing this is some of the changes I made to the XIBs do not show up. It looks as if the app was only half-updated (if you know what I mean)
Is there any way to update an existing app programmatically without having to go through the app store and then find out it could lead to a disaster?!
Thanks for any help!
I would double check your build configuration. Between building the two versions of the app, I would recommend a "Clean All" just to be safe. The process you described works to verify updates. The only other alternative I can come up with is to create Ad-hoc distributions of both versions of your app, and install those.
I previously used the Settings bundle on in my iPhone app but am finding it an increasingly annoying overhead to my code and have decided to move all the settings to inside my app.
When I next issue an updated app is there a way to have the old Settings Bundle removed without having to somehow ask users to re-install?
Just to let you know, I have also removed the Settings bundle from my app (settings are now accessible in-app).
I too was wandering what would happen when users updated, as the app remains in the settings menu when developing.
I can confirm, however, that the app successfully disappears from the settings menu once it's updated from the App Store, without having to delete and reinstall.
Application Settings.bundle contains a version number, which is automatically generated during build. From build log I can see that new value is written there, also when looking inside the file itself in MacOS X Finder I see correct updated value.
Settings in iPhone simulator or in real iPhone shows me the old value. Removing application and reinstalling is so far the only way I've managed to get the new updated value visible.
Question: how can I force iPhone Settings application to read my new latest updated bundle file?
Some background info, which might or might not be related: I install application only via Xcode into both simulator and iPhone. Is this the problem? Just found this in Apple docs, not sure what it actually says. Seems to contradict itself (last chapter)...
Each time you reinstall your application, iPhone OS performs a clean install, which deletes any previous preferences. In other words, building or running your application from Xcode always installs a new version, replacing any old contents. To test preference changes between successive executions, you must run your application directly from the simulator interface and not from Xcode.
So Xcode always replaces old content, but to test changes I cannot use Xcode? What was that? Done both (after installation via Xcode) and didn't see new values in settings. Any ideas how does it actually work? Do I always have to make non-Xcode installation?
Try cleaning and building. It seems that xcode caches dates and doesn't notice the change that your script is making. I've had similar things happen, clean always fixes it, but it is indeed a nuisance.
Make sure to shut down the Settings app running in the background on device. It looks like Settings caches settings while it's running - but pulls the updated values when the Settings app is re-launched.
In my case, it seems that my modified root.plist, created/edited via the Xcode property list editor, just wasn't being saved.
There was no problem at all with the Settings Bundle being copied over to the iPad. A quick cmd-S followed by a rebuild and go/debug updated Settings on the iPad straight away - no app uninstall/reinstall even needed. You'd think there'd at least be a haven't-saved-it warning from Xcode, as there always is for code source files.
I just tried this and it worked.
In Xcode go to : Window->Organizer,
then view installed apps on the connected iPad/iPhone, remove the app, then recompile and run your app on the device.
I think the issue has something to do with the iPad's cache.