Selecting the exact date that my new app version will be made available on a marketplace - iphone

I know that when you publish a new version of your app, it goes through an approval procedure from iOS, Android or Windows Phone marketplaces. Perhaps not very thorough one like the first time your post your initial version, but still you need to wait a bit until your new version is available to users.
I was wondering if this scenario if possible.
I post my new version for approval
Marketplace verifies and approves the version but does not publish it
I get a notification that my new version is ready and approved
I press the last button to publish the already approved version
Do you know if there is such a possibility in the various marketplaces?
This would be useful for marketing purposes (make a new version available on all marketplaces at the same time) or even to minimize technical issues (minimizing the different versions running on clients, especially if there connect to a server that otherwise would need to be backward compatible).

Yes, you can choose when to release an app (or new version of an app) at a time you choose, once it has passed the certification/verification process.
What you can't do is have it available to all users at exactly the same time. When you make the new version live it make take up to several hours before it has sync'd to all servers that each store/marketplace uses. This means you can't say that "at 9am on Tuesday you'll be able to get the new version" without actually making it available several hours earlier so it has time to spread to all servers. This may or may not be an issue.
In terms of managing backwards compatibility of your backend with regards to different versions of your app(s) this is something you will need to manage yourself. There is no marketplace which will automatically force all installed versions of an app to be updated before they can be used.
You will need to manage this within the app (i.e. check if it's the latest version and if not force the user to upgrade before they can continue.)
Realistically you should create your server to be able to support multiple versions of the client. Even if you do force all users to update before they can use a new version of the app/backend you'll still want to test the live servers while the old client apps are still being used.

I can't vouch for the iPhone, but for Windows Phone, yes, when you submit an app update, you can set it to publish manually, and with Android, there is no certification, so you can just publish it whenever you're ready.

Related

How can flutter app gets the new version update from the play store or the Apple Store automatically

How can we make the flutter app to make automatic update whenever we release a new version of the app into the store. but I don't want to use the pop up to alert the user to update I want to update automatically without letting the user even know we update it.
As said in the comment, if you publish to Google Playstore or iOs AppStore, they will handle the updates for you. You just have to upload the new version (just set the release number correctly) and, when the validation is done, their system will notify/update the app. I don't know how other stores behave, but I'm guessing that's the standard behaviour now.
Instead, if you need to bypass the store functionality and perform the update "by yourself", I don't think that is gonna be a simple task. Apple simply doesn't allow installation from other sources than their store, so I fear it may be simply impossible. On Android, on the other hand, I know that's possible, but it will require some user interaction beforehand, since the "installation from unknown source" authorization must be provided to the app that downloads/opens your .apk file, and the procedure may vary from a device to another, so I fear there won't be a single mechanism that will work everywhere.
In any case, the base mechanism will probably require some HTTP GET by your app towards some webserver that will reply with the latest version: the app should then compare the received version number with its own, and then proceed to the download of the package (the URL for the download can be provided along with the latest version number). After that, you have to manage somehow to install/update the downloaded file.
I personally used this approach with Flutter on Windows 7 and newer, where there are no store constraints and I can simply run and download the .msi or .exe file for the latest version, and works just fine.
I think you are looking for the concept of codepush which was loved by many React Native developers.
In Flutter, I think you might want to check out flutter_code_push if this fits your needs.

Restrict Users to download updated build from iTunes

I had a serious bug in my itunes latest updated build. I want to restrict users to update the current version. How?
any suggestions will help me a lot.
do you mean you want people who have the buggy version to update ?
unless you have push notifications setup with your app, or a means to display them a message, or have their emails as part of a sign up process, your very limited to what you can do.
If you have published the new version, just make it clear in the version notes that this includes a bug fix.
Currently, there is no functionality built into the App Store to force updates.
In your initial version, you should add a way to force updates, and then test to ensure that it works. Typically, you will have a callback to the server and a way to display a message and link them to the update in the store.
If you don't have such functionality, and you are making any API calls, you can add a version number to the API call, and if the version isn't sent, then you can refuse access, and preferably send them a message.

Control iPhone app getting updated when connected to old webservices

We are looking to develop an iPhone App communicating to webservices that is hosted internally at the customer site. Note that this is our first iPhone native App and using monotouch to do the job.
We will be maintaining the code and release updates periodically. However, the users needs to update only the version required based on thier local webservices and backend processes. For example, if the user is still using the version 1 webservice don't need to update the App at all, where as the users with version 2 needs to update to the matching App and so on.
We want to control the updating process or at least find a solution where if the user updates to the latest App, it won't come up with an error because the connected webservice is out of date.
We were thinking of the following processes, but nothing seems to be solving the issue.
1) Leave the app on the appstore but control the update processes somehow based on the webservices version. So when a user try to update, it will not update unless the required webservices is available. (Annoying part on this is users may be prompt that there is an update available even though those are irrelavent for them.)
2) Control the update outside the AppStore. Something similar to In-house development.
3) Stop the updating process entirely from the client, and only trigger the updates from the webservices end.
i.e Inform the client that it needs to update when the webservices updated, and the client will run the update process at that point.
However, it could be tricky, if the customer's updated to the webservices version that is not the latest.
1) There is no way to do what you want to do with Apple's AppStore, either an app can be updated or it can not, you can't add additional conditions that requires running code on the device itself.
2) That leaves in-house enterprise deployment - but this is restricted to deploying to your own company, you can't deploy to different clients this way.
3) You can't stop updates from your app, since you can't run code when an app is updated.
There is a 4), but it requires more work on your end:
4) Have your app support support older webservices, either through some sort of configuration the user can set or it query the web service for its version and selects accordingly. This has the additional advantage that an update can be deployed to all the devices first, and once all the devices have been updated, update the web service.
I would propose a fourth option: dont control/limit updating :)
Ship an app that uses a Wrapper object to access the service and that object internally handles different versions of the webservice.
apart from that.
1) doesnt work (if I get what you're doing: trying to influence the appstore updating)
2) sounds doable, and if you dont care for the appstore, it works
3) why? users love updates :) + there will be critical bugs

