auto upgrading iOS apps - iphone

Is there some way to implement an auto-upgrade for an iPad app.
I would like to be able to have my app check for updates, and then upgrade itself.
As far as I am concerned the app can retrieve the update from the app-store, but:
I would like the interface to be app internal: User should just have to press an OK button for the upgrade to start (all this time staying within the app)
Is this possible at all?

It is possible to have display a notification to inform an update is available on you app and you can redirect the user to the AppStore, but an update can only be download from the AppStore.
This will reinstall the new version of your app. So you can't stay in the app to update (You need to go to the appStore and qui the app during the update).
Internally, you can only update some content for you app (not add new native code) but not with a real AppStore update.

Apple does not allow apps to download, install, or execute code that is not included in the original app submitted to Apple. The App store upgrade cannot be automatically started.
the best you can do is determine if the app store has a newer update, then prompt the user to install it by linking directly to the app page in the app store. They will still have to click the correct buttons to start the process.

Even if it were possible, it's not allowed by Apple. Your app will be rejected.
Unless you only update contents of your app, e.g. cooking receipts.

Related

iOS: iPAD to Univeral App upgrade quandary

I have two versions of my iOS App - FooBarApp for iPAD and FooBarApp for iPhone each with its own Bundle ID (com.foobar.fooBariPad for the iPAD app and com.foobar.fooBar for the Phone App) Both have the same functionality - searching and buying the same products.
I have created a new version of the iPhone FooBarApp which is now a Universal App and can run on both iPhone and iPAD. However I already have a large user base of users who alreadey have the iPAD apps.
I'd like to retire com.foobar.fooBariPad iPAD App, and ask the users to now download the new Universal App version com.foobar.fooBar. To do this I created a new version of com.foobar.fooBariPad, which is a forced update, and which on startup, prompts users to update to the new version of the app. When they accept the hand-coded update button, it redirects them to the appstore to update the App.
Kludgy I know, but I did this because there is no direct way to update the old iPAD app to the new Universal app (as they have different bundle ids)
Unfortunately Apple Rejected this with the message:
"Design Preamble Your app includes an update button or alerts the user to update the app. To avoid user confusion, app version updates
must utilize the iOS built-in update mechanism. ... Next Steps Please remove the update
feature from your app. "
In other words they want this to be a forced upgrade.
We are thinking of just removing the previous iPAD App from the Appstore, but it may cause confusion. Would appreciate any smart solution to this problem, which will prompt users to switch from the old iPAD app to the new Universal App with the least friction. Perhaps push notification is the answer? (but if so then how)?
FOLLOWING onnoweb 's answer below, I got this from a friend who saw the way Dunkin Donut's had implemented this. Just in the messaging (not a tech fix)
Maybe it's a matter of terminology in the foobariPad app?
I've done something similar (EOL-ing one app and asking users to switch to the new one) without any complaint from Apple. We did it by showing an alert to the user saying something like "We are ending support for this app. Please use this new app with the same and better functionality." and then a button that took them to the AppStore if they didn't have the new app installed, or if they did then we did an openURL() to the new app after tapping the button.
Maybe it's not clear to Apple that you're redirecting users to a new and different app rather than a newer version of the app the user is in?

Updating App Store image for production iOS App

I released a new iPhone App recently, but once it appeared in the App Store following Apple's review, the App Store icon was surprisingly ugly; so I want to replace it right away.
However, whilst I'd expected to be able to do that through iTunesConnect or the Developer Portal, I haven't been able to find any way to revisit all the App meta data and screenshots etc. that I'd uploaded during the App ID registration phase.
My suspicion is that I may need to make this minor change to the App officially, as a version update; can anyone confirm this, or suggest how I should be replacing the App Store icon image quickly, please?
Bad news. Seems like you have to release an update for this purpose. Check this link
It states
Beginning January 9, app screenshots will be locked in iTunes Connect once your app has been approved. New screenshots may be uploaded when you submit a binary for an update to an existing app or a new app

Can't test iPhone app update as an update

