[뒤끝팁] 뒤끝으로 ‘버전 관리’ 편하게 하는 방법


안녕하세요! 뒤끝입니다?

뒤끝 커뮤니티를 둘러보면 많은 개발자님들이 남겨주신 문의사항들을 확인할 수 있습니다.

그중에서도 주기적으로 꾸준히 여쭤보시는 것들이 있어요. 그래서 오늘은 뒤끝 커뮤니티에 자주 올라오는 질문 중 하나인 ‘버전 관리’ 기능에 대하여, 그 과정을 직접 안내드리고자 합니다.

게임 업데이트 알림 창 이미지

“뒤끝으로 버전 관리까지 편하게 할 수는 없나요?”

뒤끝의 ‘버전 관리’ 기능을 활용하면 iOS · Android 환경에서 ① 게임의 버전을 손쉽게 확인하고, 업데이트가 필요할 때 이미지와 같이 ② 유저가 마켓에서 업데이트를 진행하도록 유도할 수 있습니다.

그럼 뒤끝 개발자가 알려주는 ‘버전 관리’부터 ‘업데이트 UI’ 스크립트 작성하는 법까지, 함께 알아보아요?


1. 버전 규칙 정하기

버전 관리를 위해서는 우선 개발자님이 어떤 규칙으로 버전을 생성할 것인지 결정을 해야 하며, 정해둔 규칙에 따라 버전을 입력해 주어야 합니다.


[버전 규칙(가정)]

① 버전을 음이아닌 정수로만 선언하며, 해당 정수는 항상 증가하는 수이다.
② 버전을 x.y.z 형태로 선언한다.

③ x, y, z는 각각 아래와 같은 경우 증가시킨다.

버전 번호 형식

이름설명증가 규칙
xMajor 버전 내부적으로 대대적인 수정이 있는 경우 (리팩토링 작업 등)
yMinor 버전신규 기능이 추가된 경우
zPatch 버전버그를 수정한 경우

2. 유니티 플레이어 세팅 설정

Unity > File > Build Settings > “각 플랫폼 (iOS / Android) 탭” > Other Settings 에 존재하는 Version 항목에 클라이언트 버전을 각각 설정할 수 있습니다.

Unity > File > Build Settings > iOS / Android > Other Settings > Version 항목

* 유니티 버전에 따라 Version을 설정하는 경로가 바뀔 수 있습니다.

빌드를 하기 전, 유니티 플레이어에서 1번에서 정한 규칙에 따라 클라이언트 버전을 입력해줍니다.

3. 뒤끝 콘솔 설정

뒤끝 콘솔 > 해당 게임 프로젝트 > 서버설정 > 버전 관리에서, 유저들에게 버전 업데이트를 안내하기 위해 필요한 정보들을 아래와 같이 설정할 수 있습니다.

① 버전: 유니티 플레이어 세팅에 입력한 것과 동일한 버전을 등록합니다.
② 대상 플랫폼: 각 플랫폼 (iOS / Android) 별로 버전을 다르게 설정할 수 있습니다.
③ 업데이트 내용: 간단한 업데이트 설명을 기재합니다.
④ 업데이트 방식: 유저에게 업데이트를 선택하도록 할 것인지 혹은 강제할 것인지 설정합니다.

뒤끝 콘솔 버전 관리 인터페이스

단, 뒤끝 콘솔에서 이루어지는 버전 등록 작업은 반드시 각 스토어 검수를 통과한 후 진행되어야 합니다.

❗ 왜 스토어 검수를 통과한 후, 새 버전을 등록해야 하나요?

스토어 검수를 통과해야만 각 스토어에 최신 버전이 성공적으로 업로드됩니다. 즉 검수를 통과
하지 않았다는 것은 마켓에 최신 버전이 올라간 상태가 아니라는 것을 의미하므로, 유저에게 
업데이트 유도를 해서는 안됩니다. 결론적으로, 반드시 스토어 검수를 통과한 후 뒤끝 콘솔에 
버전을 등록해 주어야 합니다.

* 뒤끝 ‘버전 관리’ 콘솔 가이드 바로 가기

4. 스크립트 작성

위 3단계 까지, 유니티 및 뒤끝 콘솔에 버전 정보를 등록하는 작업을 완료하였습니다.

등록을 마쳤다면, 이제 게임 시작 시 뒤끝 콘솔의 버전 정보를 조회하여 최신 버전이 존재할 때 각 유저에게 업데이트를 진행하도록 유도하는 ‘업데이트 UI‘를 띄우기 위한 스크립트를 작성해야 합니다.

