如何处理 iPhone 中的网络切换?

Posted

技术标签:

【中文标题】如何处理 iPhone 中的网络切换?【英文标题】:how to handle network switching in iPhone? 【发布时间】:2009-04-29 05:25:06 【问题描述】:

我刚刚开发了一个 iPhone 音频流应用程序...现在它可以毫无问题地播放音频文件了..当 iPhone 网络从 3G 切换到 WiFi 时出现问题,反之亦然..我需要在网络切换时暂停流,但是当网络到来时我无法恢复播放..谁能指出我如何用代码处理这种情况?

问候, 赛姆S

【问题讨论】:

【参考方案1】:

您可以将您的应用设置为check Reachability status,然后在网络状态发生变化且网络无法访问时发送“暂停”NSNotification(同样,在网络状态发生变化时发送“播放”NSNotification,并且网络现在又可以访问了):

[[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pauseStreaming:) name:@"kPauseAudiostreamingIfPlaying" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pauseStreaming:) name:@"kPlayAudioStreamingIfPaused" object:nil];

- (void) reachabilityChanged:(id)sender 
  NetworkStatus reachabilityStatus = [[Reachability sharedReachability] internetConnectionStatus];
  if (reachabilityStatus == NotReachable)
     [[NSNotificationCenter defaultCenter] postNotificationName:@"kPauseAudioStreamingIfPlaying" object:nil];
  else 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"kPlayAudioStreamingIfPaused" object:nil];

【讨论】:

嗨,Alex,感谢您的回复..我正在使用 CFnetwork 框架来读取流字节..每当发生任何错误时,readstream 调用函数都可能不会被触发..因此我无法恢复播放..你知道如何重置 readstream 回调来获取流数据吗? 在 Google 上搜索“ASIHTTPRequest”以获得更容易读取和重新启动数据请求的框架。这可能会(也可能不会)帮助您,或者至少可以帮助您开始使用一些原始源代码来了解 Copsey 是如何做到的。

以上是关于如何处理 iPhone 中的网络切换?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 iPhone 应用程序中的 try catch? [复制]

如何处理 iPhone 应用程序中的 NSError? [复制]

你如何处理 UI 自动化 iPhone 应用程序测试中的 UIPickerView?

如何处理 iPhone 5 视网膜显示检查?

iPhone iOS在呈现图表时如何处理Core Data中的时间间隔?

如何处理多个引脚将在 iphone sdk 中的一个经度和纬度上掉线?