2015年04月03日

Unityでネットワーク利用可能かどうか調べる


最近、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("接続できるわよ(・∀・)");
}
//以下・略

ヤバい。こっちのほうが見やすそうな気が…(;・∀・)
コードもコッチのほうがスッキリしてますね…(;・∀・)

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)