【问题标题】:How can I get details about the device data provider (like Verizon/AT&T) of an iphone programmatically?如何以编程方式获取有关 iphone 的设备数据提供商(如 Verizon/AT&T)的详细信息?
【发布时间】:2015-04-11 19:46:02
【问题描述】:

我正在尝试创建一个 ios 应用程序,并且我想根据用户使用的数据提供商(例如 Verizon 和 AT&T)对用户进行细分。是否可以通过 ios 应用程序以编程方式获取此信息。

【问题讨论】:

    标签: ios objective-c iphone swift


    【解决方案1】:

    你应该检查CTCarrier

    只需将CoreTelephony 导入您的 Swift 文件即可。

    然后您可以使用carrierName 属性来获取您的运营商的名称。

    // Setup the Network Info and create a CTCarrier object
    let networkInfo = CTTelephonyNetworkInfo()
    let carrier = networkInfo.subscriberCellularProvider
    
    // Get carrier name
    let carrierName = carrier.carrierName
    

    【讨论】:

    • 是SIM卡的运营商名称,不用当前网络的运营商使用。
    • 'subscriberCellularProvider' 在 iOS 12.0 中被弃用:被 serviceSubscriberCellularProviders 取代
    • 对于 iOS 12,鉴于在某些设备中可以有多个 SIM 卡,Apple 已经贬低了“subscriberCellularProvider”并将其替换为一系列蜂窝提供程序“serviceSubscriberCellularProviders”。如果不关心选择 CTCarrier,只需使用:let carrier = networkInfo.serviceSubscriberCellularProviders?.first?.value
    • 它只是为我打印“Carrier”;/
    【解决方案2】:
    【解决方案3】:

    现在您可以拥有多个 SIM 卡,subscriberCellularProvider 已被弃用,取而代之的是 serviceSubscriberCellularProviders。您可以通过以下方式获取提供程序的数组:

    CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.values
    

    在我的例子中,我正在检查用户是否有美国电话号码,以便他们可以发送短信而不是电子邮件。你可以这样做:

    carriers.contains { $0.isoCountryCode?.lowercased() == "us" }
    

    在我的手机上,我只有一张 SIM 卡,但是这个数组返回两个值,其中一个具有所有 nil 属性,所以如果您正在检查它们,请务必处理。

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多