목록분류 전체보기 (60)
Wook No.1
인앱결제 예상 이슈 사항 1. 단일 상품만 결제 가능(복합결제 불가) 2. 제품 가격변경이 불가하여 포인트 사용 불가 3. 트렌젝션 처리 (플레이 스토어 결제 완료후 후처리 이슈 결제 구글 결제 취소 로직 처리 / Retry) 4. 지속적인 상품 추가에 대한 앱내 상품코드 정의 5. 구글 결제 취소 / 환불 별도 관리(플레이 스토어) 엔카 인앱 결제 Client, Server diagram 1. 주문정보 요청 / 발급 (결제 API, 전처리) 2. 선택한 ITEM 결제(인앱 API) 3. 결제 완료된 상품 소비(인앱 API) 4. 상품 지급 요청(주문 ID, 구매 Token) 5. 결제정보 검증(주문정보 / 구글결제 정보 검증) 6. 상품지급(후처리) 7. 결제 완료 페이지
1. 라이브러리 설정 app/build.gradle AndroidManifest.xml BillingClient 초기화 Google Play 결제 연결 구입가능 상품 표시 상품구매 구매처리 구매확인 Google Play 결제 라이브러리 버전 2.0부터는 앱에서 모든 구매를 소비하거나 확인해야 합니다. 3일 이내에 구매를 소비하거나 확인하지 않으면 Google에서 자동으로 구매를 취소하고 사용자에게 환불합니다. 자세한 내용은 구매 확인을 참조하세요. 서버API https://developers.google.com/android-publisher/api-ref/rest/v3/inappproducts
1. 라이선스 테스트 구글 플레이 콘솔 -> 설정 -> 라이선스 테스트 테스터 계정을 등록하여 해당 계정으로 결제시 청구되지 않음. 정기 구독권의 경우 1개월 -> 5분 주기로 변경 가능 2. 내부 테스트 설정 출시 > 테스트 > 내부 테스트 3. APK 업로드 수익 창출 > 인앱 상품 > 새 APK 업로드(인앱 결제가 구현된 APK) 4. 인앱 상품 등록 - 소비성 상품: 앱에서 여러번 구매하고 소비 할 수 있는 형태 - 비소비성 상품: 한 번 구매하면 영구히 적용되어서 중복 구매가 되지않는 형태 상품 만들기 저장 후 "활성화" 해야 앱에서 사용할 수 있는 상태가 된다.
코루틴(Coroutine) 이란 서브 루틴을 일시 정지하고 재개할 수 있는 프로그래밍 Thread와 차이점 Thread OS의 Native Thread에 직접 링크되어 동작하여 많은 시스템 자원을 사용한다. Thread간 전환 시에도 CPU의 상태 체크가 필요하므로 그만큼의 비용이 발생한다 Thread 코루틴은 즉시 실행하는 게 아니며, Thread와 다르게 OS의 영향을 받지 않아 그만큼 비용이 들어가지 않는다. 코루틴 전환시 Context Switch가 일어나지 않는다. 개발자가 직접 루틴을 언제 실행할지, 언제 종료할지 모두 지정이 가능하다. 이렇게 생성한 루틴은 작업 전환 시에 시스템의 영향을 받지 않아 그에 따른 비용이 발생하지 않는다.
Serializable 은 Java 만 아는 사람이라면 쉽게 알 수 있는 serialization 방법. 그냥 Serializable 을 implementation 만 해주면, serialize 가 필요한 순간에 알아서 serialze 해주는 편리한 marker interface. 그러나, mobile 시대가 강림하면서 등장한 유망한 어린이(?) 가 있으니 그는 바로 Parcelable 이 녀석은 IPC ( Inter Process Communication ) 에 최적화된 녀석으로 Serialize 보다 속도가 빠르다. 물론, 해야 하는 일은 Serialize 보다 훨씬 많다. (writeToParcel, describeContents, new Creator(), 생성자 Parcel read) 직접 se..
웹브라우저는 사용자IP를 웹서버에 전달하면서 상호간 통신(TCP 세션 연결)은 시작된다. 일단 세션이 연결되면 HTTP Request Header와 Body에 주소와 요청 데이터를 포함하여 웹서버에 전달한다. 이때 웹서버는 사용자 요청의 유효성을 검증한 후 이상이 없다면 HTTP Response Header 및 Response Body에 문서를 만들어 사용자에게 전달하게 된다. 세션연결 및 데이터 전송과정 Listen: 웹서버가 포트를 열어놓고 사용자 요청을 대기중인 상태이다. SYN-Sent: 사용자가 웹서버에 접속요청을 시도하는 단계 SYN-Received: 사용자 요청에 대한 응답으로 ACK와 SYN을 전송한다. ACK: 사용자는 다시한번 웹 서버의 응답(SYN,ACK)에 확인 메시지인 ACK를 전..
Activity 애플리케이션 구성 요소로서, 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기 등의 일을 하기 위해 상호작용할 수 있는 화면을 제공합 니다. 액티비티마다 창이 하나씩 주어져 이곳에 사용자 인터페이스를 끌어올 수 있습니다. 이 창은 일반적으로 화면을 가득 채우지만, 작은 창으로 만들어 다른 창 위에 띄울 수도 있습니다. public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onP..
REST(Representational State Transfer) 자원(Resource)을 정의하고 자원에 대한 주소를 지정하는 방법 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)를 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미 REST 구성요소 1. 자원(Resource): URI - 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다. - 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다. - Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에..