I am making a app that blocks certain websites. I was wondering if there was any way to create a "Delete Lock" (where the user has to enter a passcode set previously in order to delete the app)
No you cannot control the users over deleting your app with passcode. Apple does not provide those restrictions for the developers.
May be you can do it if your device is Jailbroken.
You can go upto having a passcode inside your app to use the app.
Related
I'm working on the development of a "check-in" type app for my iPad repair company. I'd like to enforce that a pass code is removed so I have full access to diagnose the device. This could be either removing a passcode programmatically or just providing instructions on how to remove a passcode and refusing to allow the repair request to be submitted without ensuring it was removed by the user. Preferably, I'd like to be able to do this in Swift but Obj-C is fine.
I would be working directly with schools and businesses as my main customers so I would be using an enterprise development account. No worries about App Store reviewers getting their messy hands on my API calls.
Currently all of my prospective customers are using an MDM with deployment functionality so that part should be a breeze.
There is no API to remove passcode from a iOS device. But you can use one of the Mobile Device Management tool to remote wipe the device to reset the passcode.
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.
I am trying to develop an app which is targeted towards saving time and no. of clicks of a user.
Is there any way by which I can activate the installed app without unlocking the phone by using the power button?
No, thats not possible at all, not even close
The app can be opened when the user press on it, or if another app opens it using a schema.
Is there any way within the iOS SDK for an app to delete itself?
I'm seeking the following behavior:
If a user fails to enter the correct password to log in (5 times)
The app deletes all user data AND deletes itself from the iPhone.
I understand how to delete all user data. I'm just asking if it's possible to delete the app as well.
No, only the user (or iTunes, or Xcode's Organizer) can remove applications from the device.
Not at all. All your app can do is delete its user data and refuse to do anything else. Removing it from the system is entirely up to the user.
No, it's not possible. I don't know about jailbroken devices though.
It may seem a bad and useless idea to an iPad user, but suppose the iPad belongs to a restaurant and it wants to show it's menu to the customer on iPad for god knows what marketing reasons.
The restaurant's goal is that the user can only use the app which shows the menu and nothing else. He shouldn't be able to close the app without shutting down the device because the restaurant is afraid that the user may change some settings, e.g. uninstall the app. Also, if he or the personel do shut down the iPad, the app should autostart right after the device boots.
From what I found, it is not possible on a non-jailbroken device, see e.g.:
Make iPad Single App Device (or startup lock?)
shutdown iOS programmatically
Am I right here? Is it really NOT possible on a non-jailbroken device?
The restaurant of course doesn't plan to publish the app anywhere, so Apple's approval is not the factor here. The restaurant just doesn't wish to do the additional effort for jailbreaking many devices (it's unreliable, voids warranty etc). The restaurant also doesn't want to let the user install the app on his own device, the app should be only on the restaurant's device.
Even if this would work, a question arises how the tech support would uninstall or update such an app, since it's locking the device completely. From the app itself?
Thanks!
If that iPad is belonging to some restaurant they should encase the device in some sort of casing wich should cover the home and power buton. Problem solved! :P
A way to do it manually:
Make the following selection Settings->General->Accessiblity->Guided
access and enable it and set the password
Open the app to be locked
Triple click the home button continuously that's it its the app gets
locked
To unlock triple click the home button continuously give the
password While it asks that's it app is unlocked
Note:
This solution works from iOS 6 only.