What is Apple's policy with regards to disabling old versions of an application?

My employer has a free iOS app in iTunesConnect that was originally released a couple of years ago and has received various updates over time. They now wish to stop supporting older versions of the application (1.x) and disable these older versions of the app.
My questions are:
Can we stop users from re-installing old versions of the app? If yes, how?
How do we disable/remove old versions of the app in iTunesConnect?
What is Apple's policy regarding disabling/removing old versions of applications?
I'm not an iOS developer and am unfamiliar with the whole Apple application development process. I have searched the web as well as the Apple developer centre and I've read through the Apple Developer Program Terms and Conditions but I haven't been able to find answers to any of my questions.
I have managed to find information about removing an application from sale but this removes the entire application, rather than just specific versions. (Deleting a free app from iTunesConnect)
David Smith's article (http://david-smith.org/blog/2012/06/20/hacking-paid-upgrades/) on Paid Upgrades mentions the ability to provide fixes for previous versions if they're not deleted from iTunesConnect. When I log into iTunesConnect, I only see the current version of the app listed so I'm assuming prior versions have been deleted already. I would, however, like to confirm that users can no longer download old versions of the app.
This article mentions users being able to download old versions of apps from iCloud (http://www.macrumors.com/2011/06/09/icloud-supports-re-downloading-some-discontinued-apps/) - can we prevent this? One option would be to mark the the version as having a "legal issue" but what ramifications does this have? and if I can't see the app in iTunesConnect then how do I do it?
I found a post asking about how to force a user to upgrade the application every time a new version is released but this doesn't answer my questions either. We want the users to upgrade but we're not wanting to force it programmatically. (Can I force an iPhone user to upgrade an application?)
I've also found lots of posts asking how to revert to previous versions of an app in the app store but again, this is not what we're wanting to do. We're wanting to disable older versions of the app but leave the most recent versions alone.
Before the flame wars begin:
Users that are unable to update to the latest version of the app for whatever reason are able to use a mobile website in place of the app. The website has the exact same functionality.
Can answers please be kept on-topic rather than getting into great debates over whether one should/shouldn't maintain legacy versions.
Thanks in advance :)
Users can typically only ever download the latest version of an application. There are a few ways I think they can get around that but in general only the latest version is available to users via the normal means.
If, however, you absolutely must prevent the old versions from being released you can do so when submitting a new update. Right after you say "Ready for Upload" you will be asked a question about if this update was for a 'legal reason' if you click YES then you will be given the opportunity to disable old versions of the app from download.
As to Apple's policy on this...I have no idea. But I can't think of any policy that would require you to support older versions moving forward.

Automatic updates of iPhone apps

Is it possible to automatically force an update of all installations of an iPhone app without requiring interaction from the users?
According to this thread it is impossible to do so for apps deployed on Apple's public app store, but another more recent thread describes a way to at least inform users of updates, but still forces them to take action manually. With the Enterprise Program becoming available to most companies now (the requirement of 500+ employees has been dropped) can we hope to achieve it with the Enterprise Program?
The reason I'm asking is that automated push-updates of applications are a common demand and indispensable requirement by many businesses that use mobile devices. Blackberries have always won over iPhones in the past, because they had this feature while iPhones did not. Has the situation changed now?
Update: Apparently, there is another problem. Apple has a limit on the size of app downloads of 20MB over GSM which to my understanding also applies to deployment within the Enterprise Program. Unless all users consistently have access to a WiFi connection, this is another limitation that needs to be taken into consideration.
Update 2: I have submitted a feature request to Apple. Maybe it helps to expedite the improvements.
I don't believe you can force an update, though you can:
Remotely disable an existing app, if urgent, and
Design your app such that when it is outdated it alerts the user and provides a one-tap link to download a new version (technically two taps, one to load the web page with the app and one to install the new version).
It's not the ideal system you note would be so helpful, but it's an improvement over the earlier system where users had to sync with iTunes at a desktop/laptop in order to perform the upgrade.