iOS/iPhone 可达性 - 如何使用 Reachability.m/.h 仅检查互联网丢失/无法可达的情况

2024-03-19

目前我正在使用苹果的reachability.m/.h 的类并且它可以工作,除了它会通知我任何更改,因为我只想在网络无法访问时通知用户。目前,如果我有互联网连接,然后松开网络,它会告诉我。但是,当您重新连接到网络时,它也会告诉我,这是我不想要的。我希望它只在网络丢失/无网络时告诉我。

我相信这与电话有关:

- (void)viewWillAppear:(BOOL)animated
{
    // check for internet connection
    [[NSNotificationCenter defaultCenter]
          addObserver:self
             selector:@selector(checkNetworkStatus:)
                 name:kReachabilityChangedNotification
               object:nil];

    internetReachable = [[Reachability
                         reachabilityForInternetConnection] retain];
    [internetReachable startNotifier];

    // check if a pathway to a random host exists
    hostReachable = [[Reachability reachabilityWithHostName:
                     @"www.google.ca"] retain];
    [hostReachable startNotifier];

    // now patiently wait for the notification
}

打电话时-[NSNotificationCenter addObserver:selector:name:object:],这个名字除了字面上的名字之外还有其他功能吗?这是我第一次使用 NSNotificationCenter,所以我对这件事不太熟悉。

EDIT:

这是我的 checkNetworkStatus 函数:(问题是我收到“NotReachable”,因为网络连接正在恢复并且 NSAlert 多次关闭)

