Update Enterprise App in the background [duplicate] - ios

I have an iOS enterprise app that we are wirelessly distributing to our devices. Currently the app polls our server once a day to see if there is an app update. If there is, we try to install it by having the app call the following code:
NSURL *installUrl = [NSURL URLWithString:[NSString stringWithFormat:#"itms-services://?action=download-manifest&url=%#", plistUrl]];
[[UIApplication sharedApplication] openURL:installUrl];
This causes the app to prompt the user with an alert dialog to install the update. If they click install, the app closes and the update is downloaded and installed.
I am wondering if there is anything for enterprise apps for iOS 7 similar to the AppStore's automatic updates? I would like to be able to update our app without the user having to press an update button and be able to update at a time when the user won't have to wait for it to install.

The answers in these questions will give you a correct answer:
Auto-updated iOS application for enterprise distribution
Update In-House Apps -- iOS Enterprise Developer Program
Updating iOS apps automatically with an MDM + Enterprise license
There is a solution for this though by Stephen McMahon, but I did not test it.
http://www.techhui.com/profiles/blogs/auto-updating-enterprise-or-ad-hoc-ios-applications

EDIT: I realise now that I misread the brief, the OP was asking for background automatic updates. Not possible for enterprise apps, but (relatively) easy to do upon first open. I'll leave this here as this was the info I came looking for when I found this question.
Here's what I did for my project. I exported the app in Enterprise mode against our In House Distribution certificate and uploaded the folder to public web space. Have your app check for updates (the method to use is an exercise for the developer) and when one is detected, open a web browser to a URL like the following:
itms-services://?action=download-manifest&url=https://www.yourcompany.com/path/to/manifest.plist
You'll see a screen not unlike the one below:
If you use Cordova/PhoneGap to develop your app, be sure to include an allow-navigation rule for these types of apps.

Sorry, but there is no way how to download the updates on the background for enterprise apps.

Related

New requirements for iOS app - keep them accessible to users/customers

I got an email from Apple that apps now require iOS13 + storyboard for app launch screen for existing apps. (I do not use storyboard for main app functionality)
I have developed a couple swift1/swift2 based for schools a long time ago. (Still works well)
Can I somehow ditch the app store and then provide direct access or download for school pupils?
i.e. is there any way forward to simple keep the apps-as-they-are? Maybe limited download availability?
Or will I have to take plunge back into app-building?
The requirement of a Storyboard launch screen is only when you need to submit an app update. If you are not wanting to update your app any more, then it won’t stop working because of this new requirement.
Regarding distribution outside of the App Store, you could use Adhoc distribution which requires you to know the device ID’s of the devices you want to install it to.

How to check whether apps that enable off-store download but don’t require full jailbreak are installed: iNoJB, TweakBox, Zestia, Emus4u in Ios device

I am trying to detect the jail break on the application startup and don't know how to check for the application other then the cydia like Tweakbox, iNoJB etc are installed or not.
This question is different from other jailbreak question which detect for only cydia app not tweakbox and other is because i want to look all the application like cydia not just only cydia. and other answers in stack overflow are just checking for the cydia application and access for certain files that exist in sandbox
Those apps have nothing to do with jailbreak, full or not. All of them are properly signed iOS apps. For example, GBA4iOS is signed with "Meridian Medical Network Corp." enterprise certificate allowing it to be installed on any device. That violates ToS and can get your account terminated but works.
Given that and the fact that recent iOS versions closed private APIs for getting a list of installed applications, there's no way to achieve what you want. Furthermore, Tweakbox, iNoJB, AppValley are not even apps. They're websites with links to enterprise signed applications. Some of them require you to install configuration profile but its only purpose is to put a web link on the SpringBoard that leads to their website. You can download the profile and check its contents in any text editor, it's just a plist with signature at the end.
There are two methods:
Download Apps without App Store via iOSEmus App
Download Apps without App Store via AppValley
Method 1; iOSEmus is designed to enable users to download different kinds of apps on your devices without jailbreak and it won’t even prompt people to enter their Apple ID.
Method 2; AppValley is one of the popular tools that enables users to download countless apps without jailbreak. It also requires no Apple ID. With it, you can get as many paid apps as you want for free.

Check if a particular app is installed or launched on iOS 9

Does anybody know how to check if a particular app is installed or launched on iOS 9.
Previously I used a PhoneGap plugin that returned a list of running apps so I could check it (using sysctrl). But it doesnt work on iOS 9 because they have closed many backdoors. It could be a list or just a check for a particular app (process or budle name or whatever else). As I understand ulrscheme is not working for this purpose, because this should work for any app, with or without urls setup.
App is designed for Enterprise Distribution model so we can use some hacks if needed because it`s not for App Store distribution and verification.
This is not possible in iOS9. Check this article.

How to auto-update apps managed by MDM?

I'm building an in-house app that is distributed via the AirWatch app catalog. The app always runs with Guided Access enabled and all devices running it are managed by AirWatch. My questions are regarding auto-update:
Is there a way that AirWatch can force the update immediately or as soon as the device comes back online, without asking for the user's input? If so, how does the app being open affect this behavior? How does guided access being enabled affect this behavior?
Is there a link from AirWatch, perhaps an itms-services:// link, that the app can call to install the new version if a web service had indicated that it's no longer the latest version? If so, how does Guided Access being enabled affect this behavior?
Is there any other good model for remotely updating the app that will spread the update as quickly as possible and under the above conditions? The solution can be using MDM or a custom web service or both combined.
Thanks a lot for your help!!
If your devices are running iOS7 and you have your app Deployment settings set to "Auto" (as opposed to "On-Demand") the device will automatically take the update once it processes the APNs notification to do so. If the device is locked/offline it will typically check for outstanding APNs messages within a minute or so of being unlocked or coming back online.
What I don't know is since your app is in guided access mode if you're receiving a pop-up to install the new version. I've seen previously where if the app that requires an update is open iOS will prompt. What we have done to battle this is embed a check in the app that phones home to see if the app is current. If the app is NOT current the user can't do anything until they update their app.
Regarding a direct-link to the App Catalog to update the app that might get tricky with guided access enabled. Before you even try to tackle that issue understand that the app catalog webclip URL contains the UDID of the device as of AW7.1 (I think). Since the UDID is no longer programmatically accessible code-side AirWatch allows you to push the UDID upon app installation in the Deployment/Application Configuration section. You can embed {DeviceUid} into the key share on the device which will make it accessible for that applciation, hence allowing you to create the appropriate App Store URL within your app.
Good luck
honestly I didn't work with AirWatch. But I don't think that Apple provides a way for automatic update of ad-hoc or enterprise apps.
Well, I can describe a solution for an enterprise app I developed last year. Hope it will help you somehow.
First of all, I made it as a part of our secure website. (a little test flight)
Here's how app update works
When the app launches it sends special request to a server asking if
it is outdated and a new app version is available. (+ servers sends
url for new version installation (with itms-services://))
Then
if update is required, app fires alert with description of new
version, if user taps update, the app opens Safari where the user
is able to install a new version.
We made to different kinds of alert, optional (minor version change) and compulsory(major version change). With later variant user is unable to get rid of alert view, so he has to update the app.
You can update your internal app through the AirWatch Console and applications versioning.
I never used it but I imagine that at the end of the new version process, there is a way to push the updated app to the related devices. If the Push Mode is set to Auto, the user won't have to do anything and the app should be updated. If it is On Demand, the use will have to initiate the process from the App Catalog. From for the latest option, you have the solution to send a notification to the user.
It is also possible to retire or inactivate older versions to only keep the newest one.
If you have access to AirWatch Online Documentation, I recommend you the page Using Add Version for Applications. If you don't, contact your administrator and ask for all the pages located in Mobile Application Management -> Internal Applications and the page Using Add Version for Applications.
You should try it with a single device though ;)

Can I update an iOS Enterprise App in the background like an App Store app can?

I have an iOS enterprise app that we are wirelessly distributing to our devices. Currently the app polls our server once a day to see if there is an app update. If there is, we try to install it by having the app call the following code:
NSURL *installUrl = [NSURL URLWithString:[NSString stringWithFormat:#"itms-services://?action=download-manifest&url=%#", plistUrl]];
[[UIApplication sharedApplication] openURL:installUrl];
This causes the app to prompt the user with an alert dialog to install the update. If they click install, the app closes and the update is downloaded and installed.
I am wondering if there is anything for enterprise apps for iOS 7 similar to the AppStore's automatic updates? I would like to be able to update our app without the user having to press an update button and be able to update at a time when the user won't have to wait for it to install.
The answers in these questions will give you a correct answer:
Auto-updated iOS application for enterprise distribution
Update In-House Apps -- iOS Enterprise Developer Program
Updating iOS apps automatically with an MDM + Enterprise license
There is a solution for this though by Stephen McMahon, but I did not test it.
http://www.techhui.com/profiles/blogs/auto-updating-enterprise-or-ad-hoc-ios-applications
EDIT: I realise now that I misread the brief, the OP was asking for background automatic updates. Not possible for enterprise apps, but (relatively) easy to do upon first open. I'll leave this here as this was the info I came looking for when I found this question.
Here's what I did for my project. I exported the app in Enterprise mode against our In House Distribution certificate and uploaded the folder to public web space. Have your app check for updates (the method to use is an exercise for the developer) and when one is detected, open a web browser to a URL like the following:
itms-services://?action=download-manifest&url=https://www.yourcompany.com/path/to/manifest.plist
You'll see a screen not unlike the one below:
If you use Cordova/PhoneGap to develop your app, be sure to include an allow-navigation rule for these types of apps.
Sorry, but there is no way how to download the updates on the background for enterprise apps.

Resources