기본적인 플로우는 아래와 같습니다.

① 게임 실행
② 클라이언트 버전 정보 조회
③ 뒤끝 서버에서 게임의 최신 버전 정보 조회
④ 비교 후 뒤끝 서버의 버전 정보가 더 최신일 때, 유저가 스토어에서 업데이트 파일을 다운하도록 유도

✔ 아래는 위 플로우를 수도코드로 작성한 것입니다.
✔ 단순 참고용으로서 게임에 그대로 복사 후 붙여넣기 할 시 정상적으로 작동하지 않을 수 있습니다.

다음을 참고하여 개발자님의 게임에 맞는 로직을 작성해 보세요.

// Version 은 System namespace에 존재하는 클래스입니다.
// https://docs.microsoft.com/ko-kr/dotnet/api/system.version?view=netframework-4.5.2

private void UpdateCheck()
{
  // 유니티 플레이어 세팅에 설정한 버전 정보
  Version client = new Version(Application.version);
	Debug.Log("clientVersion: " + client);

#if UNITY_EDITOR
	// 뒤끝 버전 정보 조회는 iOS / Android 환경에서만 호출 할 수 있습니다.
	Debug.Log("에디터 모드에서는 버전 정보를 조회할 수 없습니다.");
	return;
#endif

	// 뒤끝 콘솔에서 설정한 버전 정보를 조회
	Backend.Utils.GetLatestVersion(callback => {
		if(callback.IsSuccess() == false)
		{
			Debug.LogError("버전 정보를 조회하는데 실패하였습니다.\n"+callback);
			return;
		}
		
		var version = callback.GetReturnValuetoJSON()["version"].ToString();
		Version server = new Version(version);

		var result = server.CompareTo(client);
		if(result == 0)
		{
			// 0 이면 두 버전이 일치하는 것 입니다.
			// 아무 작업 안하고 리턴
			return;
		}	
		else if(result < 0)
		{
			// 0 미만인 경우 server 버전이 client 보다 작은 경우 입니다.
			// 애플/구글 스토어에 검수를 넣었을 경우 여기에 해당 할 수 있습니다.
			// ex)
			// 검수를 신청한 클라이언트 버전은 3.0.0, 
			// 라이브에 운용중인 클라이언트 버전은 2.0.0,
			// 뒤끝 콘솔에 등록한 버전은 2.0.0 

			// 아무 작업을 안하고 리턴
			return;
		}
		// 0보다 크면 server 버전이 클라이언트 이후 버전일 수 있습니다.
		else if(client == null)
		{
			// 단 클라이언트 버전 정보가 null인 경우에도 0보다 큰 값이 리턴될 수 있습니다.
			// 이 때는 아무 작업을 안하고 리턴하도록 하겠습니다.
			Debug.LogError("클라이언트 버전 정보가 null 입니다.");
			return;
		}

		// 여기까지 리턴 없이 왔으면 server 버전(뒤끝 콘솔에 등록한 버전)이 
		// 클라이언트보다 높은 경우 입니다.

		// 유저가 스토어에서 업데이트를 하도록 업데이트 UI를 띄워줍니다.
		OpenUpdateUI();
	});
}

const string PlayStoreLink = "market://details?id=패키지 네임";
const string AppStoreLink = "itms-apps://itunes.apple.com/app/앱ID";

// 아래는 OpenUpdateUI 함수를 이용하여 업데이트 UI가 활성화 되었고,
// 업데이트 UI 객체 내에 확인 버튼이 있으며
// 해당 버튼 클릭 시 아래 함수를 호출 할 경우
// 각 OS 환경에 따라 각각의 스토어 URL로 이동하도록 하는 함수입니다.
public void OpenStoreLink()
{
#if UNITY_ANDROID
      Application.OpenURL(PlayStoreLink);
#elif UNITY_IOS
      Application.OpenURL(AppStoreLink);
#else
      Debug.LogError("지원하지 않는 플랫폼 입니다.");
#endif
}

지금까지, 뒤끝 커뮤니티에서 꾸준한 문의가 있었던 ‘버전 관리’ 기능에 대하여 알아보았습니다.

새로운 버전을 등록하고 유저에게 업데이트 안내 UI를 띄우기 위한 스크립트까지, 버전을 관리하는 전 과정을 보여드리려고 하였는데요?

혹시나 궁금한 점이 발생하신다면 언제든지 댓글을 통해 문의 남겨주세요. 개발자 여러분이 뒤끝의 기능을 필요하실 때, 모두 활용하시는 그 날까지 뒤끝이 함께하겠습니다.

1

댓글