【问题标题】:Programmatically getting the iPhone's carrier signal strength以编程方式获取 iPhone 的运营商信号强度
【发布时间】:2010-11-19 04:45:08
【问题描述】:

有没有办法使用 Objective-C 获取 iPhone 的运营商和/或当前信号强度?我知道如何确定是否存在数据连接,以及该连接是 wi-fi 还是蜂窝网络。我还知道您可以通过转到电话应用程序并拨打#3001*12345*# 并点击发送来手动将 iPhone 置于“现场测试”模式。

【问题讨论】:

  • 你找到这个问题的答案了吗?

标签: iphone signals cellular-network


【解决方案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 相关联?
    • 其实,无视我最后的评论。我只是没有等待足够长的时间 - 信号强度并没有像我预期的那样频繁出现。
    猜你喜欢
    • 2014-02-19
    • 2011-03-17
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2010-10-25
    • 2019-03-30
    • 2013-08-21
    • 2016-05-28
    相关资源
    最近更新 更多