We have an iPad app running in a kiosk mode deployed across multiple physical locations. We'd like to have a solution where any updates to the app are pushed automatically to the device so that the client does not have to touch each iPad they have.
Our client has an existing MDM software that notifies the user if there's an update, but since it's intended to be a kiosk we don't want the general public to actually do the update by themselves.
Does anyone know if this is possible at all?
Thanks,
Teja.
Edit: As of iOS 7, you can now force an app update through MDM software.
(Previously for iOS 6 and below):
Sorry, but with even with the enterprise program and an MDM server, you cannot force an update on an iOS device.
Your best bet would be to configure the updates so that they run automatically just by clicking once and accepting the update. That way it is safe for anyone to accept.
Sources: Own knowledge and this site.
I know that as of iOS 7, this is no longer the case. If your app is managed via your MDM solution, you can force an update.
Related
My client needs to find a way to automatically push app updates to a number of iphone 3gs devices remotely. These devices will be in guided access mode so the users will only be able to access the app in question.
I believe we have two option for distribution:
B2B custom app via the Volume Purchase Program
In-house app released with the Apple Enterprise Program
Having researched our options I can see that over the air app updates can be achieved by either:
Building an in-app update functionality to check for new updates (Enterprise only I am guessing?) and automatically update and restart the app
Using an MDM such as http://www.air-watch.com/ (as I understand Apple Configurator must have devices plugged in via USB to work?)
I am wondering if anyone can tell me whether either of those options are possible with the devices being in guided access mode?
Or are there any other solutions, which I have missed, that can automatically manage the app remotely while the device is in guided access mode?
You can solve this with an Enterprise distributed app.
App only. Update check for an OTA-Update from your app when the app is coming to the foreground (or some other metric at your clients leisure, like added time delay, etc). Basically self explanatory; you implement a call to your clients/your API to check the version and inform the user of a new one. The update can either be optional or mandatory (preferably announced by the API and changed when needed); present the user with an alert about it. The user acts upon it and you OTA install via an ITMS link provided by your API call. And that's it.
MDM. Tbh, I'm a bit on shaky ground here. Theoretically this is all possible via MDM too, however I am not sure if it is the (varying) MDM solutions or some misconfigurations, but clients usually seem to lose control after some time.
Both. Yes, you can perfectly well live with both. MDM while everything is fine, and as a backup a well structured App+API mechanism to push the OTA updates out. This is especially useful if you have customers where some departments are under MDM and others are not. So, some may get it via MDM (and if all else fails via the App itself), the rest will get it via the App.
The tradeoffs are a matter of personal preference, if there is a fully working MDM solution in place the update will be pushed out and the user however 'malicious' can do nothing against it. But the same is true for the 'App only' solution, as you have the option to not let him use the app if he does not update (either by not providing a cancel button or, as you are in an enterprise environment and there it is allowed doing an exit(0)).
From experience I prefer any solution that has the 'App only' option as it is the last fallback if anything on client side fails. Whatever may be added on top is just sugar to the cake.
While not strictly relevant, the 'App only' solution always goes well with Push Notifications when an update came out.
Like this article,
In Android, can you delete an application from another application?
Can you delete an application from another application on windows phone 7 or 8? (including
enterprise features)
and I have a same question with iOS. I know that enterprise features provide installing another application via url. but what about "uninstalls", does it possible ?
No, Windows Phone will not allow your app to access any files outside your own app's sandbox. You can't delete other apps or even access their data. Allowing an app to do so would be a huge security problem.
In iOS, it is not possible to delete an app from another application. Apple will never allow that in a normal device. I am not sure about jail broken iPhones. User has to manually delete an application for normal devices. Looks like even Windows phones wont allow this.
Wrt. to enterprise features, you can install packages, as well as view status of installed packages (installed, percent installed, pending install), plus various properties like app icon etc. But still no API for uninstalling these packages. See InstallationManager API on MSDN here: http://msdn.microsoft.com/en-us/library/windowsphone/develop/windows.phone.management.deployment.installationmanager(v=vs.105).aspx
Is it possible to make an iOS application for enterprise distribution that updates itself transparently? Saying 'updates' I mean completely updating its logic.
A possible usage of this approach is a self-service kiosk (iPad) that is maintained remotelly.
It's not possible to update application binaries directly, but I see some possibilities:
Application that have a single UIWebView and the logic is implemented in HTML5. But we can't use most of hardware specific features that can be used in native applications.
Some multi-platform framework (possibly HTML5-based) that allows to use native application features and that is compiled or interpreted dynamically.
Jailbreak?
What are really working approaches of these?
Consider getting a mobile device management service. Those are pricey.
OR:
First, enable over-the-air distribution. It will take $300/year enterprise agreement with Apple. Set up a website with the app's IPA archive and descriptive PLIST.
Then code a call-home HTTP request on app startup. You may pull/parse the same PLIST that describes the latest version; it has a bundle version in it. Compare that to the version of the currently running bundle.
When a new version is detected, the app shuts down, opens the browser on the download page. In a softer manner, just notifies the user that an upgrade is available.
I've never tried linking directly to the app's download package, but give it a try. In a perfect world, Safari would open up and ask "Do you want do download MyApp?" right away. In a not so perfect world, the user would have to click a link and then agree to download.
I think what you are looking for these days is the "Apple Deployment Program".
You volume purchase iPads which get sent to people, but that you can manage remotely - which also means management including remote updates of applications.
The only thing I'm not sure of is if you can launch an app remotely, so that you could update and re-launch an application.
Here's a guide to enrolling devices for remote management:
https://www.apple.com/business/docs/DEP_Guide.pdf
An old but good summary of the program:
http://www.speirs.org/blog/2014/2/27/understanding-apples-new-deployment-programs
Also watch the WWDC video on Managing Apple Devices for the Enterprise:
https://developer.apple.com/videos/wwdc/2015/?id=301
Is there any way to push apps to an iphone through an iPhone explorer or something else, where you can bundle up the ipa and copy it onto an unlocked device (or non unlocked even)?
How can I push an app to my device without putting it on a cydia repo? Are there instructions on how cydia does this, or would this be out of my depth (considering I dont know the intricacies of the iphone).
This is a customized app I have developed, I just need a way to push it to the device without worrying about the approval process, and I want to keep it on the device past the 3 month provisioning profile period.
After spending much time on internet for this question I present the following.
Summary
iOs doesn't allow sideloading of unsigned apps. The only way to
currently do that is jailbreak.
But there is a work around.. You could beat that using
MacBuildServer
The signing process MacBuildServer uses to cleverly skirt this
limitation is to have you use your own certificate, or to simply use
their certificate from the iOS developer enterprise program to sign
the compiled app (again, for testing purposes).
The iOS Developer Enterprise Program was designed to allow companies
to develop in-house apps for use within their organization, without
publishing them on the App Store.
An example of a business that would be part of this program would be
an event coordinating business that uses these in-house iOS apps to
check people in and perform other tasks.
MacBuildServer's demo gives you a three-click process to build any open-source iOS app you can find on GitHub, and sign it with an
enterprise certificate that allows jailbreak-free sideloading
for your own testing purposes.
Disclaimer
The ideas that are presented here are not my own i found this on internet.visit the reference for more details.
Reference
No. If you're working under the iOS Developer Program the only real way to distribute your app is via the app store. Other than that, you're stuck with ad hoc distribution and the time limit that comes with that. However, if you qualify for the iOS Enterprise Program (i.e. you're a business), you can sign up for that program and then distribute your apps in-house without going through the app store.
Without jailbreaking, your options are: app store, ad hoc (with time
limit), and join the Enterprise program
There is one other option. It's possible to create web-app and then add it as a bookmark.
But the obvious downsides are:
It's html. Even with html5 you're not going to get access to the camera etc...
2: It's open to the public (Although it's easy block access with standard security).
However question was asked long ago, but I think now it is possible with XCode 7.
How can i make my application start on the iPhone startup?
If you plan on distributing your app via the App Store, this is not possible.
As Randolfo mentions, many things are possible via jailbroken installations.
You asked this question on 10th August 2010.
Now it's 13 November 2012. I'm adding this answer for future people who have the same question.
Now in iOS 6. There is a built in feature called guided access. You can achieve this feature using guided access. Still now you can't do this through code.
Please check these links:
enable-guided-access-ios
tip-how-to-turn-on-guided-access-in-ios-6-put-ipad-into-guest-user-mode
You can only do it with a jailbroken phone.
Only some very specific background applications can be started right from the iphone startup.
This includes VOiP applications for instance:
"Including the voip value in the UIBackgroundModes key lets the system know that it should allow the application to run in the background as needed to manage its network sockets. An application with this key is also relaunched in the background immediately after system boot to ensure that the VoIP services are always available."
As taken from:
http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH5-SW15