Lock iphone home screen from my app - iphone

I want to lock the device home screen programatically from my app. Is it possible in IOS?
In my app, if the user is idle for 1 minute, i want to lock the device. This is the scenario.
Thanks
Jithen

you can lock the phone using bellow code
[UIApplication sharedApplication].idleTimerDisabled = YES;

You can lock your own App by Adding a block view on Appdelegate's window. But locking your device is the responsibility of OS. I think if you somehow implement this then still aplle might reject your app on it.

Related

How to turn Auto-Lock to Never in Swift?

Is there any Swift command to actually set the Auto-Lock to Never or a specific time period? I want to create a simple app that only has two buttons: one is to set the Auto-Lock to Never and the other one is to set it back to iOS default (1 min).
So when a user open this app and tap the Never button, s/he can open other apps but the iPhone or iPad will never auto lock while running the other apps. If s/he is done with other apps, s/he can open this app again and tap the Default button to set the Auto-Lock back to 1 min.
I understand this can be done from the Settings but I am just curious how I can do it from the backend using Swift.
I am new to Swift, btw.
Thanks much!
So when a user open this app and tap the Never button, s/he can open other apps but the iPhone or iPad will never auto lock while running the other apps
You can't do that. You are sandboxed. You cannot affect what happens to the user while running some other app.
When app is open, try to disable the idleTimer in viewDidLoad
UIApplication.shared.isIdleTimerDisabled = true
When app is closed to open other apps, try to -enable again idleTimer when yourViewController disappears, so put this in viewDidDisappear
UIApplication.shared.isIdleTimerDisabled = true
You need to make use of this API call to set the idle timer disable and enable.
This is in objective-C. Just convert it to swift. The API is available in UIApplication.h
-(void) onApplicationDidActivate:(NSNotification*) notification
{
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}
-(void) onApplicationWillDeactivate
{
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}

Relaunch application when the screen is unlocked

When the application is on and when we leave it to idle, the screen gets lock. When the user unlocks it (slides), I need to relaunch the application.
For that i used the following code in the applicationDidFinishLaunching method.
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
Still the application doesn't relaunch after the screen is unlocked. Help, what should i do to make this work ?
You do not have to do anything for that. If an application is open before locking the iphone, it will be open, if you unlock it again.
setIdleTimerDisabled just ensures, that the device won't go to sleep on its own, while your application is running. In most cases you shouldn't use this application-wide.

Prevent iPhone from locking when connected to charger and app is running

I'm writing an iPhone app. When the app is running and the iPhone is charging, there is no need to lock the iPhone. Is it possible to prevent the locking of the iPhone when the device is charging and my app is running?
You can subscribe to UIDeviceBatteryStateDidChangeNotification notification to get the moment when your iphone begins/stops to charge. Then in case iphone is charging you can set idleTimerDisabled property in UIApplication object to YES to prevent device to go to sleep:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:#selector(updateBatteryState:)
name:UIDeviceBatteryStateDidChangeNotification
object:nil];
- (void) updateBatteryState:(NSNotification*)notification{
[UIApplication sharedApplication].idleTimerDisabled =
([UIDevice currentDevice].batteryState == UIDeviceBatteryStateCharging);
}
P.S. If user decides to put device to sleep with sleep/wake button there's no way to prevent him of doing so
This is not possible with current SDK.
EDIT: hmm, haven't got the question correctly from the first read - look on other replies for correct answer; my guess was, you were asking about if it possible to prevent appearance of the sync/charge screen when connecting device via usb or to the wall outlet

cancelAllLocalNotifications in applicationWillTerminate?

I want to cancelAllLocalNotifications and setApplicationIconBadgeNumber to 0 when my application is terminated (either by the OS or by double tapping the home button and killing the app). I simply added these two calls to my primary app delegate code:
-(void)applicationWillTerminate:(UIApplication *)application
{
[application cancelAllLocalNotifications];
[application setApplicationIconBadgeNumber:0];
}
Existing notifications are still running and the badge number remains set?
applicationWillTerminate: is not called by the OS when it kills your app. The OS just kills the process without notifying your app about it. There is no documented way to execute code at this moment.
You should use applicationWillResignActive: instead.
Starting with iOS 4.0 applicationWillTerminate is not called for applications when they are killed in the background. Apps are put in the background when you hit the home button now or otherwise switch apps.

Turn Auto-Lock Off from an Application

Users want Auto-Lock turned off while using my navigation utility. Is it possible to control Auto-Lock from an application?
[also, "How to stop your iPad from sleeping or suspending"]
This will prevent the screen to dim and go to sleep.
[UIApplication sharedApplication].idleTimerDisabled = YES;