- 뒤끝 SDK 버전 : 5.17.1
- 프로젝트명 : bpa
- 스테이터스 코드 :
- 에러 코드 :
- 에러 메시지 :
유니티를 사용중이고, Backend.IsInitialized == true 까지 확인한 상태에서
Backend.Notification.OnServerStatusChanged를 등록했는데 상태를 점검중이나 오프라인 등으로 변경해도
콜백이 날아오지 않습니다.
게스트로그인이나 버전 체크는 잘 동작하는것을 확인한 상태입니다.
SDK문서에서는 따로 전제 조건 같은게 보이지 않아서 어떤 설정을 더 해야
서버 설정 변경시 실시간 변경 콜백을 받을 수 있을지 궁금합니다.
https://docs.backnd.com/sdk-docs/backend/5.17.1/base/notify/handler-console/project-status 이 문서를 보고
아래와 같이 코드를 작성 했습니다.
public class MaintenanceModel
{
private static UniTaskCompletionSource<bool> currentTcs;
private static CancellationTokenSource currentCts;
public static async UniTask<bool> WaitForMaintenance()
{
currentCts?.Cancel();
currentTcs?.TrySetCanceled();
currentCts?.Dispose();
currentCts = new CancellationTokenSource();
currentTcs = new UniTaskCompletionSource<bool>();
CancellationToken token = currentCts.Token;
while (!Backend.IsInitialized)
await UniTask.Delay(100, cancellationToken: token);
Debug.Log($"[서버 상태 변경 감지 대기 시작]");
Backend.Notification.OnServerStatusChanged = (ServerStatusType serverStatusType) =>
{
Debug.Log(
$"[서버 상태 변경 감지]\n" +
$"| ServerStatusType : {serverStatusType}\n"
);
bool isUnavailable = serverStatusType == ServerStatusType.Maintenance || serverStatusType == ServerStatusType.Offline;
currentTcs?.TrySetResult(isUnavailable);
};
try
{
bool onMaintenance = await currentTcs.Task.AttachExternalCancellation(token);
if (onMaintenance)
Debug.Log("[서버 유지보수 중]");
else
Debug.Log("[서버 온라인]");
return onMaintenance;
}
catch (OperationCanceledException)
{
Debug.LogWarning("[WaitForMaintenance] 이전 요청이 취소됨");
return false;
}
}
}
커뮤니티글을 보고
소셜 설정의 실시간 알림 설정을 활성화 해봤는데도 마찬가지 입니다.
혹시 에디터 환경에서는 테스트가 불가능한지요?
SDK에서 Backend.Notification.Connect();까지하면 문제가 해결됩니다.
고통받을실 분들을 위해 남겨둡니다.