Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 设备pin控制器类需要哪些权限/权限?_Iphone_Ios_Objective C_Jailbreak - Fatal编程技术网

Iphone 设备pin控制器类需要哪些权限/权限?

Iphone 设备pin控制器类需要哪些权限/权限?,iphone,ios,objective-c,jailbreak,Iphone,Ios,Objective C,Jailbreak,我的iphone应用程序被越狱了,我不在乎我的应用程序是否被应用商店拒绝 我希望在我的程序中使用专用APIDeviceInControl 我最近发现了名为DeviceInControl的私有API,但它不能正常工作。应用程序运行,除了它的方法外,其他所有方法都不起任何作用。它的BOOL方法总是返回false。设置方法不会做任何事情 有人知道设备pin控制器需要哪些权限吗 编辑:代码 id away = [[objc_getClass("DevicePINController") allo

我的iphone应用程序被越狱了,我不在乎我的应用程序是否被应用商店拒绝

我希望在我的程序中使用专用API
DeviceInControl

我最近发现了名为
DeviceInControl
的私有API,但它不能正常工作。应用程序运行,除了它的方法外,其他所有方法都不起任何作用。它的
BOOL
方法总是返回false。设置方法不会做任何事情

有人知道设备pin控制器需要哪些权限吗

编辑:代码

    id away = [[objc_getClass("DevicePINController") alloc]init];

    NSLog( [away simplePIN] ? @"YES":@"NO" );
    NSLog( [away _isBlocked] ? @"YES":@"NO" );
    NSLog( [away _attemptValidationWithPIN:@"1234"] ? @"YES":@"NO" );

    NSLog(@"%d",[away _unblockTime] );
    NSLog(@"%@",[away blockedStateKey] );
    NSLog(@"%@",[away blockTimeIntervalKey] );
    NSLog(@"%@",[away failedAttemptsKey] );
    NSLog(@"%d",[away pinLength] );
    NSLog(@"%@",[away stringsBundle] );

    NSLog(@"%@",[away stringsTable]);

每个方法调用都返回错误的答案。有些只返回null。Bool总是返回NO.

因此,第一个问题是您有一个
nil
对象。在Objective-C中,向
nil
对象发送消息将不起任何作用。如果该方法应该返回一个
BOOL
,那么
BOOL
的默认值是
NO
,因此如果awe为nil,您将返回一堆NO

回答您的后续问题(在您测试您的
nil
值之后)。。。您需要确保您的应用程序打开定义了
设备控制器的库。否则,它将不知道该类是什么,也无法实例化它。因此,
objc_getClass
将返回
nil
对象

对于该类,它在首选项.framework中定义,位于

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/PrivateFrameworks/Preferences.framework
(显然,根据您的安装目录和/或SDK版本进行调整)

您可以在Xcode中将其添加到项目中,方法是转到目标设置->构建阶段->将二进制文件与库链接,然后添加它。当然,您必须导航到上面的目录,因为它是一个私有框架,不会显示在初始弹出列表中

或者,您可以使用代码动态加载库:

#import <objc/runtime.h>
#include <dlfcn.h>
我在iOS 6.1(越狱)上测试了这个功能,它可以正常工作


顺便说一下,请将您的PIN码更改为除
1234
以外的其他密码。我的行李上有相同的密码;)

因此,第一个问题是您有一个
nil
对象。在Objective-C中,向
nil
对象发送消息将不起任何作用。如果该方法应该返回一个
BOOL
,那么
BOOL
的默认值是
NO
,因此如果awe为nil,您将返回一堆NO

回答您的后续问题(在您测试您的
nil
值之后)。。。您需要确保您的应用程序打开定义了
设备控制器的库。否则,它将不知道该类是什么,也无法实例化它。因此,
objc_getClass
将返回
nil
对象

对于该类,它在首选项.framework中定义,位于

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/PrivateFrameworks/Preferences.framework
(显然,根据您的安装目录和/或SDK版本进行调整)

您可以在Xcode中将其添加到项目中,方法是转到目标设置->构建阶段->将二进制文件与库链接,然后添加它。当然,您必须导航到上面的目录,因为它是一个私有框架,不会显示在初始弹出列表中

或者,您可以使用代码动态加载库:

#import <objc/runtime.h>
#include <dlfcn.h>
我在iOS 6.1(越狱)上测试了这个功能,它可以正常工作


顺便说一下,请将您的PIN码更改为除
1234
以外的其他密码。我的行李上有相同的密码;)

您需要向我们展示您正在运行的代码,以便我们能够帮助您调试为什么它不起作用。谢谢。您是否测试了
远离
是否等于
?请记住,在Objective-C中,向nil对象发送消息不会起任何作用。如果该方法应该返回一个
BOOL
,那么
BOOL
的默认值是
NO
,因此如果
away
为nil,您将返回一堆NO。看起来您是对的。away为nil。但是这不是使用私有api的正确方法吗?您如何打开
首选项。framework
?它是否包含在项目设置(构建阶段)中?或者,它是使用
dlopen()
动态打开的吗?如果您不确定这两个选项的含义,请告诉我。我不理解您的含义。我是否应该使用带有库的链接二进制文件来查找和链接首选项。framework?它目前还没有添加到我的项目中。我认为在使用objc_getclasse时,我们不需要添加任何框架。您需要向我们展示您正在运行的代码,以便我们能够帮助您调试它为什么不起作用。谢谢。您是否测试了
远离
是否等于
?请记住,在Objective-C中,向nil对象发送消息不会起任何作用。如果该方法应该返回一个
BOOL
,那么
BOOL
的默认值是
NO
,因此如果
away
为nil,您将返回一堆NO。看起来您是对的。away为nil。但是这不是使用私有api的正确方法吗?您如何打开
首选项。framework
?它是否包含在项目设置(构建阶段)中?或者,它是使用
dlopen()
动态打开的吗?如果您不确定这两个选项的含义,请告诉我。我不理解您的含义。我是否应该使用带有库的链接二进制文件来查找和链接首选项。framework?它目前还没有添加到我的项目中。我认为在使用objc_getclassh时我们不需要添加任何框架什么是RTLD_懒惰?它给出了一个错误。“使用未声明的标识符RTLD_LAZY”对不起,该常量还需要一个
\include
。请参阅上面我的更新代码。是的,
\u attemptValidationWithPIN
对我也不起作用。在这一点上,有一百万件事情可能会出错。也许需要一个权利?