如何使用 iOS 可达性

2024-06-19

我正在开发一个使用网络的 iPhone 应用程序。 iPhone 通过 HTTP 请求与我的服务器通信,并且应该可以在 WiFi 和 3G 上运行。
我目前使用NSURLConnection initWithRequest向我的服务器发送异步请求并获取响应(但我很快就会开始使用ASIHTTPRequest图书馆)

我知道对于这种应用程序(需要互联网连接的应用程序)我应该(必须?)使用可达性。

在搜索网络并查看Apple的Reachability示例代码之后,我仍然不明白一些基本的东西:

可达性的主要目的是什么?

在苹果的示例中,它们检测主机、WiFi 和 3G 的网络问题,并向用户显示适当的消息。
这是 Reachability 的主要目的,向用户显示消息吗? 还是我需要将其用于其他更实际的场景?例如如果NSURLConnaction请求失败,我是否需要以某种方式使用 Reachability 来重新发送请求?

Reachability 的正确用法是什么?

是否常见只使用one例如当应用程序启动时,然后监听网络变化?或者我应该在每次网络请求之前检查自己的可达性状态?
够用吗reachabilityWithHostName或者我还需要reachabilityForLocalWiFi and reachabilityForInternetConnection?

还有一件事,我了解苹果可以拒绝使用网络且不使用可达性的应用程序。
什么是 ”must“我应该实施哪些方法?
仅仅通知用户当前没有互联网就足够了吗?


Reachability是一个网络帮助实用程序类,用于获取有关连接状态的各种信息

可达性的主要目的是什么?

可达性用于查询网络状态,并注册侦听器以便在连接发生变化时获得通知。

这是 Reachability 的主要目的,向用户显示消息吗?

不,它的主要用途是测试是否有互联网连接,或者在连接发生变化时收到通知

例如如果NSURLConnection请求失败我需要使用吗 是否可以以某种方式重新发送请求?

是的,你可以使用它。例如,我通常在项目中所做的就是保存向远程服务器发出的所有请求。

假设我想下载 10 个文件。当任何文件由于没有互联网连接而导致下载过程失败时,我会将它们保存到失败下载数组中。

然后,当 Reachability 通知我互联网连接已恢复时,我会遍历该数组并再次开始下载过程。

Reachability 的正确用法是什么?

这取决于您的模式和需求。

应用启动时只使用一个实例,然后监听是常见的吗 网络变化?

是的,这就是我所做的。在我的项目中,我只有 1 个下载管理器类的实例,并且该类具有唯一活动的 Reachability 实例。

或者我应该在每个网络之前检查自己的可达性状态 要求?

您无需拥有多个 Reachability 类实例即可做到这一点。我通常做的是在我的下载管理器中有一个方法,告诉我是否有连接,使用 Reachability。

够用吗reachabilityWithHostName或者我还需要reachabilityForLocalWiFi and reachabilityForInternetConnection?

