はじめに
OculusQuestでアプリがオフラインかオンラインかに応じた処理が必要になったので調べました。
Application.internetReachability
結論、Application.internetReachability
を使えばOKです。
状態に応じてEnumを返します。
Enum | 状態 |
---|---|
NotReachable | インターネットに接続していない |
ReachableViaCarrierDataNetwork | キャリアネットワークで接続している |
ReachableViaLocalAreaNetwork | Wi-Fiでネットワークに接続している |
【参考リンク】:Unityで作成したアプリにおいて、ネットワーク接続を確認する場合に使う「Application.internetReachability」!
バージョン情報
UniRx 7.1.0
Unity 2019.4.8f1
コード
ネットーワークの状態に応じてテキストを変更する簡易サンプルです。
ReactivePropertyで状態が変わった時だけ処理するようにしています。
using UniRx;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// インターネット接続をチェックするサンプル
/// </summary>
public class NetworkConditionChecker : MonoBehaviour
{
[SerializeField] private Text networkConditionText;
private readonly ReactiveProperty<NetworkReachability> _networkReachReactiveProperty = new ReactiveProperty<NetworkReachability>();
private void Start()
{
_networkReachReactiveProperty
.SkipLatestValueOnSubscribe()
.Subscribe(condition =>
{
if (condition == NetworkReachability.NotReachable)
{
networkConditionText.text = "接続無し";
}
else
{
networkConditionText.text = "接続有り";
}
})
.AddTo(this);
}
private void Update()
{
_networkReachReactiveProperty.Value = Application.internetReachability;
}
}
デモ
画面下の接続の状態に応じてテキストが変更されました。成功です。
エディター上でも実機上でも変わりなく動作してくれてありがたいです。