gpt4 book ai didi

ios - 访问 CoreTelephony.framework

转载 作者:行者123 更新时间:2023-11-29 10:24:01 33 4
gpt4 key购买 nike

我正在使用 nst's iOS Runtime Headers访问 CoreTelephony.framework。

这是他的示例代码:

NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/FTServices.framework"];
BOOL success = [b load];

Class FTDeviceSupport = NSClassFromString(@"FTDeviceSupport");
id si = [FTDeviceSupport valueForKey:@"sharedInstance"];

NSLog(@"-- %@", [si valueForKey:@"deviceColor"]);

他的示例使用代码让我可以访问 FTServices.framework,但是当我应用相同的逻辑时,它失败了,因为 CoreTelephony 没有包含名为 sharedInstance() 的类方法。

我应该自己声明和实现还是有其他方式?

谢谢。

编辑:

我的尝试:

NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/CoreTelephony.framework"];
BOOL success = [b load];

Class CTTelephonyNetworkInfo = NSClassFromString(@"CTTelephonyNetworkInfo");
id si = [CTTelephonyNetworkInfo valueForKey:@"sharedInstance"]; // fails here

NSLog(@"-- %@", [si valueForKey:@"cachedSignalStrength"]);

最佳答案

问题是 CTTelephonyNetworkInfo 实际上 没有属性 sharedInstance。引用hereCTTelephonyNetworkInfo是一个用来存放相关信息的数据结构,可以通过标准的[[CTTelephonyNetworkInfo alloc] init]直接访问(构造)(referred来自 here )。

所以对于你的情况:

NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/CoreTelephony.framework"];
BOOL success = [b load];

Class CTTelephonyNetworkInfo = NSClassFromString(@"CTTelephonyNetworkInfo");
id si = [[CTTelephonyNetworkInfo alloc] init];

NSLog(@"-- %@", [si valueForKey:@"cachedSignalStrength"]);

但请确保您在实际手机上进行测试!模拟器没有存储此类信息。

编辑:如果要在生成的类上调用方法,请使用 performSelector:NSInvocation 类。

关于ios - 访问 CoreTelephony.framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353169/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com