以编程方式获取 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 的运营商信号强度的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式找出载波信号强度

Android:如何获取所有可用网络运营商的 GSM 信号强度

如何将 BLE RSSI 显示为信号强度条 iPhone

跟踪音频(强度级别) - android/iphone

测量从 wifi 到 Iphone/Ipad 的信号强度

iOS14 功能升级,来查查你的 iPhone 信号强度!