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

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.

Related

Are there other people that are having issues with iOS entitlements with iOS version 13.1.2?

iOS Universal links (generated by branch.io) are working inconsistently across different devices.
We are using branch.io to generate links to send users to our app when it is installed, and to the App Store when the app is not installed. We have tested branch.io links on eight iOS devices. Seven devices are running 13.1.2 and one device is running 13.1. All of the devices have our app installed. When clicking on the branch.io link, five of the devices open the app directly and three of the devices incorrectly go to the App Store (one of which is running 13.1).
I have checked the apple-app-site-association file to make sure that it is correct - https://link.insponetwork.com/apple-app-site-association by using the aasa validator - https://branch.io/resources/aasa-validator/.
I'm wondering if others have noticed issues with entitlements not working as they should with their app since the 13.1.2 update came out. If so, has anyone found a workaround or any other information about this issue.
Can you check your URI Scheme deep linl mode under link settings on your Branch Dashboard? If you are using conservative mode, you might want to change to Intelligent or Aggressive mode. If the problem persists, please reach out to support#branch.io

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 ;)

Upload Application to app store with iPad support and later on iPhone Support

I have an application which is practically done and ready to be issued as an iPad version, but the problem is that later on i need to have an iPhone version of it to be submitted using the same bundle and the same app id. I know that i need to create a different storyboard or use the auto-layout, so coding and developing wise i already have it figured out, but for now i need to submit the iPad version of it and after on submit an update containing the iPhone version. Is there any pointer i should keep in mind or any special details to watch out from? Many thanks
Just upload your first version with configuration stated below screenshot
After when u want to upload with both then do config stated in belowed screenshot
It's simply possible to update your iPad app with your new universal app. nothing any importent changes for configuration at iTune but you must know well how to develop the Universal app

Lock iOS app in single app mode programmatically

Note : I don't want to submit this app to app store.
What i want to achieve :
I want simple app with one view having two button Lock and Unlock.
Lock - This button will lock device. Only this app's screen will show nothing else will be accessible even after restart same screen will show up. Home button, gestures will get disabled similar to single app mode.
Unlock - This will unlock device and switch to normal behaviour of device.
iOS :
I want this for iOS 4.3 and above.
I have checked following solutions, but these don't match my requirements
Configuration profile
Lock-down iPhone/iPod/iPad so it can only run one app
But it is manual (reboot device, open app which you want to run in single app mode). I want to do it programmatically the way i mentioned above through my app.
Guided access (iOS 6 and above)
How to lock down user to Single App mode in iOS 6, Programmatically?
I want it do for all os and programatically.
Is there any way to do this ? As i don't wan't to submit it to app store is there any private api, some hack for springboard to achieve this ?
Thanks in advance !!
As I know in iOS 7 there is a new feature which allow to do exactly what you want.
However, it's only applicable for iOS 7 (and I believe it's only applicable to a supervised devices).
1) You will need to install restriction configuration profile with autonomousSingleAppModePermittedAppIDs key (take a look here)
This is one time step and a user will need to manually accept this configuration profile.
There is another option to use MDM to install it silently, but it could be an overkill for you.
2) You should use API:
UIAccessibilityRequestGuidedAccessSession (to lock/unlock)
It is defined here
3) And most beautility part. All of it is officially document. So, you can even submit it to AppStore.
P.S. Why do you care about 4.3 or 5? They have tiny market share by now. Most likely even iOS 6 has below 20% market share already.
Update 1
Potentially, you can try to use API which sends clicks and keys (search for GSEvent in iPhone-privateapi tag). May be using these API's you can do triple home to toggle accessibility on and off.
If this work, I think you should be able to cover iOS 6. I am not sure whether both this API and triple home click were available prior that.
It looks like this private API is unaccessible anymore in iOS 7. So, probably you can ignore this idea.
Just wanted to write on this even though this is old as i needed to implement a similar solution and i got it working. The steps for me as follows and a note here is that this involves MDM and other specific steps.
My requirement was as follows. Each of the iPad at different locations has a set of apps installed.For ease of it lets assume each Dept. has their own apps. Participants open a app related to their dept. to take a test, the APP automatically Locks the iPad to single-app Mode and at the end of the test, it will unlock it self.
Supervise the iPad/iphone using the Apple Configurator.
Install the MDM related files ( Each MDM has its own set of instructions, usually involves downloading a profile).
Every MDM has a option of Single APP Mode or MultipleAppMode. Select the second option and add the app IDs to the list. (A single APP mode works pretty well with MDM's but i did not want the app to be locked to a single APP all the time).
I used the UIAccessibilityRequestGuidedAccessSession api to lock unlock the device from single app mode.
http://bobxcode.blogspot.com/2015/12/programmatically-implement-single-app.html
Thanks,
Bob
In MDM configuration, There is an option
autonomousSingleAppModePermittedAppIDs
Optional. Supervised only. If present, allows apps
identified by the bundle IDs listed in the array to
autonomously enter Single App Mode.
Availability: Available only in iOS 7.0 and later.
But this needs Supervised Device mode.

Removing iPad support from app

I uploaded an app to the App Store a while ago, but I have to delete the iPad support for different reasons. I am not talking about removing the app from the iPad App Store, only removing the iPad support. The Developer website states the following:
Developers who wish to issue updates, but remove device support, have three choices:
Fix their app so that it can work on the devices they originally set out to support.
Target a newer version of iOS that requires a newer device.
Remove their app from the store, and upload the new app with a different bundle ID.
The problem is that if I remove the app from the app store and upload it again, I can not use the same app name. That is not an option.
Is there any way out of this mess?
Answering my own question - no, there is no other way! I ended up creating a decent looking iPad app to fix the problem.
Apple will not allow you to remove support for iPad if you ever offered it on a given app name. Further, the app has to be well enough designed for iPad that Apple likes it enough to allow it to pass. We had an app rejected for this reason.

Resources