- (void) checkNetworkStatus:(NSNotification *)notice
{
        // called after network status changes
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
switch (internetStatus)

{
    case NotReachable:
    {
        UIAlertView * alert  = [[UIAlertView alloc] initWithTitle:@"Network Failed" message:@"Please check your connection and try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil ];
        [alert show];
        NSLog(@"The internet is down.");

        break;

    }
    case ReachableViaWiFi:
    {               
        NSLog(@"The internet is working via WIFI.");

        break;

    }
    case ReachableViaWWAN:
    {
        NSLog(@"The internet is working via WWAN.");

        break;

    }
}

NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
switch (hostStatus)

{
    case NotReachable:
    {
        NSLog(@"A gateway to the host server is down.");

        break;

    }
    case ReachableViaWiFi:
    {
        NSLog(@"A gateway to the host server is working via WIFI.");

        break;

    }
    case ReachableViaWWAN:
    {
        NSLog(@"A gateway to the host server is working via WWAN.");

        break;

    }
}

}


当状态发生更改时,可达性将发送通知,但您如何处理该通知完全取决于您。如果您不想告诉用户网络已恢复,则不必这样做。

NSNotificationCenter 方法中的“name”参数指示您要订阅的通知。当对象发布通知时,它会使用特定的名称。

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

iOS/iPhone 可达性 - 如何使用 Reachability.m/.h 仅检查互联网丢失/无法可达的情况 的相关文章

  • Parse.com 因超出突发限制而拒绝服务

    我使用 Parse 创建了一个 iOS 应用程序 其中使用的是从 Parse com 网站下载的 iOS SDK 为了创建此类应用程序 ApplicationID 和 ClientID 密钥都嵌入在 iOS 应用程序中 并在使用应用程序时从
  • iOS 中的 NSCachesDirectory 和 NSDownloadsDirectory 有什么区别?

    我想将下载的杂志保存到我的 iOS 应用程序中的一个目录中 它似乎NSCachesDirectory and NSDownloadsDirectory是合适的 我不知道它们之间有什么区别 以及哪一种适合下载杂志 任何建议表示赞赏 内存不足时
  • Xcode 10 命令行构建:存档失败,出现 Fabric Info.plist 错误

    我有用于自动构建 iOS 项目的 Jenkins 服务器 该项目有两个目标 使用命令行实用程序构建项目xcodebuild 完整命令是 usr bin xcodebuild workspace Our project xcworkspace
  • 使用 Javascript 获取 Mobile Safari 中选定的文本

    因此 我正在开发一个小书签 对于我来说 使用 循环 获取用户选择的内容是理想的选择 window getSelection 和 document getSelection 都是我可以调用的函数 但是它们始终返回空字符串 我相信问题在于 当您
  • 从 NSString 获取子字符串,直到到达特定单词

    假设我有这个NSString Country Address Tel number 我该如何获取之前的子字符串Tel 国家地址 然后我该如何获取后面的子字符串Tel 数字 使用 NSScanner NSString string Count
  • 从 UIImagePickerControllerReferenceURL 加载 UIImage

    我正在使用 UIImagePickerController 来允许用户从图像库中选择图像 然后我想在 sqlite 数据库中启动该文件的位置 以便稍后可以参考它 我一直在谷歌上搜索如何做到这一点 但我的结果相当简短 我知道我可以通过调用委托
  • 枚举 NSString 的最佳方法

    我正在寻找枚举 objc 对象 例如 NSString 的方法 我记得 Xcode4 版本中有一个新功能 它提供了一种新的 enum 方法 但不清楚 有人知道吗 好吧 我自己回答 我想我犯了一个错误 这就是我上面提到的新功能 typedef
  • 关于 S3 文件传输的权限

    我正在使用 S3TransferManager Sample 进行测试 我创建了Cognito并设置了IAM并最后更改了constants swift文件 我上传没有问题 但下载失败 错误信息是 下载失败 错误域 com amazonaws
  • 一个 UITableView 中的两种不同的单元格类型

    大家好 我对如何在一个具有两个部分的 UITableView 中使用两种不同的单元格类型感到非常困惑 第一部分应返回一个大单元格 其中包含大量文本 另一部分应返回三个单元格 以导航到其他视图 我尝试过这样的 UITableViewCell
  • 横向 xib 显示为纵向

    我有一个视图控制器和单独的纵向和横向笔尖文件 旋转时 我加载相应的笔尖 方法 shouldAutorotateToInterfaceOrientation and willRotateToInterfaceOrientation 接到电话
  • UIKIT_EXTERN_CLASS 和 UIKIT_EXTERN,这两个常量是什么?

    当我在文档中定义类时 我总是在 interface 之前看到这两件事 UIKIT EXTERN CLASS 和 UIKIT EXTERN 这些常量代表什么以及为什么 Apple 将其放在类之前 另一件事是 有文件 UIKitDefines
  • 如何使用Appium获取ios中的应用程序信息,例如应用程序版本、设备操作系统版本?

    我正在使用 appium 测试应用程序并将测试输出集成到 testrail 中 我需要在 testrail 中添加设备和应用程序信息 在 Android 中 我可以使用 adb 命令获取应用程序和设备信息 例如设备型号 设备版本和应用程序版
  • 加载 UIWebView 时如何使用 UIProgressView?

    我正在开发一个应用程序 我在 UIWebView 中加载 urlrequest 并且它成功发生 但现在我试图在加载过程中显示 UIProgressView 从 0 0 到 1 0 它随着加载进度动态变化 我怎样才能做到这一点 UIWebVi
  • 通过 CTFontRef 或 CGFontRef 对象中的字形索引获取 unicode 字符

    CTFontRef 提供了出色的方法 例如CTFontGetGlyphsForCharacters用于将字符映射到字形 我的问题是 有没有逆映射的方法 也就是说 我可以通过给定的字形获取字符吗 自从我发现有一个CTFontCopyChara
  • Swift:转义闭包捕获非转义参数“onCompletion”

    我的 swift 有问题 我正在尝试发送 API 请求 然后检索数据 但收到以下错误消息 Swift 转义闭包捕获非转义参数 onCompletion 有谁知道我该如何解决这个问题 提前致谢 Code class RestApiManage
  • iOS:如何在 UITabBarItem 中添加下划线

    我正在使用一个应用程序 我需要在其中添加下划线UITabbarItem 所以我想在所选下添加下划线UITabbarItem在默认情况下UITabbarcontroller of iOS 我已经创建了子类UITabbarcontroller但
  • 在 UITableView 中创建隐藏的 UISegmentedControl

    与 iBooks 应用程序一样 当您下拉表格视图时 会出现搜索栏和分段控件 以允许您在两种类型的视图之间搜索和切换 当您向下拉得足够远时 它会停留在该位置 或者当您将桌面视图拉得足够远时 它会被隐藏 我正在尝试用一个来实现同样的事情UISe
  • 如何使用 Expo 播放 Youtube 视频

    我正在尝试使用反应本机 YouTube 组件 https github com inProgress team react native youtube在我的世博项目中 但是 我无法让它发挥作用 到目前为止 我所拥有的只是带有红色边框的黑屏
  • CF 类型的带有 __attribute__((NSObject)) 的强 @property 不会保留

    更新 自 Xcode 4 6 起 此问题已得到修复 现在 这项技术再次按预期发挥作用 但是 在代码中使用之前 请务必阅读 Rob Napier 出色答案顶部的注释 原帖 ARC Xcode 4 3 1 iOS 5 1 我有一个 CF 类型
  • 将 Objective-C 框架 (CocoaPod) 导入 Swift?

    我正在尝试导入libjingle peerconnection框架到我的 Xcode 项目中 但由于某种原因 我无法使用以下命令导入 Objective C 标头import RTCICEServer在 Swift 源文件中 我尝试使用头文

随机推荐

  • Mac Excel 2016 VBA - Workbook.open 出现 1004 错误

    我正在尝试让一个在 Excel 2011 for Mac 中完美运行的宏在 Excel 2016 for mac 中运行 目标是让用户指定一个包含 csv 文件的文件夹 然后宏循环遍历所有 csv 文件 打开每个文件将信息从其中复制到另一个
  • 钩子回调时状态不正确

    我正在使用 socket io 和 React hooks 编写一个聊天客户端 消息历史记录 chatMessages 时addMessage 收到消息事件后 调用不正确 始终为空数组 chatMessages确实更新 正确 但在下次调用时
  • 在 VBA (Microsoft Access) 中将标签的“Caption”属性的一部分加粗

    如何将 Microsoft Access 标签标题中的某个单词加粗 如果有帮助 文本本身将存储在 Microsoft Access 表中 下面是一个例子 我有一个带有标签的 Microsoft Access 表单 位于Form Load 事
  • 缓慢选择所有条目

    下面的 SELECT 与内部表一起运行GIT KUNNR TAB包含 2 291 000 条具有唯一客户 kunnr 的行 需要 16 分钟才能完成 select kunnr umsks umskz gjahr belnr buzei bs
  • 有没有办法知道文档何时已从缓存与数据库同步?

    我正在构建一个即时通讯应用程序 类似于WhatsApp 我需要显示消息的发送状态 正在发送 已发送 如果是 Firebase 缓存 由于处于离线状态 则发送 如果消息位于在线数据库上 则发送 有没有办法判断特定文档是否已上传到数据库 我目前
  • androidplot背景图像移位

    我尝试使用以下代码将图形网格的背景分为 3 个区域 int data 0xff000000 0x80008000 0xff000000 bgBitmap Bitmap createBitmap data 1 3 Bitmap Config
  • 如何在facebook SDK中分享视频?

    我编写了如下代码 其中文件存在于资源中 它不为空 我成功添加图像 但卡在视频上 void uploadVideo NSLog UPload Videio NSString filePath NSBundle mainBundle pathF
  • 数据库中的实体类...错误无效资源_pm

    我通过 phpMyAdmin 在 MySQL 中创建了数据库和表 我正在尝试使用数据库中的实体类将其连接到我的项目 但是 当我运行我的项目时 出现以下错误 Caused by com sun appserv connectors inter
  • Windows 7、R 3.0.2、插入符号 6.0-21 上插入符号中的 train() 出现致命错误

    我正在尝试使用train 插入符号以适应分类模型 但我遇到了某种未处理的异常 并且在 R 控制台中输出任何错误信息之前我的 R 会话崩溃了 Windows 错误 R for Windows 终端前端已停止工作 我正在运行 Windows 7
  • html表格中的MVC分页

    我有一个带有搜索按钮的搜索表单 当用户输入所有搜索输入字段并按下搜索按钮时 将仅返回同一页面中 html 表中的前 10 条记录 我已经做到了这一点 当用户按下下一页按钮时 我必须保留用户输入的值并将其发送到数据库并获取接下来的 10 条记
  • 在 Z3 中证明归纳事实

    我试图在 Microsoft 的 SMT 求解器 Z3 中证明一个归纳事实 我知道 Z3 一般不提供此功能 如Z3 guide http rise4fun com z3 tutorial guide 第 8 节 数据类型 但是当我们限制要证
  • 未捕获的语法错误:意外的标记:

    我正在 MooTools 脚本中运行 AJAX 调用 这在 Firefox 中工作正常 但在 Chrome 中我得到了Uncaught SyntaxError Unexpected token 错误 我无法确定原因 注释掉代码以确定错误代码
  • 传递多个参数来应用 (Python)

    我正在尝试清理 Python 中的一些代码以向量化一组功能 我想知道是否有一种好方法使用 apply 来传递多个参数 考虑以下内容 当前版本 def function 1 x if string in x return 1 else ret
  • Firebase事务api调用当前数据为空

    当我使用transaction 更新一个位置 该位置的数据是返回空值即使该位置有一些数据 I tried transaction 读取数据后在同一位置 它提供该位置的所有数据 我该如何使用transaction 如果情况像上面那样呢 事务以
  • PHP set_time_limit 抛出 500 错误?

    当我使用set time limit如果脚本运行时间超过 360 秒 则会抛出 500 错误 359 没什么 360及以上 错误 我无法访问 php ini 如何修复此错误 脚本运行时间超过 360 秒 就会抛出 500 错误 听起来你在某
  • Kafka消费者启动延迟汇合dotnet

    当启动 confluence dotnet Consumer 时 在调用订阅和后续轮询之后 似乎需要很长时间才能从服务器接收 分区已分配 事件 因此也需要很长时间 大约 10 15 秒 起初我以为存在自动创建主题的开销 但无论消费者的主题
  • 我应该如何设置集成测试以将测试数据库与实体框架结合使用?

    我正在为应用程序编写集成测试 但无法找到有关如何为我的集成套件设置测试数据库的任何最佳实践 我正在使用实体框架代码优先开发 ASP NET MVC4 应用程序 我可以确认我的测试项目中的测试默认与我的计算机上的本地开发数据库进行通信 这并不
  • Fortran 小数和千位分隔符

    有没有办法更改逗号的句点小数分隔符 另外 如何使输出数字具有千位分隔符 这可以是逗号 句号 空格 打开文件时使用参数 DECIMAL COMMA open 100 file logfile status unknown DECIMAL CO
  • 在此上下文中未定义“this”

    我该如何解决以下情况 interface I class A i I class C I A this lt lt this is not defined in this context 简而言之 我想将类实例传递给超类构造函数 在科特林中
  • iOS/iPhone 可达性 - 如何使用 Reachability.m/.h 仅检查互联网丢失/无法可达的情况

    目前我正在使用苹果的reachability m h 的类并且它可以工作 除了它会通知我任何更改 因为我只想在网络无法访问时通知用户 目前 如果我有互联网连接 然后松开网络 它会告诉我 但是 当您重新连接到网络时 它也会告诉我 这是我不想要