以编程方式获取iPhone的运营商信号强度

7
有没有一种使用Objective-C获取iPhone运营商和/或当前信号强度的方法?我知道如何确定是否存在数据连接,以及该连接是Wi-Fi还是蜂窝。我也知道您可以通过打开电话应用程序并拨打#3001*12345*#并按发送来手动将iPhone置于“场测试”模式中。

你有没有找到这个问题的答案? - Hauke
2个回答

3

您让我很好奇,我发现实际上是*3001#12345#*(星号和井号交换)。


2

这种方法可能无法通过苹果的审核,但您可以使用CTTelephony通知。

首先,与CTTelephony进行链接。

现在只需使用以下代码:

static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
CFShow(name)
NSString *sName = name; if ([sName isEqualToString:@"kCTIndicatorsSignalStrengthNotification"]) { if (userInfo) CFShow(userInfo); } }

使用以下代码进行订阅:

id ct = CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver( ct, NULL, callback, NULL, NULL, NULL);

为什么它不能通过审核? - Valerii Pavlov
1
尽管CoreTelephony自iOS 4.0以来一直是公共API,但CTTelephonyCenterGetDefault()和CTTelephonyCenterAddObserver()是私有方法。这可能会通过审核,取决于审核人员,但不应该这样做。 - fbernardo
我刚刚尝试了一下,它给了我关于UI事件的消息(例如UIViewAnimationDidStopNotification),但没有任何与电话相关的东西。你有什么想法是出了什么问题吗? - brianestey
你使用的是哪个iOS版本?你是否已经将项目与CT链接? - fbernardo
实际上,忽略我之前的评论。我只是没有等够久 - 信号强度没有像我预期的那样频繁到来。 - brianestey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接