我对此不太确定,但我通常做的是测试所有方法的连接性。我不区分 3G 或 WiFi,但在某些实现中此信息(WiFi 或 3G)可能有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 iOS 可达性 的相关文章

  • 相当于 AppKit 的 NSObliquenessAttributeName 的 CoreText 是什么?

    我正在使用 CoreText 在 Mac iOS 跨平台代码中绘制一些文本 我可能使用的字体没有在操作系统中为所有用户安装真正的 斜体 版本 但他们需要知道即使这样文本也是斜体的 通过 AppKit 的 NSAttributedString
  • Swift 和 Cocoapods - 缺少必需的模块

    我正在尝试制作一个 Swift 框架 该框架依赖于两个库 阿拉莫菲尔 https github com Alamofire Alamofire and SwiftyJSON https github com SwiftyJSON Swift
  • ios - navigationItem.titleView 更新时闪烁

    我有一个UIView 拿着一个UIButton 设置为我的navigationItem titleView 当我更新此按钮的文本时 它会短暂闪烁 消失并随新文本重新出现 无论如何 当它改变时 是否可以保持它可见 那么 如果我更改 2015
  • 在堆栈视图内的 Uilabel 之间创建垂直线 [重复]

    这个问题在这里已经有答案了 我想在代码中创建一个带有自定义标头的 UICollectionView 因此 我创建了 UICollectionViewCell 的子类来描述我的自定义标头 我想在标题中以水平线显示五个标签 因此 我创建了五个标
  • UIWebView 中的多选 HTML 文件输入不适用于视频

    我在使用 UIWebView Cordova 创建打包为本机 iOS 应用程序的上传表单时遇到问题 问题是 当在允许多重选择的元素中选择视频时 与只能进行单一选择不同 所选视频不会被 压缩 预处理并因此受到某种程度的限制 当尝试使用 Fil
  • 多对多关系中的 KVO 对象属性

    我有一个核心数据对多关系 由父 gt 子组成 我想设置一个键值观察机制 以便当任何子对象上的属性 例如 firstName lastName 发生更改时 它会触发通知 使用标准 KVO 语法时 self parentObject addOb
  • 从服务器实时更新的 iOS 应用程序:Socket(使用流)还是 Apple 推送通知服务?

    我正在尝试制作一个 iOS 5 应用程序 该应用程序具有来自服务器的实时信息 它只会在应用程序运行时使用这些 为了使其实时且无需轮询 我一直在评估两种设计路线 创建从应用程序到服务器的套接字 并通过流交换信息 Pros 相对简单 不涉及第三
  • 如何在 iOS 上删除配对的蓝牙设备?

    我希望我的应用程序可以删除配对的蓝牙设备 因为如果设备与 iPhone 配对 则该设备无法用于其他设备 我尝试了 CBCentralManager cancelPeripheralConnection 但它不起作用 他们仍然配对 或者还有其
  • 如何使用 Swift 关闭打开的文件?

    我正在下载约 1300 张图像 这些是小图像 总大小约为 500KB 但是 下载并将它们放入 userDefault 后 我 收到如下错误 libsystem network dylib nw route get ifindex 套接字 P
  • 现有 UIPopoverController 中的 UIImagePickerController

    有没有办法将 UIImagePickerController 推送到现有 UIPopoverController 的导航控制器中 我所知道的是 您必须创建一个新的弹出窗口并在其中添加 UIImagePickerController 但我有一
  • 核心图:如何隐藏图、轴和标签?

    我有一个图表 其中 Y 轴和 X 轴与主图一起绘制在默认绘图空间上 然后我有单独的辅助绘图空间 每个辅助绘图都有自己的 Y 轴 所有绘图的 X 轴都相同 我正在实现按钮来打开和关闭辅助图 我希望它基本上包括整个绘图空间 绘图 自定义 y 轴
  • 带过滤器的 AudioKit 导出文件

    我想用音频套件的许多过滤器覆盖现有的 m4a 文件 我的代码 file try AKAudioFile forReading recordVoiceURL player AKPlayer audioFile file delay AKVar
  • 如何在 Xcode 4.5 中添加旧版本的 iOS SDK

    我在这里复制了 iOS 5 1 SDK 应用程序 Xcode app Contents Developer Platforms iPhoneOS platform Developer SDKs 但是 我仍然无法在 Xcode 中选择基础 S
  • 具有硬件集成的 iOS 应用程序

    我想开发一个使用外部硬件插件的 iOS 应用程序 有点像 Squarehttps squareup com https squareup com 但是我在苹果的文档中找不到任何参考资料 有人能指出我正确的方向吗 如果您想使用 iPod 连接
  • 检测 AVPlayerViewController 是否正在播放视频或正在缓冲并向播放器添加覆盖

    我必须检测视频是否处于播放模式或缓冲模式 我正在从 URL 加载视频 我已经尝试了下面的代码 我可以在视频开始播放后进行跟踪 但不能在视频处于缓冲状态时进行跟踪 另外 我想在我的播放器中添加覆盖视图 我尝试在 AVPlayer 中添加叠加层
  • 如何在 UICollectionView PerformBatchUpdates 块中排序移动、插入、删除和更新?

    In my UICollectionView 我使用一个简单的自定义对象数组来生成和显示单元格 有时数据会发生变化 我想一次性为所有变化添加动画效果 我选择通过跟踪第二个数组中的所有更改 比较两个数组并在一个数组内生成一组移动 插入 删除和
  • 从 iPhone 上的 NSString 中删除 HTML 标签

    有几种不同的方法可以删除HTML tags从一个NSString in Cocoa One way http cocoa karelia com Foundation Categories NSString Flatten a string
  • FileManager 说文件不存在

    我有一个用例需要UIImage保存到文档目录 然后UIImage需要转换为PDF并保存到文档目录 转换为 PDF 的代码 var filePath NSString string self selectedMedia imagePath i
  • object_setClass()而不是分配isa指针的性能

    我注意到在 XCode 4 6 的最新更新中 我收到了关于以下几行的警告JSONKit m 具体来说 设置对象类的行 dictionary gt isa JKDictionaryClass 这些被标记为已弃用 并注明首选方法是使用objec
  • 外围 BLE 设备的唯一标识符

    所以我有外围设备BLE设备 我需要一些标识符以便稍后与另一部 iPhone 共享 我连接的示例iPhone A 为外围设备 iPhone A 将外围设备的标识符保存到数据库中 稍后我可以轻松获取iPhone B 并连接到通过该标识符找到的外

