【问题标题】:Can we detect whether a SIM is prepaid or postpaid using iOS?我们可以使用 iOS 检测 SIM 卡是预付费还是后付费?
【发布时间】:2016-10-12 04:15:34
【问题描述】:

iOS 编程中是否有任何方法、函数或属性可以让我们识别 SIM 卡是预付费还是后付费?

我们能否以任何方式使用网络信息来区分前后?

- (NSDictionary *)fetchSSIDInformation { 
       NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces());
       NSLog(@"%s: Supported interfaces: %@", func, interfaceNames);
       NSDictionary *SSIDInfo; 
       for (NSString *interfaceName in interfaceNames)
          { 
            SSIDInfo = CFBridgingRelease( CNCopyCurrentNetworkInfo((bridge CFStringRef)interfaceName)); 
            NSLog(@"%s: %@ => %@", __func, interfaceName, SSIDInfo); 
            BOOL isNotEmpty = (SSIDInfo.count > 0); 
            if (isNotEmpty) { break; } 
          }

      return SSIDInfo;
}

【问题讨论】:

  • 我不认为 SIM 卡有任何不同,网络也没有。都是关于计费的,所以设备什么都不知道。

标签: ios networking sim-card


【解决方案1】:

不,SIM 卡或设备可用的任何网络信息都不会指示用户类型。 SIM 拥有的唯一重要信息是国际移动用户身份 (IMSI),它向运营商唯一标识 SIM。

然后,网络运营商将在运营商端(存储在 HLR 中)关联一个“用户类型”(后付费、预付费、融合、混合),这将影响计费的处理方式。

通常永远不会公开从 HLR 公开此信息,但是运营商可以为服务提供商提供一个门户,可以公开此类查询。

【讨论】:

    【解决方案2】:

    我不认为你可以,Apple 不会公开任何有关 sim 的信息。您可能可以这样做,但苹果不会考虑您在 Appstore 中的应用。阅读Apple Developer Document

    【讨论】:

    • 是的,我也做过一些研发,暂时还做不到,只是想知道设备网络信息中是否有相关信息。
    • 请添加您用来获取此类信息的代码
    • - (NSDictionary *)fetchSSIDInformation { NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces()); NSLog(@"%s: 支持的接口:%@", func, interfaceNames); NSDictionary *SSIDInfo; for (NSString *interfaceName in interfaceNames) { SSIDInfo = CFBridgingRelease( CNCopyCurrentNetworkInfo((bridge CFStringRef)interfaceName)); NSLog(@"%s: %@ => %@", __func, interfaceName, SSIDInfo); BOOL isNotEmpty = (SSIDInfo.count > 0); if (isNotEmpty) { 休息; } } 返回 SSIDInfo;}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多