Prevent iCloud from downloading older app version - ios

I have uploaded a new version of my app which contains some DB (Used CoreData) changes (server side changes too). I have added new model so that the DB changes do not causes any crash.
Downloading the app freshly works fine. If an older version of the app is in cloud, then when i try to install the app (shows cloud icon), older version gets downloaded and casues a crash. Is there a way to prevent the iCloud from restoring/downloading the older verion?

The following steps solved my problem.
In itunes connect click on the app icon.
Select 'Rights and Pricing'
Now select 'Manage iCloud settings for this app'
Now check the versions that you don't want the users to download from iCloud.

Let me credit #grgarside for his answer here -> https://apple.stackexchange.com/a/254181/121124
iTunes Connect → My Apps → app → App Store → Pricing & Availability → Last-Compatible Version Settings → Available Versions.
is the new flow sequence, you are looking for.
I am writing this as a new answer, as the user interface has changed a lot as compared to the 2013 version.
here is the 2017 version

No, you can't prevent users from using their own backups, and you shouldn't either. You've probably handled the update badly if your app crashes on restoring the version (possibly updating?). Core data model versioning and migrating is what you need when updating the core data model in the current app version and want to keep backwards compatibility.

Related

Do I have to rebuild my app for every iOS new version release to make it available at the AppStore?

I think this is not required, at my personal experience only new iOS specific features in my application will require a new release, but a personal client is asking me to confirm this.
With every new XCode release, do I have to rebuild and publish my application in order to make it available at the AppStore of new iOS Release?
If there is any official documentation that proves this will be appreciated!
You do not need to re-publish. Apps remain in the App Store until the developer pulls it (or very rarely, Apple pulls it due to policy violations).
There is likely not any documentation that explicitly states this, but consider a scenario where somebody gets the new iPhone 13 and opts to restore it from iCloud. Data is pulled from iCloud, but apps are restored by re-installing them from the App Store. If apps disappeared from the App Store because they haven't been re-compiled, then anybody who upgraded their phone would discover that a large number of their apps had disappeared.
Anecdotally, my company has apps in the App Store that haven't seen a new submission in over 2 years (since iOS 12). Those apps are still in the store.
You can test your iOS app using the new Xcode 13 and if you got some bug using the new iOS SDK, you can fix it and submit a new version to App Store using the new Xcode.
Its prudent to test your apps on each new OS (preferably before the public release) but in most cases no new release is necessary. Over time you may want to update your app to take advantage of new features or to better support new devices. No app will never last forever but you will likely be able to go some time before having to update.

How to manage different versions of same iOS apps in app store for different clients

We have a browser application and this application is using by different clients. Each client is using separate database and service. Regularly(quarterly) we are releasing the upgrade with enhanced features. But some of the clients may not upgrade to the latest. So different clients are using different versions of our product. There is no issue with this because each clients are using their own Database and service. Recently we build up a iOS app for the same application. In app store we can upload only the latest version of our app, how the clients in lower version can install respective version of their app? Latest version app may not work with lower version of service and Database
Different clients needs to install different versions of same app from app store.
In App Store Connect (where you manage your apps in the App Store), you can choose which versions you want to remain in the App Store after you release a new version. The purpose of this is to allow an older version to be downloaded in case the user have an older device or iOS version that don't support the new app version. - So I guess this feature is not really helping in your case.
I would suggest you make the same version for everyone, and then within the App (I assume your clients have a login) based on their user selects what you want to present them. - Connecting to their old database and deactivating the new features as an example. This will also give you the opportunity to showcase that there is new features which they may want to opt-in on.
You can release a completely new app for each version. Ex. YourApp 1.0, YourApp 2.0 (This is not uncommon, but it's usually more if the same app is radically changed/improved, and you want the old version to remain for some time until you retire it completely).
Hope this clarifies a bit :)

Testflight vs. App Store Installation (without loosing data)

We want our testers to be able to:
1) Replace an installed Tesflight version of our app (test-version) when installing the App Store released version of our app (app_store-version) without loosing their data (all inside the app bundle, Core Data and other DBs, Keychain data, User Defaults).
2) vice versa
Replace an installed app_store-version with an test-version without loosing the above mentioned data.
The only information I found is in the Testflight documentation:
...If you already have the live version of the app installed on your
device, the beta version of the app will replace the live version.
When you’ve downloaded the beta app, you’ll see an orange dot next to
its name that identifies it as a beta. ...
I did not find any information regarding the opposite case (... if you already have a test-version installed, the app_store-version will replace it...) nor if the above mentioned data is kept when replacing the app.
Apple Developer Support told me that they do not have this knowledge. :-/
My Questions are:
1) Is is possible to replace a Tesflight version of our app (test-version) with a App Store released version of our app (app_store-version) without loosing the above mentioned data?
2) Is is possible to replace a App Store released version of our app (app_store-version) with a Tesflight version of our app (test-version) without loosing the above mentioned data?
3) If 1+2 is possible, which parameters are taken into account to replace/ not replace an app? (BundleID only, BundleID & BundleVersion ...)
You can override TestFlight and App Store version like regular updates. But, in order to do that, the Next Version should have a build number greater than the installed one.
That means that you cannot install the TestFlight version, release it on the App Store and upgrade, because the build numbers will be the same

Apple iOS 64-Bit App Update

I have updated my app to 64-bit just fine. Everything is according to Apple's standards. I pushed the new version to the store and it got accepted on the 1st of July 2015.
Now, here is the problem, some customers are reporting that the app is not being updated automatically from the store. In other words, they still have the old app on their devices. And when you go to the store to manually update it, it installs a new version of the app next to the old one and they end up with 2 apps (same app) with the old and new version. Also some other customers are reporting that they are seeing mixed data when they lunch the new app (like data from the old one still shows up on the new one)
FYI, the bundle ID and the app ID are the same, nothing has changed except the app version and build number!
I have been publishing app for few years now and I have not seen such a problem. Any idea why this is happening?
Thanks in advance!

iOS Cordova App not showing version updates available

Currently when making a new release android customers are given a notification that a new version of the is available for download.
I have searched for solutions on here (stackoverflow) but the only related answers are for apps developed in xcode.
How can I notify customers when releasing a new version of the app to itunes?
You could store the current app version in your database and use appVersion plugin to get the installed version on the device. Then you can compare the versions (on start-up e.g.) and notify the user somehow that there is a new version available. You can even provide add link to your app in App Store.
I'm using this plugin: https://github.com/WellBload/cordova-plugin-app-version/blob/4234061/README.md
It does require some maintenance because you have to update your database every time the update has been released. The choice is yours.

Resources