随机推荐

  • 如何在默认浏览器或webview中打开按钮点击url

    我怎样才能打开一个网址webview或者点击按钮后在默认浏览器中 目前 当我单击btn1按钮 它提示我从手机中选择一个浏览器 我想在默认浏览器或其他浏览器中打开此网址webview 这是我的java代码 public class myact
  • 使用 Oid/ASNEncodeData 创建 PublicKey 会抛出 CryptographyException

    我正在尝试使用 Oid 和 RSA 公钥创建 PublicKey 实例 但收到带有 ASN1 bad tag value met 的 CryptographyException 我正在关注找到的答案here https stackoverf
  • 如何使用ilMerge将dll合并到exe文件中?

    I tried C Windows System32 gt ilmerge target winexe out c output exe c MyProgram exe c Microsoft WindowsAPICodePack dll
  • 如何用函数记录一个文件?

    我有一个带有函数 lib py 但没有类的python 文件 每个函数都有以下样式 def fnc1 a b c This fonction does something param a lalala type a str param b
  • TestFlight 提供反馈按钮

    我正在使用 iOS 8 的最新 testflight 版本 我将自己添加为内部测试人员 现在当我使用 testflight 打开应用程序时 我找不到反馈按钮 如果有人有任何线索 请告诉我 您在 Testflight 应用程序中提供反馈 打开
  • SFML 纹理显示为白框

    我在基类中有一个纹理和精灵 正在由另一个类扩展 但是在绘制时 精灵显示为白色框 我知道这与精灵失去与纹理对象的链接有关 但我对 C 有点陌生 所以我不太确定它是如何发生的 这是代码 我删除了一些不相关的部分以减少大小 拾取 h ifndef
  • 用于开发和生产的不同种子

    根据构建配置 调试 发布 使用实体框架 6 以不同方式为数据库设定种子的推荐方法是什么 现在我正在使用 MigrateDatabaseToLatestVersion 初始值设定项 在开发过程中 我喜欢在数据库中使用虚假数据进行测试 因此 我
  • 如何在 Struts 2 OGNL 中将参数传递给方法调用

    我想使用属性作为对象方法的参数
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 如何在 Eclipse 中以编程方式关闭编辑器 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当我们删除一个项目 IProject 时 我们想关闭它的所有打开的文件 我可以通过项目的成员方法访问 IFiles 我想关闭已删除项目的所有
  • MATLAB 类的 Description 和DetailedDescription 属性

    内置 MATLAB 类具有 Description 和 DetailedDescription 属性的值 gt gt handle ans meta class handle Package meta Properties Name han
  • AdMob 插页式广告仅显示一次

    当广告在一个会话内第二次或第三次打开时 LogCat 会显示错误消息 尝试使用不同的广告管理器启动新的 AdActivity 我通过应用程序主屏幕的 on resume 方法中的意图启动插页式广告 Override public void
  • Python speedtest.net,或等效的[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否有一个 Python 库可以实现 SpeedTest net 测试或等效的互联网连接速度测试 GitHub上有一个项目叫速度检查 https gi
  • 用 java 编写解释器时的 switch 或 if 语句

    当前的作业需要我编写一个程序 以一种非常微小且基本的编程语言 行为有点像 FORTRAN 来读取包含指令的文件并执行这些指令 基本上它是我猜的语言的简单解释器 它是完全线性的 所有语句都是按顺序定义的 并且只有字符串和整数变量 我需要查找和
  • 获取请求的客户端 IP 地址而不是 Cloudflare 的 IP 地址

    Cloudflare 会更改传入请求的 IP 地址 因为 Cloudflare 是我的网站和互联网之间的中间件 代理 我该怎么办获取请求的初始IP地址 而不是 Cloudflare 的 IP 地址 我听说过mod cloudflare但是这
  • 使用 JQuery 选择表行并选中复选框

    我有一个表 我想选择满足我的条件的行并选中它们各自的复选框 假设我想获取带有日期的行2013 03 21 我怎样才能使用 JQuery 来做到这一点 table tr td Record1 td td 2013 03 21 td td td
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 将 value 转换为 bool 的魔法

    今天我意识到将值转换为 bool 是一种魔法 int value 0x100 unsigned char uc static cast
  • 通过eclipse运行ant找不到环境变量,但是通过终端运行ant就可以了

    当我通过 Eclipse 运行 ant 时 一些目标构建得很好 但那些需要特定环境变量 即我在 profile 文件中设置的 SOME SDK 的目标将无法工作 即使我尝试回显 env JAVA HOME Ant 通过 eclipse 也只
  • 如何使用 iOS 可达性

    我正在开发一个使用网络的 iPhone 应用程序 iPhone 通过 HTTP 请求与我的服务器通信 并且应该可以在 WiFi 和 3G 上运行 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请