Firebase Unity : 인터넷 연결이없는 상황을 처리하는 방법

Artyom Amiryan

내가하고 싶은 것

Unity를 사용하는 작은 게임이 있는데, 나중에 리더 보드를 표시하기 위해 Firebase 실시간 데이터베이스에 사용자 점수를 저장하고, 사용자가 처음 게임에 들어갈 때 사용자 이름을 묻고 장치를 식별하기 위해 deviceId로 저장합니다. 따라서 이제 사용자가 인터넷에 연결되어 있지 않은 상황을 처리하고 해당 데이터를 기기에 저장하고 사용자가 연결을 얻거나 게임에 다시 들어가면 firebase 실시간 데이터베이스에서 데이터를 업데이트합니다.

내 문제는 무엇입니까

여기서 문제는 firebase가 연결이 없다는 예외를 던지지 않고 연결될 때까지 인터넷 연결을 계속 시도한다는 것입니다. 사용자가 게임에 들어갈 때 인터넷 연결을 확인하도록 제안 할 수 있지만, 예를 들어 사용자가 인터넷 연결로 시작하고 게임 중에 사용자가 인터넷을 잃게되는 상황에서도 처리하고 싶습니다. 위에서 언급했듯이 장치에 데이터를 저장합니다. 따라서 장치에 데이터를 저장하려면 인터넷에 연결되지 않은 상황을 파악해야합니다.

내가 시도한 것

1)

DatabaseReference connectedRef = FirebaseDatabase.DefaultInstance.GetReference(".info/connected");
    connectedRef.ValueChanged += (object sender, ValueChangedEventArgs a) => {
    bool isConnected = (bool)a.Snapshot.Value;
    Debug.Log(isConnected);
};

게임 도중 사용자가 인터넷 연결이 끊어지면 실행되지 않으므로 인터넷 연결 예외가 없습니다.

2)

Task timeoutTask = Task.Delay(1000);
Task firebaseConnection = await database.Child("users").GetValueAsync();
if (await Task.WhenAny(firebaseConnection, timeoutTask) == firebaseConnection) {
    Debug.Log("timeout");
} else {
    Debug.Log("completed");
}

나는 파이어베이스 연결에 시간 제한을 두는 것이 현재 유일한 해결책이라고 생각했지만 Debug.Log("timeout");인터넷에 연결되어 있지 않으면 절대로 기록 되지 않습니다 .

나는 이것에 대한 해결책을 찾고 있었고 작동 할 수있는 것처럼 보이는 2 가지 답변 만 찾았지만 운이없고 아이디어가 부족 하고이 문제를 해결하는 방법을 모릅니다. 귀하의 도움을 기대합니다. 감사합니다.

패트릭 마틴

편집하다:

다음 코드 MacOS의 Unity SDK 6.15.1 및 6.13 용 편집기에서 내 컴퓨터에서 작동 합니다.

FirebaseDatabase.DefaultInstance.GetReference(".info/connected").ValueChanged += HandleConnectedChanged;
FirebaseDatabase.DefaultInstance.GetReference(".info/serverTimeOffset").ValueChanged += HandleServerTimeOffsetChanged;
private void HandleServerTimeOffsetChanged(object sender, ValueChangedEventArgs e)
{
    Debug.Log($"Offset: {e.Snapshot.Value}");
}

private void HandleConnectedChanged(object sender, ValueChangedEventArgs e)
{
    Debug.Log($"Connected: {e.Snapshot.Value}");
}

"연결 없음"상태로 전환하는 데 시간이 다소 걸릴 수 있지만 (예를 들어 WiFi를 끄면 즉시 트리거되지 않음) GoOffline()에 즉시 응답합니다 GoOnline.

주석을 요약하려면 :

".info/connected"iOS 및 Android SDK에서 구현되므로 기기에서 사용할 수 있습니다. Unity 에디터에서 테스트 할 때 C ++작성된 플랫폼 별 백엔드 SDK 의 재 구현이 대신 사용됩니다. 대신 ".info/connected"완전히 구현 된 것과 같은 특수 노드가 없습니다 (6.15.1 기준). 실시간 데이터베이스의 현재 연결된 상태와 관련된 로직을 테스트하려면 실제 기기에 배포해야합니다.

또한 주로 ValueChanged데이터를 읽고 데이터 RunTransaction를 쓰는 데 의존 할 수있는 방식으로 게임을 디자인하십시오 . 이를 통해 다양한 네트워킹 조건에서 탄력성을 제공하고 경쟁 조건에 대한 게임을 강화할 수 있으며 빠른 테스트 목적으로 필요한 경우 Unity 에디터에서 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Unity에서 Firebase와의 인터넷 연결을 감지 할 수있는 방법이 있습니까?

분류에서Dev

인터넷없이 LAN 케이블 / 연결을 테스트하는 방법

분류에서Dev

BIG AyncTask에서 인터넷 연결 변경을 처리하는 방법

분류에서Dev

인터넷 연결없이 RedHat 서버에 R을 설치하는 방법

분류에서Dev

Google 드라이브 Android API에서 onConnected 후 인터넷 연결 끊김을 처리하는 방법

