views:

236

answers:

4

I'm writing a travel guide related app that will download large databases (60meg) potentially overseas, with the reachability code I can tell when a host is reachable via wifi or 3g BUT I'm worried that if for some reason the wifi connection breaks for a minute or so as some DSL connections are likely to do on occasion the iphone will switch transparently to 3G and without realising I could be racking up someones phone bill with overseas data charges!

So I'm wondering if anyone has any experience, in the event of such break in wifi connectivity (wifi still works but it's connection to the net is down) would the reachability code report ReachableViaWWAN? So I could wait till my download code returns, check how the host is currently reachable and if it's via 3g I could abort?

Is it possible to select what type of connection I can use aka 3g or wifi exclusively?

A: 

Yes, under settings->general->network, you can shut-off 3G. But the iphone will still use non-3G cellular.

Alternatively, when I travel overseas I put the iPhone in airplane mode, and then turn wi-fi on manually.

EJB
I think the OP is asking if they can disallow 3G data programmatically from within the app, like the Skype app did.
Gordon Fontenot
OK, wasn't clear, but on second reading I think you are right.
EJB
Yes, but thank you for that I didn't know you could turn on wifi during flight mode.
dageshi
+4  A: 

If you look in the Reachability sample, in Reachability.h, there's a constant defined as "kReachabilityChangedNotification." If you ask to be notified of changes—assuming that this works as it sounds like it does—you could stop the connection when it drops down to 3G.

Jeff Kelley
Yes from reading up on it this looks like the only way. Just a lot of debugging to test it works as expected I guess.
dageshi
+1  A: 

Under Settings->General->Network there is "Data Roaming". This allows you to turn off roaming onto other data networks when traveling internationally. The user already has a choice there whether to allow expensive 3G connections when traveling.

progrmr
ahhh o.k that might be handy.
dageshi
you bet, i always keep it off since i'm near the border
progrmr
A: 

No; Unix-style IP doesn't work like that. Using the reachability code will do mostly the right thing, but there's still a chance you'll send a few packets over 3G before you handle the notification.

It's probably safe to assume that users who don't turn off "data roaming" will do so very quickly. On the other hand, many users won't have unlimited internet plans.

One option is to display something like "Not connected over Wi-Fi, do you want to download lots of data over the cell network? You might be charged." and store it in a setting.

tc.
David Thornley