iOS App Store, forcing reinstall - ipad

Is there really no way of forcing an app update from the app store to do a complete reinstall? (say your database needs to be updated but you have no real need (or desire) to migrate existing data).
(I am wondering if the only way of getting a new version of an app on the device without the update function, is to complete remove the current app, give the updated (new) app a new namespace/identifyer and upload that from "scratch", and then hope the user will actually notice that the app is now a new app...).
Any suggestions?
Thanks in advance.

The 2nd option seems like a bad idea, users wont have any idea that your app has a new "version" so wont go looking for it, so you would have to send them notifications telling them about it. I cant imagine you'd get a huge percentage of people changing over
If all you need to do is delete the old database and start again you can do that. This question has an answer for an sqlite database. Basically you just need to keep track of which version of the model the user has, and when they upgrade, you delete the old one and set up a new database from scratch

Related

Swift InAppPurchases - give previous customers a free lifetime subscription

So my App was released to the AppStore some months ago and was free to download. I gained like 2k Users. Now I am implementing an auto renewable Subscription model, so future users can use the demo app for free and subscribe to get the full content.
How ever I want to thank my Users "from day one" by giving them free access to all content without paying the subscription.
Is there a "given way" how to implement this because it seems like a common scenario. If not, does someone with IAP experience has a smart workaround how to handle/implement it?
Thanks guys :D
The answer from Paul didnt work for me. Neither did any other solutions.
But i managed to find a solution.
In case you use CoreData as database within your app, you can use the solution i found out for my app.
The idea:
If someone downloads the app from the appstore, he will receive the latest database version in your app.
If someone updates your app, coredata will perform a migration. And this migration updates from bottom to top trough your database versions.
Through this behavior we have the opportunity to dinstinct the two cases.
Solution: We create two new database versions. One will only be updated by the former users. We will set a flag here. The new Users will never get in touch with that.
The first new one will create a new attribut field in any entity (e.g. User) e.g. isFormerUser as a Bool. You can set it per default on true.
Now we create a second new one (the latest one). Trough a Core Data mapper it will take the $source attributes if it migrates.
So by that case, all FormerUser were set on True and will keep that attribute.
Here will the default be False, so if $source didnt exist, set it on false (new Users).
This solution is nice because it gets set once by that migration/update and you dont have to carry hardcoded stuff in your app. Now just create a load/get Function from CoreData for that attribute and set a variable to use in an if-statement.

Apple's Cloudkit Migration

This may be too simple of a question for SO, but for those that have used both Cloudkit/Core Data, do you have to migrate data in Cloudkit similar to Core Data if you make any changes to the database itself?
For example, if you adjust your Core Data model at all, you have to go through a migration process in order to make sure the App still works appropriately. Is Cloudkit the same way?
From my understanding there is no migration process necessary (judging when I make changes and run them in the simulator just fine), but I want to confirm before I upload to the App Store. Thanks for any help!
This is covered in detail in the Deploying the Schema section of the CloudKit Quick Start.
The quick summary is that you do need to push changes to production using the CloudKit Dashboard. But keep in mind that you can only make limited schema changes so plan ahead well. You can add new fields. You can add new record types. You can't delete anything.
Keep in mind that users of your app will be using old versions as well as new versions. The latest version of the app will of course know about any new additions to the schema. Old versions of the app won't know about the new fields and record types.

how i can avoid my data lost when i updates my apps in iOS?

When using PhoneGap, do users lose all of their saved data when they update an iOS app downloaded from iTunes?
I am hoping that anything stored in either Webstorage feature in Construct 2 will be preserved whenever someone downloads a new version of the app from iTunes, but I'm afraid to build a whole Apps only to have a bunch of upset users when they update the app. I know when I build an app in Objective C I have to go through some hoops to get the Core Data store to migrate correctly.
The other option is to mirror the data to an external server/database, but I want to avoid that expense and complication if I can.
If you change anything in the tables in CoreData then you would have to implement migration for the tables by creating a new version (check apple's documentation here: Lightweight Migration)
Otherwise if you don't change anything updating the app would not make the user lose any data.

Titanium Alloy on iOS: When a user gets an app update, it deletes and resets the local database

I've released a Titanium App on iOS through the App Store. It uses Alloy models, views and controllers and therefore saves all data that the user inputs via the Alloy .save() method. I've recently received some feedback from a user that after their most recent update, their data was wiped and none of their saved information was intact.
I thought that the Alloy database was saved into the private documents of the device, therefore keeping it intact when the user updates the app. Is that true?
What kind of things can I troubleshoot to see where I have gone wrong? I have not written any code that would remove anything from the database.
I thought that the Alloy database was saved into the private documents
of the device, therefore keeping it intact when the user updates the
app. Is that true?
That's correct.
I've recently received some feedback from a user that after their most
recent update, their data was wiped and none of their saved
information was intact.
It sounds like a whole database was removed. This may happen if you delete an application. I think you better test it by yourself. It is hard to help if we can't see any source code. I would also recommend you to look if there are no differences in Alloy (Maybe your updated version of the app uses newer version that is in something different)... maybe the data wasn't removed ,but was only changed the name of the database / tables. Hard to say...

ios how to manage DB with iphone app version by version?

My question contains two ways:
1. For example I have an app which is on appstore and containing sqlite database. After sometime I want to update app version without changing database schema. what happened when app will be updated on user's device ? would all data in old database removed or just remains with same database and data ?
2.For example I have an app which is on appstore and containing sqlite database. After sometime I want to update app version with changed database schema. what happened when app will be updated on user's device ? its must changed the DB file but how can we save old data entries those are in old DB version. I have read many posts but still confused which approach I should use.
Thanks in advance for Helping
It is quite simple. When updating the application documents folder remains intact, so you can assume that the user data continues to be available.
For case 2 make sure you do not compromise the data in your update routines at the first start after the update. The app should detect that it is in a new version and modify the schema (e.g. via SQL scripts) while taking care of not deleting user data.

Resources