안녕하세요.
이번에 통신 3사에 부분유료화를 구현하려고 하는중인데요..
궁금한 점이 생겨서요..
아직 오즈쪽 관련 sdk는 확인 하지 않았는데요..
SKT, KT쪽은 Activity 상속으로 부분유료화를 진행하도록 유도 하더라고요..
꼭 자사들의 액티비티를 상속받아 구현하도록 하는 이유가 뭔지 궁금하네요..
구현하는 개발사에서는 좀 불편한 느낌이 들고 있는데.. 어떠한 제약사항때문인지 아시는분 있으시면 답변좀 부탁 드리겠습니다 ^^
안드로이드의 기본은 액티비티에서 출발하니까
미리 뭔가를 구현해 두려면 액티비티가 적절한 선택입니다.
즉, 액티비티를 상속받은 클래스에 필요한 걸 미리 구현해 놓고 그걸 상속받도록 하는 것이지요.
이렇게 하면 상속받아 구현하는 사람들이 가장 적은 코딩으로 할 수 있으니까요.
단점은 그냥 액티비티가 아니라 예를 들어 ListActivity 같은 걸 상속받아야 할 때인데요
다중 상속이 안되니까 어쩔 수 없이,
일단 ListActivity 같은 걸 상속 받은 후에, SDK에서 미리 만들어 놓은 액티비티의 구현 내용을
카피 & 페이스트로 옮겨 붙여야 하겠지요.
SDK를 제대로 설계했다면 그 클래스 내에서 진짜 일을 하는 클래스의 객체를 품고 있을 거예요.
그리고 액티비티 상속한 클래스에서는 진짜 일하는 클래스 객체의 함수 호출로 해놓았을 거구요.
즉, 안드로이드의 Activity를 상속하여 미리 만들어 놓은 액티비티를 SDKActivity라고 한다면
SDKActivity 내에서 진짜 일을 수행하는 예를 들어 Payment라는 클래스 객체를 가지고 있을 거고
SDKActivity에서는 액티비티 생명주기에 따라 Payment의 함수를 호출해주는 방식으로 되어 있을 거예요.
이렇지 않고 진짜 일을 SDKActivity 내에서 모두 수행한다면
SDKActivity 외의 다른 액티비티를 상속받아야 하는 경우, 매우 복잡해지거든요.
그래서 단순히 안드로이드의 Activity를 상속받는 경우에는 그냥 SDKActivity를 상속받아 간단히 처리하고
안드로이드의 Activity가 아닌 다른 액티비티를 상속받아야 하는 경우에는 Payment 클래스를 직접 사용하게 하는 거죠.
저는 부분유료화 할 일이 없어서 통신 3사의 SDK는 살펴보지 않았는데 아마도 이런 식으로 구현해 놓지 않았을까요?
실재로 제가 만든 로봇 SDK가 이런 식으로 되어 있습니다.
저의 SDK를 사용하는 분들은 안드로이드 개발자만 있는 건 아니거든요.
안드로이드 개발자 아닌 분들에게 액티비티라는 걸 이해시키고 생명주기가 어쩌고 저쩌고 하면 답이 안 나오지요.
그래서 안드로이드 잘 모르시는 분들은 그냥 미리 만들어 놓은 RobotActivity를 상속 받아 비어 있는 부분을 원하는 대로 채워넣기만 하면 되도록 하고, 안드로이드 잘 아시는 분들은 필요에 따라 RobotActivity가 품고 있는 진짜 일을 하는 클래스를 바로 사용하게 가르칩니다.
dingpong님, 아까이님 답변 감사합니다 ^^
제가 이 질문이 발생하게 된 원인이 각 통신사들의 Activity가 따로 존재하게 되어 해당 통신사에 포팅을 할 경우 빌드하는데에 따른 비용이 발생하여 불편함을 느끼게 되었거든요.. 아직 안드로이드와 자바에 대한 지식이 많이 부족하지만, C++ 처럼 #define 을 사용하여 전처리 빌드를 사용할수도 없다고 하니.. 지금은 가짜 메인 Activity를 만들어 해당 통신사에 따라 상속받는 Activity를 startAcitivity()로 구현을 하고 있는데요.. 혹시 더 좋은 방법을 알고 계신다면 공유해주실수 있을까요??




제가 구현해보기로 구글 체크아웃하고 삼성앱스 쪽만 따로 Activity 를 안쓰더라구요.
그렇다고 삼성쪽 구현하는게 어려운건 아닌데요^^
oz 는 왠지 skt 쪽 거의 따라한 것 같구요..
만약 부분 유료화 모듈을 만드는 사람이라고 하면, 가장 쉽게 구현할 수 있는 방법이,
자신들의 모듈을 상속받아서 구현하게 하는게 가장 쉬운게 아닐까 싶은 생각이 드네요.