implement guided access on iPad using Mobile Device Management - ios

I am stuck in this problem for two days now..
What I need to do is make a small iPad application that when the user launches, sends the iPad in kiosk mode/guided mode. I am required to use MDM for this (I am using Meraki for MDM https://meraki.cisco.com/products/systems-manager ).
However, I am not able to put the little pieces of information together to make one complete solution.
I know the following things:
I need to make my device "Supervised", which I have already done using the Apple Configurator. But since then, when I connect the device to my mac, XCode does not show it as an option on which I can run my iOS application. Now it just shows the installed iOS simulators. I don't know why this has happened..!!
I have created a .mobileconfig using meraki, and it is successfully installed on my iPad. However, whenever I try to alter the created .mobileconfig file in order to introduce some more payloads, my iPad refuses to install it saying that "The profile cannot be installed due to an unknown error". There is no use of installing the meraki-generated .mobileconfig file as-is because I have to include App Lock payload in it in order to provide guided access too. However, this payload option is not available when i am using the meraki. So in any case, I need to alter the available meraki mobileconfig file.
In case i create my own .mobileconfig file and include the required payloads, How do I place it on MDM so that it can install the configuration file on the device when required
I am totally confused..!! Please help me out..!!

There are many parts to your question and I'm not 100% clear on what the overall objective is, but based on what I understand here are your questions and my answers:
I need to make my device "Supervised", which I have already done using the Apple Configurator. But since then, when I connect the device to my mac, XCode does not show it as an option on which I can run my iOS application. Now it just shows the installed iOS simulators. I don't know why this has happened..!!
This is because when you mark a device as supervised it will get wiped out and any profiles installed will be deleted. For Xcode to be able to run an app on a device it needs to have the development profile installed. If you open Xcode->Window->Organizer after your device is connected to your Mac, it has a button named "Use for development", just press that button and XCode will be able to run your app on this device.
I have created a .mobileconfig using meraki, and it is successfully installed on my iPad. However, whenever I try to alter the created .mobileconfig file in order to introduce some more payloads, my iPad refuses to install it saying that "The profile cannot be installed due to an unknown error". There is no use of installing the meraki-generated .mobileconfig file as-is because I have to include App Lock payload in it in order to provide guided access too. However, this payload option is not available when i am using the meraki. So in any case, I need to alter the available meraki mobileconfig file.
If you go to the Meraki home page and navigate to MDM->Settings (make sure your profile is selected in the dropdown), make sure enforce restrictions is selected, you should see a section named "ios Supervised Restrictions". In this section there is a setting called "Single App Mode". You should enable that setting and enter app name or bundle Id there. Note, the moment this configuration (.mobileconfig) is applied the iPad will launch your app in single app mode and you will not be able to do anything else with the device other than use your app.
In case i create my own .mobileconfig file and include the required payloads, How do I place it on MDM so that it can install the configuration file on the device when required
You can upload your own .mobileconfig in the Meraki webpage ->MDM->Profiles->Add new->new mobile profile, in the resulting page there's a drop down for Configuration which has an option to "Upload a custom iOS/OSX configuration profile".

Related

App Center iOS build unable to verify integrity

I'm working on a Xamarin application and I'm doing iOS builds to run and test on different devices using App Center.
Everything was ok, on Apple Developer I created the Ad-Hoc certificate, the provisioning file, and the identifier and it was all good.
During the last implementation, I added on Entitlements the Associated Domain due to enabling the possibility to use the App Link and let the user open the application using a link provided via email.
I updated the Identifier adding the feature also to it and I downloaded it and uploaded it again to the dedicated branch on App Center, but now when I try to download the app to the device I receive this message:
Unable To Install "App Name". This app cannot be installed because its integrity could not be verified.
I tried different ways trying to solve it:
Create a completely new certificate with a new identifier, provisioning, and .p12 file
Checked Entitlement feature list correspond to the identifier list on Apple Developer
Used different versions of SDK and Xcode on App Center
I already searched around on the web but they talk about the provisioning file list but I already checked and it is updated.
Thank you for your help and for your suggestions.

How to get app running on connected device

I'm trying to get a simple NativeScript app running on my device (iPhone) connected to my mac. The simple app works fine on the simulator, but fails when a device is connected. (Its the HelloWorld app from the tutorial.)
When running "tns run ios" from my mac, I get the following error:
Unable to apply changes on device: . Error is: ENOENT: no such file or directory, scandir '/Users/edscott/Library/MobileDevice/Provisioning Profiles/'.
I also tried installing Sidekick and using it to auto generate the Provisioning Profile and Certificate. It successfully generated the provisioning profile and certificate. (I did not change any configuration in my app, if I needed to point something at these files or copy them somewhere, I did not. Maybe that is the issue?)
From SideKick, when selecting my connected device, setting the Build Type to Local and the Build Configuration to either Debug or Release, and then clicking "Run on Device", I get a very similar error:
Error detected during LiveSync on for /Users/edscott/HelloWorld. Error: ENOENT: no such file or directory, scandir '/Users/edscott/Library/MobileDevice/Provisioning Profiles/'.
The only change I made to the app was to change the package.json file and set the nativescript.id value to a unique app id.
FYI...The provisioning profile and certificate created by SideKick were placed in /Users/edscott/Library/Application Support/NativeScriptSidekick/CodeSigning/HelloWorld/ios directory.
Also, I created a new apple id to use with SideKick. The apple id I use on both my phone and mac has 2FA and apparently SideKick can not generate provisioning profile and certificates for apple ids with 2FA.
I plan to experiment with using NativeScript to build an ios app that reads data from iBeacons. Therefore, running on the device is critical for me (as opposed to running on the simulator).
I'm looking for help in what to try next.
Update:
Based on the comment added below, I opened the provision.mobileprovision file that was created by SideKick using Xcode - this created a provisioning profile in '/Users/edscott/Library/MobileDevice/Provisioning Profiles/'. However, I was still not able to run the app on my device. I'm now getting the following error:
Unable to apply changes on device: xxxx. Error is: Command xcodebuild failed with exit code 70.
In addition, there are multiple errors reported about the following:
Error Domain=IDECodesignResolverErrorDomain Code=1 "No signing certificate "iOS Distribution" found"
However, based on some other similar issues posted online, I tried running the app in Xcode directly, and that worked (after I turned off debug execution based on another online comment associated with XCode 10).
So now, I have a way to run the app, but it won't run from the CLI or SideKick app, it will only run in Xcode.
If you want to run your applications on iOS devices you need to specify valid Certificates and Mobile Provision as mentioned here (which you get I think from Apple developers account):
There are a lot of similarities between Build and Run on Device. For example, you still need to provide a valid certificate and mobile provision to deploy your app on an iOS device. To avoid repetition with the previous chapter, we will focus only on the specific requirements needed to run your app on a device.
The only prerequisite to run your app on a device is to have one
connected to your machine. You also need to verify that the device is
detected in Sidekick. The Devices pane provides information about all
connected devices and their current state - reachable or not. To open
the Devices pane, click on the Devices button in the bottom right
corner of the client.
This is not required on simulators. However, if you want to create a demo that you could showcase on an iOS device, it`s better yo use Nativescript Playground.
The comment from Manoj, ultimately solved this problem. Therefore, I'm adding it here as the answer:
Double click the Provisional Profile and open it with Xcode, it will
automatically copy the Provisional Profile to the library folder.
Initially, I had to use Xcode to run this on my device. However, after restarting NativeScript Sidekick, I was able to run this app on my attached device using NativeScript Sidekick.

enterprise distribution of iphone app in xcode 6.3.1 [duplicate]

I have an enterprise application that is deployed via a web service. This application has installed on devices previously, but now it is refusing to install on all but one device. Many of my colleagues have downloaded the application without a problem through our web service, all this is, is a simple link on a webpage linking to an IPA file.
Steps already checked and taken:
Provisioning profiles valid.(both development and ad-hoc distribution)
Checked other devices (4s,5s) to make sure it does install properly.
Checked security to and from the device.
Checked connectivity to and from the device. ( Wifi, VPN, Cellular, )
Devices updated to 8.2 + , application target 8.2.
Checked the storage on the device to make sure its not full.
I am aware of installing the application through iTunes, however I have not yet had the opportunity to do so.
EDIT: I should mention that this application previously installed successfully on the very same device that I'm having a problem with now, This has only come around since a release made only recently.
Speaking from experience try these steps ...
Make sure you are serving the app using URL like itms-services://?action=download-manifest&url=http://example.com/App.plist
Make sure that the App.list points to the App.ipa over https connection
Make sure that the https connection uses valid SSL certificate from trusted Certificate Authority
If still does not work then ...
Connect the device to your Mac
Open Xcode
Open Window > Devices
In Devices window find your device in the left panel and select it
On the bottom left of the right panel in the window click the "up arrow in box" icon, this will bring up the Device console
Clear the console
Try to install the app on the Device and watch the logs for error messages

How do I programatically check ‘iPhone Device Configuration profile’ is installed or not on device

Is there way to verify whether a particular device configuration profile is installed or not on iPhone through an iOS application? I have an iOS application which is distributed via ‘enterprise distribution’ mode and I have created a device configuration profile (generated using iPCU) where I have disabled some of device features i.e. screen capture.
As per current process I am sending device configuration profiles with email, and the recipient has to install it from the email they receive. Since it is a manual process some people are installing the app without installing the device configuration profile.
I would like to restrict this, so that if a user has not installed the profile, then s/he should not be able to run my application.
it is not possible to read profile file. but this below link is clear more your doubt
Programatically check if there is a configuration profile installed or not on an iPhone
Retrieving data programmatically from a Configuration Profile in IOS
iOS - Prevent iPhone Configuration Profile from being deleted OR check to see if it's installed
Installing a configuration profile on iPhone - programmatically

loading... application installation on iPad got stuck

We are new to iOS development and this is our first application for iPad that we are developing for our organization.
We have developed app in Xcode 4.1 with iOS SDK 4.3.2 .
We have created provisioning profile and added 4 iPad device UDIDs in the profile.
We have created app.ipa file and kept it on our internal webserver ( along with app.plist ). Then we have created simple html file which contains pointer to app.plist.
We try to install the app on the device by accessing the html file URL through safari. However the application gets stuck in "loading... " state and after long time it gives error unable to download the application. We have checked the network connectivity , the webserver logs and everything seems to be fine.
Another odd behaviour we have observed is that while the application installation is in loading state and we connect the iPad to the development machine. When itunes prompts for syncing the device we cancel the sync. Then we disconnect the cable and connect and again when it prompts for syncing we again cancel it. At this time the application gets installted. But this is happens on only one iPad. On 2 other iPads it doesn't get installed and stays in loading state. On one iPad it got installed without issues.
We are now stuck because we have to distribute this application to many users in our organization and not able to do so.
You could check the following
The provisioning file is for ad hoc distribution
The provisioning file is selected in the Code signing Identity -> Release section of the build settings of your project
You selected Product -> Archive, then pressed "Share" when the Organizer window opens.
Next step: make sure the provision file is selected
Next step: Select "Save for Enterprise Distribution". The application URL has to be the exact web address on the ipa file
You can find more detail about the process in this article
Thanks all for your answers which pointed to many useful resources for us newbie developers.
I found the cause of my problem. The device requires to connect to apple sites to verify the certificate. Since the device was in our internal wireless network and I had removed proxy settings from the device it was not able to connect. Once I gave the proxy settings it installed without problems. One point to be noted though was it was not working with proxy authentication enabled hence I had to enable IP address based access for the device.
Thanks once again for you responses.
You have problem with your provisioning profile.
The problem is that you don't sign app properly and iOS5 has changed notification that app cannot be installed with loading message only, on iOS4 it was message and app would be deleted from springboard.
You need to set in project properties under build settings code signing identity on the ad-hoc certificate that you have created. When you build app for archive sign it again like you did before with the same certificate and then try to install on device.
I use beta builder for creating index, plist and other files for web server, but you can use whatever you like.
http://www.hanchorllc.com/2010/08/24/introducing-ios-beta-builder/

Resources