##結論
表題のとおり
ありがたい配布元↓
[iOS] ネットワーク接続状況取得ライブラリを公開
http://cocoadays.blogspot.jp/2011/05/ios_25.html
##理由
Reachability や StackOverflow で見つけたインターネットの通信状態の取得をしてくれる処理は、
通信状態の変化がワンテンポ遅れるため、申し訳ないけどちょっと使えないって思ってた
例をあげると、自分の過去の記事で課金について取り上げたことがあるのだけど、そこで
課金中に機内モードにして通信切断すると、直後に課金失敗の反応が返ってくるのに、その時 Reachability で通信状態を確認するとしばらくの間は通信が繋がっているという状態しか返ってこない。
すぐ状態を取得したいのに。どうしよう。
という問題が発生して結構困ったことがあった
(結局 NSURLConnection
で自鯖を叩いて通信状態を確認する、というなんか危うい方法を取っていた)
ところがどっこい、FBNetworkReachability
を使用すると現在の通信状態が即座に反映されてるんですね
(^ω^)使えるわ〜
NSURLConnection とか いらんかった!
以上の理由をもって FBNetworkReachability を使った方がよくね?
と思いましたとさ
ただ検索かけても「FBNetworkReachability は Rechability を使いやすくラップしたもの」
という情報くらいしかなくて
(´・ω・`).。oO(あれ? 問題発生してるの俺だけ?)
って思ったけどまあいいか
使いやすくなってるっていうしな! うん!
紹介するページが増えることに意義があるんじゃないかなー!(´・ω・`)
##おまけ
配布元ページに refresh
の表記がなかったけど、
今のところ refresh
呼ばないと最新の状態が反映されない
+ (BOOL)reachable
{
FBNetworkReachability *r = [FBNetworkReachability sharedInstance];
[r refresh];
return FBNetworkReachableNon != r.connectionMode;
// return r.reachable; // ↑と同じ
}
Swift で使うなら Bridging Header つかいましょね
public class final func reachable() -> Bool
{
let r: FBNetworkReachability = FBNetworkReachability.sharedInstance()
r.refresh()
return FBNetworkReachabilityConnectionMode.ReachableNon != r.connectionMode
// return r.reachable; // ↑と同じ
}