I have been working on an iOS app update and am ready to submit it, however I am having a small issue I am concerned about. I create an ad-Hoc version for testing and when I try to synch the update over to my phone via iTunes it won't give me the 'update' option next to the app. The buttons in iTunes says 'remove'. iTunes actually forces me to first remove the old version of the app and only after it is removed, iTunes gives me the option to install the new version and then the app works fine. The only problem is that this is not really testing the update process and I am concerned that once I release the app to the app store my users will have the same issue where they will not be able to just update the app, they will have to remove the old app first and then install the new version. Any idea what might be going wrong here?
iOS takes care of updating Apps, as far as bundle identifier in your info-plist is the same, any newer version will show as an update in iOS. But in iTunes things work differently. You don't have to worry about these things.
If you want to test effects of updating an App, Install the old version from AppStore. Connect your device and Run the project from Xcode. Now this will work the same way as updating your app.
There is no problem from your part. Maybe this time iTunes is not smart enough to know that your ad-hoc version is an update one or maybe the version of the app on iTunes and on your phone is the same. I've made a lot of update to my apps, when you submit a new one to AppStore your user won't face this problem. They will find an update button for your app :).

Is there a way to password protect the download of mac app from appstore?

In one of our project we have 2 binaries, one for iPhone and other for mac. These two application communicate each other to achieve the functionality. We want the user to download and install the iOS app first and then let him download the Mac application.
Is there a way to restrict the user, if the user try to download the mac app before downloading the iPhone app?
Short answer: If you're referring to the Mac App Store, then no.
Long answer: Both, the App Store and the Mac App Store give you no way to control who downloads your app and you are not able to get information about what a user already downloaded.
You could of course ask for an e-mail address in your iOS app and make sure your users register to a server before you e-mail them a link to a private download page (not the Mac App Store).
General advice: I think there is something wrong with the design of your app. It's not clear to me what you're trying to achieve and I bet your users won't either. If you want to make sure they pay for the iOS app before using the Mac app then just alert them in case they downloaded the Mac app first. You need to write some custom service to check for this of course. If there is some functional problem that requires the iOS app to be launched first then you should solve this yourself and not put that burden on the shoulders of your users.
You could allow anyone to download, but simply block any operation until the iOS app has sent some kind of approval token to a server or iCloud for example.
You have to download mac application first, and after downloading you can check if user downloaded iOS app or not, but before downloading you can't check the downloading state of iOS app, because application will upload on appStore not on your personal store.
After downloading iOS app set some flag value on server, and check this flag value on mac app downloading, it it is 1 then download else show alert.
After iOS app downloading -> Set flag value (ios Download=1) to your server.(make web service for this).
After downloading mac app -> Call you web service to check that flag value. if it is 0 then show alert to download iOS app first.

Re-Installing IPhone App From Inside The App

I want to find a way if it's possible to re-install an IPhone app from inside it?
Let's say my users have the app already installed in their phones and now new version is released, can I make my app such that it will check over internet if new version is available and if it is, download it and ask the user to install it. If user says yes, it will first un-install the current version and will install downloaded version.
Is it possible anyhow?
Apple wont allow this.
For one reason, un-installing the app removes all the user documents (if applicable), so theres no way to preserve user data.
Apple already has a medium for updating (iTunes App Store).
If you want to be able to check if there is a newer version of your app, you can do that simply by checking a text file (for example) on your server, and notifying (by UIAlertView possibly) the user that there is a newer version of your app. But again, Apple already has a standard system in place. (Badges on the App Store icon)
probably not because to uninstall an app it requires the app to be closed
You don't have to do that. If you upload a new version to the app store, a notification badge will appear on the app store icon on your users' phones. You aren't allowed to install apps any other way than through the app store, anyway.
It depends on your app and what you want to update. It's not possible to reinstall the native app, but you can download data and update your app using that data. For example, we have an app in the store which is mainly a webview inside the native app. The first time it launches, it uses the internal data, but checks our server if there is an update. If there is an update, it downloads remote data and replaces the internal. It's what most magazines do for updating their libraries.