最近、Unityでゲームを作っていることが多いです。
んで今現在作っているアプリが、
プレイ後、ユーザーの任意でスコアをサーバーに送信する機能を実装いたしました。
その際に問題になるのが、通信の可否。
デバイスが携帯なので、圏外や機内モード中などにより、
どうしても通信が出来ない場合があります。
ですので、最低でも『今圏外だから通信出来ないよ!!ヽ(`Д´#)ノ』
的なメッセージを表示させねばなるまい…と思いまして、調べました。
Application.internetReachability
こいつを参照すると、ネットワーク状況を確認出来ます。
こいつはネットワークの状況によって、以下の三種類を返してくれます。
NetworkReachability.ReachableViaCarrierDataNetwork; //通信可能状態 NetworkReachability.ReachableViaLocalAreaNetwork; //wi-fi等で通信可能状態 NetworkReachability.NotReachable; //何かしらの理由で通信不可能な状態
つまり、if文か何かでApplication.internetReachabilityを参照し、
NetworkReachability.NotReachableであれば『通信できないわよッ!!ヽ(`Д´#)ノ』
というエラーメッセージを吐かせればよいのではないか…
そう思い、以下のソースを書きました。
//以上、略
// ネットワークの状況により処理を変更
switch ( Application.internetReachability ) {
//ネットワークに接続不可な場合の処理
case NetworkReachability.NotReachable:
//接続不可の場合の処理
Debug.Log("圏外よッ!!!ヽ(`Д´#)ノ");
//ネットワークに接続可能な場合の処理
default:
//正規の処理
Debug.Log("接続できるわよ(・∀・)");
break;
}
//以下、略
こんな感じ。
if文を使ったのは、最近switch文が好みだという、至極どうでもいい理由です(;・∀・)
ただ、こういう結果によって処理を変更する場合なんかはif文よりswitch文の方が、
見ていて分かりやすい気がするんです。
参照結果によって処理を追加する時なんかはにはif文の方がいいとは思うのですが…
ちなみに上記をif文で書くとこんな感じですかね。
//以上・略
// ネットワークの状況により処理を変更
if(Application.internetReachability==NetworkReachability.NotReachable){
//ネットワークに接続不可な場合の処理
Debug.Log("圏外よッ!!!ヽ(`Д´#)ノ");
}
else{
//正規の処理
Debug.Log("接続できるわよ(・∀・)");
}
//以下・略
ヤバい。こっちのほうが見やすそうな気が…(;・∀・)
コードもコッチのほうがスッキリしてますね…(;・∀・)