2013-08-22 134 views
4

我已閱讀關於相同的其他問題,但每個人都只是說'越獄','永遠不會被Apple批准','這是不可能的'和'私人API,GraphicsServices。框架」。以編程方式鎖定設備上的屏幕

讓我來澄清一些事情,我沒有爲越獄手機做這件事,我這樣做是因爲手機上的鎖定按鈕被打破了,我只是不想等待1分鐘的屏幕鎖定。所以我想我可以在AppDelegate.h的開頭有一個名爲lockScreen的應用程序。這不適用於AppStore,它僅適用於我。

我見過的人說,從GraphicsServices.framework進口GSEvent.h時,他們可以使用GSEventLockDevice();,但是當我嘗試運行它(無論在設備和仿真器)我得到這個,它不會建:

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();但仍導入GSEvent.h,一切運行良好。 我的設備需要越獄才能工作嗎?

回答

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); 
    //... 
} 
+0

作品低於iOS 7 –

0

你所得到的未定義的符號錯誤,因爲你沒有連接到您的應用程序的私有的框架。它需要包含在您的構建階段Link Binary with Libraries step。因爲GraphicsServices.framework不是公共框架,它不會顯示在框架列表中。我發現這個答案提供了鏈接到私有框架的步驟。我沒有嘗試過,所以YMMV。

How do I add the following private frameworks to my iPhone app?

3

沒有理由編寫一個應用程序來鎖定手機。在輔助功能設置中使用輔助觸摸從屏幕上的按鈕完成硬件按鈕任務。這個按鈕可以在手機上的任何地方在屏幕上訪問(但可以很容易地隱藏),因爲您的「鎖定應用程序」只能從主屏幕訪問。看看這support article。相信我,我的鎖按鈕也被打破了。

相關問題