iOS私有API:锁定设备并关闭屏幕

5

我正在制作一个与jailbreak相关的应用程序,该应用程序在用户启动应用程序时锁定设备。 我尝试了来自GraphicsServices.frameworkGSEventLockDevice();,但这不起作用,因为它锁定了屏幕但未关闭屏幕电源。 有没有另一种方法可以在没有MobileSubstrate的情况下锁定屏幕?

2个回答

3
作为另一个选择,可以查看这个答案,它使用SBDimScreen()。你可以将其与GSEventLockDevice()一起使用。
看起来,现在(iOS 5+),您需要向应用程序添加entitlement才能成功使用此调用。如果以前没有做过这件事,请参考此示例。显然,在这种情况下,所涉及的entitlement必须更改为com.apple.backboard.client
您还可以看看@VictorRonin是否已经尝试过这个,因为他评论了我链接到的问题。我在越狱的iOS 4.2.1设备上测试了SBDimScreen(),但我的较新设备目前无法运行此测试。我会在稍后在iOS 5.x上测试并发布更新。 注意:我从Elias连接的答案中有一个不同的调用适用于iOS 6。

我正在学习MobileSubstrate,也许比这更容易...谢谢! - Davide Di Febbo
1
嗨@Nate,你能帮我模拟多点触控吗?非常感激。http://stackoverflow.com/questions/17907811/how-to-simulate-multi-touch-with-gsevent - Suge
它在IOS 7上无法工作,而控制台显示一个警告(<Warning>: -[BKWorkspaceServerManager _handleEvent:] Unknown GSEvent, type = 1014; Ignoring.)。 - M.Shuaib Imran
@ShabiTech,许多私有API在iOS 7中停止工作(或开始需要授权)。如果您想了解如何在iOS 7/8上执行此操作,您应该发布一个新的问题。为了历史目的,应保留此问题和答案。如果需要iOS 7的新解决方案,我们需要单独提出一个问题。谢谢。 - Nate

2
看一下这几个问题:

iOS上模拟系统范围内的触摸事件

在iOS上模拟系统范围内的触摸事件而不越狱设备

如何向iPhone OS发送触摸事件?

这个想法是你可以模拟系统范围内的事件。其中一个事件是关机事件。如果你模拟它,它将关闭设备并锁定它。

顺便说一句,你可能会对GSEvent感兴趣,它是甚至模拟的关键。

这里有一些有用的链接:

http://iphonedevwiki.net/index.php/GSEvent

http://networkpx.blogspot.com/2009/08/gsevent-recording-and-playback-in-30.html

此外,这种方法不仅适用于越狱手机,也适用于未越狱的手机(但是,您将无法将其发布到AppStore)。

这个方法有示例吗? - Davide Di Febbo
1
看这个。不过它可能已经过时了(我相信它是为iOS 3.0设计的):http://code.google.com/p/hid-support/source/browse/trunk/hidspringboard/Tweak.xm?spec=svn82&r=82 - Victor Ronin
1
@VictorRonin,你能帮我模拟多点触控吗?http://stackoverflow.com/questions/17907811/how-to-simulate-multi-touch-with-gsevent 我非常感激。 - Suge
1
@Bob:抱歉,我从未尝试过多点触控模拟。顺便说一句,这种方法要小心。有人在iOS 7上报告了问题。 - Victor Ronin
1
@VictorRonin,谢谢你的回答,但是在iOS 7上报告了什么问题? - Suge
1
@Bob:我看到了以下问题,并做出了假设,即苹果已经添加了使用此API的授权 https://dev59.com/p3TYa4cB1Zd3GeqPtE0y - Victor Ronin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接