以编程方式获取 iPhone 的运营商信号强度
Posted
技术标签:
【中文标题】以编程方式获取 iPhone 的运营商信号强度【英文标题】:Programmatically getting the iPhone's carrier signal strength 【发布时间】:2010-11-19 04:45:08 【问题描述】:有没有办法使用 Objective-C 获取 iPhone 的运营商和/或当前信号强度?我知道如何确定是否存在数据连接,以及该连接是 wi-fi 还是蜂窝网络。我还知道您可以通过转到电话应用程序并拨打#3001*12345*# 并点击发送来手动将 iPhone 置于“现场测试”模式。
【问题讨论】:
你找到这个问题的答案了吗? 【参考方案1】:你让我好奇,我发现它实际上是*3001#12345#*
(哈希和星号交换)。
【讨论】:
【参考方案2】:这可能无法通过 Apple 的审核,但您可以使用 CTTelephony 通知。 首先,链接到 CTTelephony。 现在就用这个:
static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) CFShow(名称) NSString *sName = 名称; if ([sName isEqualToString:@"kCTIndicatorsSignalStrengthNotification"]) 如果(用户信息)CFShow(用户信息);
这个要订阅:
id ct = CTTelephonyCenterGetDefault(); CTTelephonyCenterAddObserver( ct, 空值, 打回来, 空值, 空值, 空值);【讨论】:
为什么审核不通过? 尽管自 ios 4.0 以来 CoreTelephony 是一个公共 API,但 CTTelephonyCenterGetDefault() 和 CTTelephonyCenterAddObserver() 是私有方法。它可能会通过审核,具体取决于审核者,但它不应该。 我刚试过这个,它给了我关于 UI 事件的消息(例如 UIViewAnimationDidStopNotification),但没有任何电话信息。知道可能出了什么问题吗? 您使用的是哪个 iOS 版本?您是否将您的项目与 CT 相关联? 其实,无视我最后的评论。我只是没有等待足够长的时间 - 信号强度并没有像我预期的那样频繁出现。以上是关于以编程方式获取 iPhone 的运营商信号强度的主要内容,如果未能解决你的问题,请参考以下文章