【问题标题】:How do we know when an iOS app starts using 3G/4G in codec? [closed]我们如何知道 iOS 应用何时开始在编解码器中使用 3G/4G? [关闭]
【发布时间】:2017-01-21 00:18:34
【问题描述】:

我们的项目非常庞大和复杂。它是关于在代码中某处流式传输在线视频,或使用互联网进行的其他一些活动(例如,网络服务、下载等)。我负责在应用开始使用 3G 或 4G 互联网服务时显示通知。

有没有库支持这个功能?

我们的项目是用 Objective-C 编写的,支持 ios8、ios9 和 ios10,可以在 iPhone、iPad 上运行。

【问题讨论】:

  • 不幸的是,iOS SDK 也不允许您观察您所连接的特定蜂窝网络。如果您查看 Apple 创建的“Reachability”实用程序,这大约是您在网络条件下可以预期的最大功能。 developer.apple.com/library/ios/samplecode/Reachability/… 但是,有一些方法可以通过使用 AVPlayer 中的函数来“猜测”速度。您可以观察缓冲区填充率(互联网下载比特的速度)或播放 LikelyToKeepUp。
  • @Ollie:不,不一样。可达性是检查您是否有互联网。它不会检查您的应用程序是否正在使用互联网。您的应用可以连接互联网,但它不使用互联网。
  • 啊,我明白了!我认为这行:“我有责任在应用程序开始使用 3G 或 4G 互联网服务时显示通知”是指应用程序使用连接启动时,而不是设备实际开始使用连接时。
  • @chipbk10,如果您查看可达性框架,它实际上会告诉您是否有互联网连接,但它也会告诉您“如何”连接。它会让你知道它是 Wifi 还是 Cellular。但是,它不会告诉您您使用的是哪种类型的“蜂窝”连接。只需阅读代码,您就会看到连接“类型”的枚举。特别是这一行 + (instancetype)reachabilityForLocalWiFi

标签: ios objective-c


【解决方案1】:

您可以使用CTTelephonyNetworkInfo 检测当前的连接类型。

奇怪的是它不是文档,你必须检查源标题。这是AppStore保存。

有官方文档:https://developer.apple.com/reference/coretelephony/cttelephonynetworkinfo?language=objc

不确定 KVO 是否正在处理此属性。 有变更通知:CTRadioAccessTechnologyDidChangeNotification

来自 CTTelephonyNetworkInfo.h 标头:

/*
 * currentRadioAccessTechnology
 *
 * Discussion:
 *   The current radio access technology the device is registered with. May be NULL
 *   if device is not registered on any network.
 */
@property (nonatomic, readonly, retain, nullable) NSString* currentRadioAccessTechnology __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);

【讨论】:

  • 我不会认为文档中没有的任何内容都是“App Store Safe”。无论如何都很好找到。不,我没有否决你的答案....
  • 好吧,我已经使用了一些应用程序,并且可以说公共 SDK 中的任何内容都应该是 AppStore 保存的。有一些文档:developer.apple.com/reference/coretelephony/…
猜你喜欢
  • 2011-05-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多