我试图在给定的时间段后自动锁定设备。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
UIApplication.sharedApplication().idleTimerDisabled = true
NSTimer.scheduledTimerWithTimeInterval(30, target: self, selector: "lockScreen", userInfo: nil, repeats: false)
return true
}
func lockScreen() {
print("locking screen")
UIApplication.sharedApplication().idleTimerDisabled = false
}
然而,它似乎不工作。有没有其他的选择?有市场上的应用程序称为CellControl,这样做,所以我知道这是可能的,只是似乎无法弄清楚如何。
我也试过 obj-c 取自this answer
这是从公共应用商店下载的他们的应用程序工作的片段。你可以看到,只要我点击主页按钮并退出应用程序,他们就会强制锁定屏幕。
我也看到使用私人框架,这肯定会要求拒绝:
char *gsDylib = "/System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices";
void *handle = dlopen(gsDylib, RTLD_NOW);
if (handle) {
BOOL locked = FALSE;
void (*_GSEventLockDevice)() = dlsym(handle, "GSEventLockDevice");
if (_GSEventLockDevice) {
_GSEventLockDevice();
//...
}
dlclose(handle);
//...
}
当第一次启动应用程序时,他们要求许可:
即使不使用应用程序,也可以将数据提供给蓝牙设备
发送推送通知
访问联系人
访问麦克风
使用位置,即使不使用应用程序
我不知道这些框架是否会给你锁定屏幕的能力,但也许?...
快速更新:
经过更多的研究和JBA的巨大帮助,我越来越接近解决方案。似乎 Cell Control 充当键盘外围设备,允许他们发送命令来锁定屏幕。所以我买了一个蓝牙键盘来尝试猜测什么...像魅力一样。我可以从中锁定和解锁我的设备。因此,我将键盘连接到我的 mac(通过蓝牙)以嗅探数据包。当按下锁定按钮时,将记录此事件
从我可以告诉(我绝不是这方面的专家),是触发锁,它发送的是所有事件数据为零的鼠标事件。同时没有按下任何按钮。我的目标是在 Arduino 上复制这个...
如果你想知道他们是怎么做到的:
手机与硬件中包含的蓝牙设备配对。如果您进一步检查,您会注意到此蓝牙设备具有“键盘”配置文件:只需检查手机,您就会看到它被识别为无线键盘...有趣...您看到答案了吗?...
你打赌!该设备将锁定屏幕命令键发送到手机,就好像它是连接的蓝牙键盘一样(是的,因为 BT 键盘实际上可以做到这一点)。
= = = 编辑 = = =
请看一下这个HID usage table,你会发现一些有用的命令代码。我们正在寻找的关键代码很可能是0x81或0x82。
在联系 Apple 开发人员技术支持后,没有支持的方法来实现此功能,而不使用私有 API。使用这些将导致您的应用程序被拒绝。
我的猜测是,CellControl 能够通过,因为他们利用这个功能的唯一方法是,如果你有他们的硬件安装在你的车辆,设备与它配对,并开始驾驶。我的猜测是,在应用程序,苹果没有购买他们的设备之一,并实际测试它。虽然我一直在印象中,他们扫描你的二进制文件,以检查未记录的 API 使用,但这似乎是错误的。
@ Chris 提到的另一种可能性是,在开始开发之前,他们可能已经与苹果达成了协议。虽然这似乎不太可能,但这是可能的。
以下是 Apple 开发人员技术支持的一些摘录:
感谢您与 Apple 开发人员技术支持(DTS)联系。我们的工程师已经了您的请求,并得出结论,鉴于当前交付的系统配置,没有支持的方法来实现所需的功能。
你好
开发人员技术支持无法代表您对其他开发人员的软件进行逆向工程。正在做看似不可能的事情的应用程序通常分为两类:
他们违反了规则,App Review 还没有抓住他们 (A)
他们的营销材料是经济的 (B)
我可以说,没有支持的方式从您的 iOS 应用程序锁定设备。
希望这有助于未来的人。
经过长时间的研究,我发现没有办法以编程方式锁定屏幕。但是我发现有两种方法可以考虑:1.越狱 iOS 设备;2.使用 MDM 技术来实现它。但这将是一项巨大的工作。我们需要构建一个服务器来处理与 iOS 设备的通信。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(83条)