분류에서Dev

인터넷 연결없이 dhcpcd를 재설치하는 방법

분류에서Dev

인터넷 연결없이 sbt를 설치하는 방법

분류에서Dev

더 이상 사용되지 않는 방법없이 Android Nougat에서 인터넷 연결 확인

분류에서Dev

인터넷 연결을 공유하는 방법?

분류에서Dev

인터넷 연결을 공유하는 방법

분류에서Dev

인터넷 연결 끊김을 기록하는 방법

분류에서Dev

인터넷을 통해 Paradox DB에 연결하는 방법

분류에서Dev

인터넷 연결없이 서버에 nuxt.js 용 npm 모듈을 설치하는 방법

분류에서Dev

인터넷 연결없이 서버와 앱을 통신하는 방법은 무엇입니까?

분류에서Dev

인터넷에 Windows 10 연결을 예약하는 방법이 있습니까?

분류에서Dev

인터넷 연결로 호스트 연결을 확인하는 방법

분류에서Dev

인터넷 연결없이 핫스팟을 만드는 방법은 무엇입니까?

분류에서Dev

인터넷 연결없이 핫스팟을 만드는 방법은 무엇입니까?

분류에서Dev

프로그램의 인터넷 연결을 보는 방법

분류에서Dev

ISP는 "인터넷 없음"상황을 어떻게 해결합니까?

분류에서Dev

ISP는 "인터넷 없음"상황을 어떻게 해결합니까?

분류에서Dev

내 Google지도 애플리케이션 (Android)에서 인터넷 연결을 확인하는 방법

분류에서Dev

내 Google지도 애플리케이션 (Android)에서 인터넷 연결을 확인하는 방법

분류에서Dev

jsonschema의 validate ()가 인터넷에 연결되는 것을 방지하는 방법

분류에서Dev

인터넷 연결없이 도커 바이너리를 사용하여 도커 엔진을 설치하는 방법

분류에서Dev

인터넷 연결 중단을 모니터링하는 방법-Mac OS X 용

분류에서Dev

에뮬레이터를 인터넷에 연결하는 방법.?

분류에서Dev

인터넷 연결없이 패키지를 설치하는 방법

분류에서Dev

쉘 스크립팅 : 인터넷 연결을 확인하는 적절한 방법?

Related 관련 기사

  1. 1

    Unity에서 Firebase와의 인터넷 연결을 감지 할 수있는 방법이 있습니까?

  2. 2

    인터넷없이 LAN 케이블 / 연결을 테스트하는 방법

  3. 3

    BIG AyncTask에서 인터넷 연결 변경을 처리하는 방법

  4. 4

    인터넷 연결없이 RedHat 서버에 R을 설치하는 방법

  5. 5

    Google 드라이브 Android API에서 onConnected 후 인터넷 연결 끊김을 처리하는 방법

  6. 6

    인터넷 연결없이 dhcpcd를 재설치하는 방법

  7. 7

    인터넷 연결없이 sbt를 설치하는 방법

  8. 8

    더 이상 사용되지 않는 방법없이 Android Nougat에서 인터넷 연결 확인

  9. 9

    인터넷 연결을 공유하는 방법?

  10. 10

    인터넷 연결을 공유하는 방법

  11. 11

    인터넷 연결 끊김을 기록하는 방법

  12. 12

    인터넷을 통해 Paradox DB에 연결하는 방법

  13. 13

    인터넷 연결없이 서버에 nuxt.js 용 npm 모듈을 설치하는 방법

  14. 14

    인터넷 연결없이 서버와 앱을 통신하는 방법은 무엇입니까?

  15. 15

    인터넷에 Windows 10 연결을 예약하는 방법이 있습니까?

  16. 16

    인터넷 연결로 호스트 연결을 확인하는 방법

  17. 17

    인터넷 연결없이 핫스팟을 만드는 방법은 무엇입니까?

  18. 18

    인터넷 연결없이 핫스팟을 만드는 방법은 무엇입니까?

  19. 19

    프로그램의 인터넷 연결을 보는 방법

  20. 20

    ISP는 "인터넷 없음"상황을 어떻게 해결합니까?

  21. 21

    ISP는 "인터넷 없음"상황을 어떻게 해결합니까?

  22. 22

    내 Google지도 애플리케이션 (Android)에서 인터넷 연결을 확인하는 방법

  23. 23

    내 Google지도 애플리케이션 (Android)에서 인터넷 연결을 확인하는 방법

  24. 24

    jsonschema의 validate ()가 인터넷에 연결되는 것을 방지하는 방법

  25. 25

    인터넷 연결없이 도커 바이너리를 사용하여 도커 엔진을 설치하는 방법

  26. 26

    인터넷 연결 중단을 모니터링하는 방법-Mac OS X 용

  27. 27

    에뮬레이터를 인터넷에 연결하는 방법.?

  28. 28

    인터넷 연결없이 패키지를 설치하는 방법

  29. 29

    쉘 스크립팅 : 인터넷 연결을 확인하는 적절한 방법?

뜨겁다태그

보관