4

我已经阅读了有关相同的其他问题,但每个人都只是说“越狱”,“Apple 永远不会批准”,“这是不可能的”和“私有 API,GraphicsServices.framework”。

让我澄清一下,我不是为了越狱的手机这样做,我这样做是因为我手机上的锁定按钮坏了,我只是不想等待 1 分钟来锁定屏幕。所以我想我可以有一个应用程序lockScreenAppDelegate.h. 这不会在 AppStore 上进行,它只适合我。

我见过有人说他们可以在从GSEventLockDevice();导入时使用,但是当我尝试运行它(在设备和模拟器上)时,我得到了这个,它不会构建:GSEvent.hGraphicsServices.framework

    Undefined symbols for architecture armv7s:
  "_GSEventLockDevice", referenced from:
      -[AppDelegate application:didFinishLaunchingWithOptions:] in AppDelegate.o
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我不完全确定这意味着什么。如果我删除该行GSEventLockDevice();但仍然 import GSEvent.h,一切运行正常。我的设备需要越狱才能正常工作吗?

4

3 回答 3

3

这已经被别人解决了。你可以在 Github 上找到它:https ://github.com/neuroo/LockMeNow

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);
  //...
}
于 2013-08-22T18:31:29.033 回答
3

没有理由编写应用程序来锁定您的手机。使用辅助功能设置中的辅助触控从屏幕上的按钮完成硬件按钮任务。这个按钮可以从手机上的任何地方在屏幕上访问(但可以很容易地隐藏),因为您的“锁定应用程序”只能从主屏幕访问。查看这篇支持文章。相信我,我的锁定按钮也坏了。

于 2013-08-22T18:46:53.143 回答
0

您收到未定义符号错误,因为您没有链接到应用程序中的私有框架。它需要包含在 Build Phases Link Binary with Libraries步骤中。

由于GraphicsServices.framework不是公共框架,它不会出现在框架列表中。我发现这个答案给出了链接到私有框架的步骤。我没试过,所以YMMV。

如何将以下私有框架添加到我的 iPhone 应用程序?

于 2013-08-22T18:41:30.210 回答