주말 서버 테스트를 위해서 API 구현 & iOS 빌드 테스트
서버에 업로드할 유저 데이터를 가다듬고 있던 중 @_@
57% 했는데. ( 정확히 그만큼 .. 어림이 아니라 변수 개수를 셌음)
- 오늘 안에 어짜피 못할 것이고
- 주말에 보통 서버개발자 (외주인력) 님이 작업을 폭풍으로 해놓으시기 때문에
오늘은 모든 API 구현을 가다듬고 테스트 하기로 했다!
유저 데이터 업로드 기능이 얼기설기 구현되어있어서 잘 정리하고
구조나 설계, OOP 적으로 개선했다.
유저 단일 데이터
public class UserDatum
{
string Key;
string TypeString;
string Value;
public UserDatum(string key, string type, string value);
public string GetKey();
public string GetServerSupportedValueString();
}
( 구체적인 구현내용은 회사 기밀 이라 생략합니다. )
목표는 다음과 같았다.
- 일단 만들면 변조 가능성이 없어야한다.
- 쉽게 wwwForm에 싣을 수 있도록 string 함수를 빼놓는다.
- 업로드는 UserDatum[] 을 인자로 던져서 , 업로드 할 데이터만 골라 올리도록 했다. ( 서버단에서 구현된 내용 )
팝업 매니저 인터페이스
public interface IPopUpMessenger
{
void PopError(string content);
void PopText(string content);
}
목표는 다음과 같았다.
- 통신의 결과와 에러 등을 유저와 테스터에게 알려 줄수 있어야 하는데, 일일히 파편적으로 구현할 수 없다.
- 어짜피 스트링 값을 띄우는 정도의 기능에 집중한다.
- 통신부 함수에 그때 그때 상황에 맞는 인자로 이 인터페이스를 가진 객체를 던지도록 해서, 활용성과 재사용성을 증대시킨다. 사실 이게 제일 맘에 든다. 원래는 추상 클래스로 구현하려다가, 인터페이스가 좀 더 명확하다는 걸 알게 되었다. 테스트 빌드 용 팝업 매니저에서는 텍스트에 입력 string 계속해서 더해서 지난 로그도 볼 수 있게 한다.
로딩 서클 인터페이스
public interface ILoadingCircle
{
void Show();
void Hide();
}
통신 중일 떄 (남은 시간을 알 수 없는 로딩), 뱅글 뱅글 돌아가거나 지금 로딩중이고 ANR이 아니라는 것을 알려주기 위한 객체가 가져야할 인터페이스.
코드가 단순하지만, 대칭성을 갖추어 굉장히 우아하게 나왔다. (자화자찬ㅎㅎ)
무한으로 크기가 변하는 스크롤 텍스트 구현
UGUI.TEXT 컴포넌트를 가진 오브젝트에 ,
[ UGUI ] -> [ Content Size Fitter ]를 컴포넌트로 달고 , -> [ (enum) Vertical Fit ] 항목을 [ Preferred Size ]로 설정해준다.
지난번에도 혼자 구현해보려고 하다가 기능을 잘 몰라서 실패했는데, 이번에 알아냈다.
유니티 API에서
[ Preferred Size ] 가 의미하는 건 뭘까 @_@.. 혹시 전통적인 이름일까?
당연히 공부목록에 넣었다.
유저 데이터 업로드 함수 개선
void Upload(UserDatum[] userData,
IPopUpMessenger popUp, Action<UnityWebRequest, IPopUpMessenger> onSendEvent)
{ }
목적 :
- 최대한 코루틴이 쓰기 싫었다.
- 함수 하나를 호출해서 깔끔하게 끝나고 싶었다. ( 위랑 비슷한데, 코루틴 기다렸다가 일드로 넘기는 등의 호출을 고수준에서 사용하기 싫었다)
업로드 테스트 드디어 성공 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
신난다.. ㅎㅎㅎㅎ 오늘 일을 좀 열심히 한듯.. 재밌기도 했고 나름의 챌린지도 있었고 발전도 있었다. 콜백 스킬이 ++ 된 것 같음. 콜백 넘나 조음
운동
push up 13 !
이젠 아침에 하기로 했다.