我正在开发不需要在App Store上的东西,因此使用私有API满足我的需求没有问题,我正在尝试使用MobileWiFi. framework to read the RSSI value for the wireless network the phone is currently connected to. I've included the
https://github.com/Cykey/ios-reversed -headers / tree /
c613e45f3ee5ad9f85ec7d43906cf69ee812ec6a /
MobileWiFi`
标头,并使用桥接标头将它们包括在我的swift项目中,并编写了如下代码。请原谅,我是新手。
import SystemConfiguration.CaptiveNetwork
typealias _WiFiManagerClientCreate = @convention(c) (CFAllocator, CInt) -> UnsafeRawPointer
typealias _WiFiManagerClientCopyDevices = @convention(c) (UnsafeRawPointer) -> CFArray
typealias _WiFiDeviceClientCopyProperty = @convention(c) (UnsafeRawPointer, CFString) -> CFPropertyList
if let libHandle = dlopen (Paths.ipConfiguration, RTLD_LAZY) {
result = libHandle.debugDescription
let _createManagerPtr = dlsym(libHandle, "WiFiManagerClientCreate")
let _clientCopyDevicesPtr = dlsym(libHandle, "WiFiManagerClientCopyDevices")
let _clientCopyPropertyPtr = dlsym(libHandle, "WiFiDeviceClientCopyProperty")
if (_createManagerPtr != nil) && (_clientCopyDevicesPtr != nil) && (_clientCopyPropertyPtr != nil) {
let _createManager = unsafeBitCast(_createManagerPtr, to: _WiFiManagerClientCreate.self)
let _clientCopyDevices = unsafeBitCast(_clientCopyDevicesPtr, to: _WiFiManagerClientCopyDevices.self)
let _clientCopyProperty = unsafeBitCast(_clientCopyPropertyPtr, to: _WiFiDeviceClientCopyProperty.self)
let manager = _createManager(kCFAllocatorDefault, 0)
let devices = _clientCopyDevices(manager)
let client = CFArrayGetValueAtIndex(devices, 0)
let data = _clientCopyProperty(client!, "RSSI" as CFString)
let rssi = CFDictionaryGetValue(data as! CFDictionary, "RSSI_CTL_AGR")
NSLog("RSSI: \(rssi)")
}
dlclose(libHandle)
}
这产生一个错误 fatal error: unexpectedly found nil while unwrapping an Optional value which stems from trying to call _createManager
我最终使用了这种解决方法:
+ (int) wifiStrength {
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSString *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
return[[dataNetworkItemView valueForKey:@"wifiStrengthRaw"] intValue];
}
没有任何权利或越狱的作品
上面的程序返回公共字段的值,但不在私有成员上工作。我已经在我的POJO课上宣布了getters和setters。 有什么想法吗?
以前有人这么做过吗?谢谢
我正在尝试使用GitHub API下载项目的所有提交。我目前正在尝试通过分支和拉取请求获取所有提交: > 对于API返回的每个分支(例如,API.github.com/repos/mojombo/grit/branchs),我读取所有提交(例如,API.github.com/repos/mojombo/grit/commits?sha=5608567286e64a1c55c5e7fcd415364
我正在尝试使用Microsoft图形应用编程接口访问我的OneDrive(个人帐户)文件,但无法使其正常工作。我已经阅读了好几天了,但运气不好。我正在使用“客户端凭据流”。我在应用程序注册门户中创建了一个应用程序,并设置了应用程序权限。获取令牌可以正常工作,但当我尝试使用此令牌读取OneDrive的根时,它会显示“拒绝访问”、“令牌中需要存在scp或角色声明”。当我使用v2.0版本获取令牌,然后使
尝试使用API访问Github组织的私有存储库中的文件,我是该组织的成员。到目前为止,尝试了几种不同的方法: 1.如果我使用用户名/密码方法- 它工作正常,但是我试图从一个协作的Rails应用程序访问repos,所以我不想公开我的github登录凭据。我想创建一个具有访问权限的虚拟GH帐户并使用这些凭据是可能的,但这绝对不理想... 2.因此,我查看了API文档中的OAuth2 Secret/Ke
问题内容: 我想使用BufferedReader在控制台中输入多行文本,然后单击“ Enter”以查找整个文本长度的总和。问题在于,似乎我进入了一个无限循环,当我按“ Enter”键时,程序并没有结束。我的代码如下: 你能告诉我我在做什么错吗? 问题答案: 阅读所有行的惯用方式是。另外,我建议发表声明。就像是 如果你想,当你收到一个空行来结束循环,在添加一个测试为循环 JLS-14.15。该声明说