Unityで作成したアプリにおいて、ネットワーク接続を確認する場合に使う「Application.internetReachability」!


筆者の環境:OS:Windows10, Unity 2019.3.5f1 使用言語:C#
利用Asset:DOTween,Destructible2D
筆者のプログラミング歴:2020年1月よりUnity上でC#の勉強を開始。

ネットワークに接続しているかどうかを確認してくれる「Application.internetReachability」

初制作ゲームにて、Admob広告を掲載したのですがその際に、

『広告のLoadを待たずにゲームを開始すると、バナー広告の操作が上手くいかず、消すべき時に消せない。』

という不具合が出たので、広告のLoadが完了するまで、スタートボタンを表示させない、という無理やりな方法で
不具合を回避していました。
その為、インターネット接続していない端末はスタート出来ないので、それに対しての回避策を用意する、という更に面倒な事になっています。
今思えば、愚策中の愚策ですね。

現在開発中のゲームでもランキングを搭載予定なのもあり、ネットワーク接続しているかどうかの確認が出来れば、この問題は簡単に解決出来ると思い、調べてみました!
すぐ見つかりました(というか、一度調べてました)。

Application.internetReachabilityを使えば、ネットワーク接続しているかどうかの確認どころか、接続しているネットワークがWi-Fiなのかキャリアネットワーク(4Gとかですね)なのか?も、わかるそうです。

 ●NotReachable : インターネットに接続していない
 ●ReachableViaCarrierDataNetwork : キャリアネットワークで接続している
 ●ReachableViaLocalAreaNetwork : Wi-Fiでネットワークに接続している

以下、実装例。

void CheckNetwork()
    {        
        if (Application.internetReachability == NetworkReachability.NotReachable)
        {            
            Debug.Log("ネットワーク接続無し");
        }
        else if(Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
        {
            Debug.Log("キャリアネットワークに接続");
        }
        else if((Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
        {           
            Debug.Log("Wi-Fiネットワークに接続");
        }
    }

実際スマホアプリで使用する場合は、ネットワーク接続が無ければ、警告を表示するとかになりますね。
今回の筆者の場合は、スタートボタンは最初から表示しておいて、ボタンを押した時に広告Loadとネットワーク接続の確認をして、それぞれ処理を行う、って感じで実装する事になると思います。

ここまで読んでいただき、ありがとうございました。

参考にさせていただいたサイト:エクスプラボ 様
https://ekulabo.com/network-reachability