如何处理 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?