KT Android olleh마켓    연동 가이드      (V 1.8)      2010. 12.   컨버전스와이브로 사업본부      단말연구센터
KT Android olleh 마켓 연동     문서번호                      버전    V 1.8   쪽       2                가이드                         작성...
KT Android olleh 마켓 연동   문서번호                  버전       V 1.8   쪽       3                가이드                      작성자     ...
KT Android olleh 마켓 연동                               문서번호                                                     버전          ...
KT Android olleh 마켓 연동                            문서번호                                                  버전                ...
KT Android olleh 마켓 연동   문서번호             버전   V 1.8   쪽       6            가이드                      작성자    홍유리/이주영   최종수정...
KT Android olleh 마켓 연동     문서번호                  버전    V 1.8   쪽       7                  가이드                         작성자 ...
KT Android olleh 마켓 연동      문서번호                    버전   V 1.8   쪽       8                     가이드                        ...
KT Android olleh 마켓 연동     문서번호                     버전   V 1.8   쪽       9                     가이드                        ...
KT Android olleh 마켓 연동     문서번호                 버전   V 1.8   쪽      10                   가이드                         작성자  ...
KT Android olleh 마켓 연동       문서번호                    버전   V 1.8   쪽      11                     가이드                       ...
KT Android olleh 마켓 연동        문서번호                  버전   V 1.8   쪽      12                     가이드                        ...
KT Android olleh 마켓 연동    문서번호                         버전   V 1.8   쪽      13                     가이드                     ...
KT Android olleh 마켓 연동     문서번호                      버전   V 1.8   쪽      14                     가이드                       ...
KT Android olleh 마켓 연동     문서번호                  버전   V 1.8   쪽      15                   가이드                         작성자 ...
KT Android olleh 마켓 연동   문서번호                버전       V 1.8    쪽      16               가이드                      작성자     홍유...
KT Android olleh 마켓 연동     문서번호              버전   V 1.8   쪽      17               가이드                        작성자     홍유리/이...
KT Android olleh 마켓 연동     문서번호                 버전   V 1.8   쪽      18                 가이드                         작성자    ...
KT Android olleh 마켓 연동    문서번호                 버전   V 1.8   쪽      19                가이드                        작성자       ...
KT Android olleh 마켓 연동        문서번호                  버전   V 1.8   쪽      20               가이드                           작성자...
KT Android olleh 마켓 연동    문서번호               버전   V 1.8   쪽      21               가이드                        작성자     홍유리/이...
KT Android olleh 마켓 연동     문서번호                      버전   V 1.8   쪽      22                가이드                          작성...
KT Android olleh 마켓 연동     문서번호                    버전   V 1.8   쪽      23                      가이드                        ...
KT Android olleh 마켓 연동   문서번호                           버전   V 1.8   쪽      24                        가이드                 ...
KT Android olleh 마켓 연동     문서번호                       버전        V 1.8      쪽      25                    가이드               ...
KT Android olleh 마켓 연동   문서번호                        버전    V 1.8   쪽      26                  가이드                       작성...
KT Android olleh 마켓 연동        문서번호                      버전   V 1.8   쪽      27                     가이드                    ...
KT Android olleh 마켓 연동   문서번호               버전   V 1.8   쪽      28               가이드                      작성자      홍유리/이주영...
KT Android olleh 마켓 연동   문서번호                 버전      V 1.8      쪽      29                      가이드                      작...
KT Android olleh 마켓 연동   문서번호                       버전        V 1.8   쪽      30                  가이드                      ...
KT Android olleh 마켓 연동   문서번호              버전   V 1.8   쪽      31                가이드                      작성자    홍유리/이주영  ...
KT Android olleh 마켓 연동   문서번호                        버전   V 1.8   쪽      32                 가이드                       작성자 ...
KT Android olleh 마켓 연동      문서번호                    버전      V 1.8   쪽       33                   가이드                      ...
KT Android olleh 마켓 연동   문서번호             버전     V 1.8   쪽      34                        가이드                      작성자    ...
KT Android olleh 마켓 연동        문서번호                     버전   V 1.8   쪽      35                   가이드                       ...
KT Android olleh 마켓 연동       문서번호                          버전         V 1.8    쪽      36              가이드                 ...
KT Android olleh 마켓 연동            문서번호                                   버전            V 1.8          쪽         37        ...
KT Android olleh 마켓 연동           문서번호                                 버전            V 1.8         쪽         38    가이드     ...
KT Android olleh 마켓 연동        문서번호                                 버전           V 1.8          쪽         39               ...
KT Android olleh 마켓 연동      문서번호                             버전          V 1.8       쪽        40                      가이드 ...
KT Android olleh 마켓 연동       문서번호                     버전   V 1.8   쪽      41                    가이드                       ...
KT Android olleh 마켓 연동        문서번호                              버전          V 1.8         쪽     42                        ...
KT Android olleh 마켓 연동         문서번호                              버전          V 1.8          쪽      43                  가이드...
KT Android olleh 마켓 연동              문서번호                                     버전             V 1.8          쪽          44  ...
KT Android olleh 마켓 연동    문서번호                      버전        V 1.8     쪽       45                가이드                     ...
KT Android olleh 마켓 연동   문서번호             버전   V 1.8   쪽      46          가이드                      작성자    홍유리/이주영   최종수정일자...
KT Android olleh 마켓 연동   문서번호                       버전        V 1.8   쪽      47                   가이드                     ...
Upcoming SlideShare
Loading in …5
×

Kt android +++¦+¦--_+¼¦+¦í+¦¦s_v1.8

2,695 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,695
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
59
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Kt android +++¦+¦--_+¼¦+¦í+¦¦s_v1.8

  1. 1. KT Android olleh마켓 연동 가이드 (V 1.8) 2010. 12. 컨버전스와이브로 사업본부 단말연구센터
  2. 2. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 2 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20개정이력버전 변경일 변경사항 작성자V 1.0 2010.04.07 - olleh 마켓 App Manager 최초작성V 1.0 2010.04.19 - 1.3. 셀프 업데이트 확인 사용을 위한 초기 페이지에 추가되는 기능 - SELF_UPDATE_CHECK_BROADCAST에서 SELF_UPDATE_CHECK_RECEIVERD로 변경V 1.0 2010.05.10 - 3. 플랫폼 SMS 수신 연동 규격 - Activity 에서BroadcastReceiver로 변경 result payload로 수정V 1.0 2010.05.10 - vnd.show.app.manager/vnd.self.update.check에서 vnd.olleh.app.store/vnd.update.check로 변경 - “4.1. 외부 어플리케이션에서 olleh 마켓 실행 규격” 추가V 1.0 2010.06.20 - 업데이트 요청을 MimeType에서 Action으로 변경 - 어플리케이션 종료 방법 변경. - 업데이트 요청 시 Contents의 Type Extra 추가 intent.putExtra("type", "APP"); - packagename를package_name으로 수정한다.V 1.0 2010.08.25 - “4.2. olleh 마켓 실행 중 컨텐츠 소개페이지 이동” 추가 - “[중요] 셀프 업데이트 확인 요청 시 Response 가 없는 경우 를 대비해서 방어 코드를 추가하여야 한다.” 추가V1.2 2010.10.18 - 스마트폰/KPad/SoIP 규격 병합V1.3 2010.10.22 - Preload 어플리케이션 버전 정보 관리 항목 추가.V1.4 2010.11.10 - In App Purchase 연동 규격서 추가.V1.5 2010.11.12 - 플랫폼 SMS 수신 연동 Receiver 샘플 추가. - 플랫폼 SMS 수신 연동 테스트 설정 방법 추가. - IRemoteInAppPurchaseService.aidl 수정. - In App Purchase 샘플 소스 수정. - Result Code값 추가 (800 - 올레마켓에서 구매하지 않은 어플리케이션)V1.5 2010.11.15 - Result Code값 추가 (998 - 결제를 진행하는 동안 문제가 발생) - 결제 취소 더미 메소드 선언.V1.5 2010.11.16 - In App Purchase을 지원하는 최소 버전 정보 추출 추가.V1.5 2010.11.18 - 플랫폼 SMS 수신 연동 규격 보완. Page :2/47
  3. 3. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 3 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20V1.6 2010.12.08 - In App Purchase 테스트, 상용서버 테스트 방법 추가.V1.6 2010.12.13 - In App Purchase 샘플 소스 설명 추가. - In App Purchase Sequence Diagram 상세화, Blocking 부분 추가, 설명 추가. - In App Purchase Preload, Install 버전 olleh 마켓 별 지원 네트워크 추가. - In App Purchase Install 버전 olleh 마켓에서 네트워크 오류 ResultCode 추가(902: Install 버전 olleh 마켓에서 3G이외의 망에서 In App Purchase 결제 요청 불가.)V1.0 2010.07.08 - olleh 마켓 Front 최초작성V1.1 2010.07.12 - 검색 규격 추가V1.2 2010.07.20 - 웹 연동 규격 추가V1.3 2010.07.22 - 상품 목록 규격 추가 및 MimeType 수정 규격 종류 추가V1.4 2010.08.06 - ID/PW 입력화면 규격 추가 규격 종류 추가V1.5 2010.08.08 - My 화면 연동 규격 추가 규격 종류 추가V1.6 2010.08.14 - My 화면 연동 규격 내용 추가 규격 내용 추가V1.7 2010.08.19 - RO 구매화면 연동 규격 내용 추가 규격 내용 추가V1.8 2010.08.27 - ID/PW 입력화면 규격 변경 규격 내용 변경V1.9 2010.08.31 - 상세화면 호출 시 성인 컨텐츠 정보 추가 규격 내용 변경 - RO 구매화면 연동 구격 변경V1.10 2010.09.01 - RO 구매화면 연동 구격 변경 규격 내용 변경V1.11 2010.09.03 - 브랜드 샵 리스트 이동 규격 내용 추가 규격 종류 추가 - 필수 어플 설치 페이지 이동 규격 추가 - Home 이동 규격 추가V1.12 2010.09.07 - 웹 연동 상세화면 호출 성인 컨텐츠 정보 추가 규격 내용 변경V1.13 2010.11.11 - 웹 연동 멀티다운로드 호출 규격 추가 규격 종류 추가V1.14 2010.11.16 - 웹 연동 멀티다운로드 호출 규격 변경 규격 내용 변경 - N_ID 를 C_ID 로 변경V1.15 2010.11.18 - 상품 목록 규격 내용 변경 규격 내용 변경 - 기존 필수 항목을 필수와 옵션으로 구분 문구 오류 수정 - 일부 타이틀 문구 오류 수정 규격 통합 - SP/SoIP/PAD 규격 통합V1.16 2010.12.08 - 다운로드 중지 페이지 규격 추가 규격 종류 추가V1.17 2010.12.14 - 파라미터 option 항목 정리 규격 내용 변경V1.8 2010.12.14 - olleh 마켓 Front와 App Manager 연동 규격 통합 및 보완 - Page :3/47
  4. 4. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 4 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 목차1. 개요 ...................................................................................................................................................................... 6 1.1. 목적 .................................................................................................................................................................................................. 6 1.2. 적용범위......................................................................................................................................................................................... 62. INTENT 호출 규격 ............................................................................................................................................. 7 2.1. CONTENT 상세화면 ..................................................................................................................................................................... 7 2.1.1. Content 상세화면 Intent parameter 정의 ........................................................................................................... 7 2.1.2. Content 상세화면 Intent parameter 정의 ........................................................................................................... 8 2.2. 검색 .................................................................................................................................................................................................. 9 2.2.1. 검색 Intent parameter 정의 ....................................................................................................................................... 9 2.2.2. 검색 호출 예시 ................................................................................................................................................................. 9 2.3. 상품 목록 ..................................................................................................................................................................................... 10 2.3.1. 상품 목록 Intent parameter 정의 .......................................................................................................................... 10 2.3.2. 상품 목록 호출 예시 .................................................................................................................................................... 11 2.4. MY 구매 화면............................................................................................................................................................................. 12 2.4.1. My 구매 화면 Intent parameter 정의 ................................................................................................................. 12 2.4.2. My 구매 화면 호출 예시 ........................................................................................................................................... 12 2.5. 브랜드샵 리스트 ....................................................................................................................................................................... 13 2.5.1. 브랜드샵 리스트 이동 Intent parameter 정의 ................................................................................................ 13 2.5.2. 브랜드샵 리스트 호출 예시 ...................................................................................................................................... 13 2.6. HOME 화면 .................................................................................................................................................................................. 14 2.6.1. Home 화면 Intent parameter .................................................................................................................................. 14 2.6.2. Home 화면 호출 예시 ................................................................................................................................................ 143. WEB 연동 규격 ................................................................................................................................................ 15 3.1. CONTENT 상세 화면.................................................................................................................................................................. 15 3.1.1. Content 상세 화면 정의 ............................................................................................................................................ 15 3.1.2. Content 상세 화면 호출 예시 ................................................................................................................................. 16 3.2. 검색 ................................................................................................................................................................................................ 17 3.2.1. 검색 정의 ........................................................................................................................................................................... 17 3.2.2. 검색 호출 예시 ............................................................................................................................................................... 17 3.3. 상품 목록 ..................................................................................................................................................................................... 18 3.3.1. 상품 목록 정의 ............................................................................................................................................................... 18 3.3.2. 상품 목록 호출 예시 .................................................................................................................................................... 19 3.4. MY 구매 화면............................................................................................................................................................................. 20 Page :4/47
  5. 5. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 5 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 3.4.1. My 구매 화면 정의....................................................................................................................................................... 20 3.4.2. My 구매 화면 호출 예시 ........................................................................................................................................... 20 3.5. 브랜드샵 리스트 ....................................................................................................................................................................... 21 3.5.1. 브랜드샵 리스트 이동 정의 ...................................................................................................................................... 21 3.5.2. 브랜드샵 리스트 화면 호출 예시 .......................................................................................................................... 21 3.6. HOME 화면 .................................................................................................................................................................................. 22 3.6.1. Home 화면........................................................................................................................................................................ 22 3.6.2. Home 화면 호출 예시 ................................................................................................................................................ 224. 어플리케이션 SELF UPDATE ........................................................................................................................... 23 셀프 업데이트 확인 사용을 위한 초기 페이지에 추가되는 기능 .................................................................................... 235. 플랫폼 SMS 수신 연동 규격 .......................................................................................................................... 26 5.1. 어플리케이션 구동 및 PARAMETER 전달 규격 ............................................................................................................... 26 5.2. 플랫폼 SMS 를 통한 어플리케이션 실행 테스트를 위한 설정 ............................................................................ 276. 외부 어플리케이션에서 OLLEH 마켓 실행 규격 .......................................................................................... 29 6.1. 외부 어플리케이션에서 OLLEH 마켓 실행 규격 ........................................................................................................... 29 6.2. OLLEH 마켓 실행 중 컨텐츠 소개페이지 이동.............................................................................................................. 307. PRELOAD 어플리케이션 버전 정보 관리 ..................................................................................................... 31 PRELOAD 어플리케이션 버전 정보 관리 ....................................................................................................................................... 318. IN APP PURCHASE 연동 ................................................................................................................................ 33 8.1. IN APP PURCHASE 연동규격 .................................................................................................................................................... 33 8.2. IN APP PURCHASE 연동을 위한 AIDL 생성....................................................................................................................... 40 8.3. IN APP PURCHASE SEQUENCE DIAGRAM ................................................................................................................................. 41 8.4. IN APP PURCHASE 연동을 위한 AES 암호화 .................................................................................................................... 41 8.5. IN APP PURCHASE 테스트를 위한 설정.............................................................................................................................. 45 8.6. IN APP PURCHASE 를 지원하는 OLLEH 마켓 최소 버전 정보 추출 ........................................................................... 47 Page :5/47
  6. 6. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 6 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.201. 개요1.1. 목적 본 문서는 (주)케이티(이하 KT)의 Android 단말기의 KT Application 또는 웹 브라우저상에서 olleh 마켓과 연동 방법에 대해 기술한다.1.2. 적용범위 KT 의 KT Applicaton 에서 Self 업데이트와 플랫폼 SMS 수신을 받는 후 App 에 전달하는 방법,외부 어플리케이션에서 App ID 를 이용해서 어플리케이션의 상세페이지로 이동 할 수 있는 방법, In AppPurchase 를 통한 어플리케이션 내 결제를 이용하는 방법을 설명한다. 단말에 따라 적용되는 규격 내용이 분기처리 되어있다. 내용은 KT 서비스 제공 계획의 변경 및 추가에 따라 추후 보완 및 변경 될 수 있다. Page :6/47
  7. 7. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 7 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.202. Intent 호출 규격Application 이 olleh 마켓 client 에 요청하는 Intent 규격을 정의한다.Intent 호출 시 package 명은 넣지 않는다. Package Name com.kt.olleh.storefront Action android.intent.action.VIEW2.1. Content 상세화면2.1.1. Content 상세화면 Intent parameter 정의 olleh 마켓 특정 컨텐츠의 상세 화면으로 이동한다. IS_ADULT 값은 Option 값으로 전달되지 않는 경우성인 컨텐츠가 아닌 일반 컨텐츠로 간주한다. IS_ADULT 값이 “ADULT”이면 성인 인증을 거친 후 상세 화면으로 이동한다.MimeTypevnd.kt.olleh.storefront/detail.kt.olleh.storefrontIntent parameter 정의 Column Name Type 설명 APPLICATION: 어플리케이션 MUSIC: 음악CONTENT_TYPE String MOVIE: 영화 EBOOK_S: 이북 시리즈 상세 EBOOK: 이북 단품 m: 음악 앨범 c: 단일 상품P_TYPE String e: 할인 상품 p: 세트 상품 b: 번들 (1+1)P_ID String Content id (상품 고유 번호)N_ID String Category id (카테고리 고유 번호) Option.IS_ADULT String 성인 콘텐트: “ADULT” Page :7/47
  8. 8. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 8 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 일반 콘텐트: “”2.1.2. Content 상세화면 Intent parameter 정의Intent intent = new Intent(“android.intent.action.VIEW”);Intent.setType(“vnd.kt.olleh.storefront/detail.kt.olleh.storefront” );intent.putExtra( “CONTENT_TYPE”, “APPLICATION” );intent.putExtra(“P_TYPE”, “c”); // 대소문자구분주의intent.putExtra(“P_ID”, “51200001483276”); // 실제 콘텐트 아이디를 넣어야 함intent.putExtra(“N_ID”, “A001006”); // 실제 카테고리 고유번호를 넣어야 함startActivity( intent);IS_ADULT 값을 “ADULT”로 주면 다음과 같이 성인인증을 받고서 상세 화면으로 이동한다. Page :8/47
  9. 9. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 9 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.202.2. 검색2.2.1. 검색 Intent parameter 정의해당 KEYWORD 로 olleh 마켓 컨텐츠 검색 결과 화면으로 이동한다.MimeTypevnd.kt.olleh.storefront/search.kt.olleh.storefrontIntent parameter 정의 Column Name Type 설명 "A" 어플리케이션 "S" 음악N_ID String "V" 영상 "E" 이북KEYWORD String 검색어 (20 자 이하)2.2.2. 검색 호출 예시Intent intent = new Intent(“android.intent.action.VIEW” );Intent.setType(“vnd.kt.olleh.storefront/search.kt.olleh.storefront” );intent.putExtra(“N_ID”, “A”); // 콘텐트종류intent.putExtra(“KEYWORD”, “KT”); // 검색어startActivity( intent); Page :9/47
  10. 10. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 10 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.202.3. 상품 목록2.3.1. 상품 목록 Intent parameter 정의상품 목록 화면으로 이동한다. 필수 파라미터로 CONTENT_TYPE 을 전달하면 어플리케이션, 음악, 영화, 이북 리스트 화면으로 이동 한다.MimeTypevnd.kt.olleh.storefront/list.kt.olleh.storefrontIntent parameter 정의 Column Name Type 설명 APPLICATION: 어플리케이션 MUSIC: 음악CONTENT_TYPE String MOVIE: 영화 EBOOK: 이북 Option. 현재 사용하지 않음. Category id (카테고리 고유 번호) 메인 목록의 경우 아래 중 하나 "A" 어플리케이션N_ID String "S" 음악 "V" 영상 "E" 이북 하위 목록의 경우는 각 해당 고유 아이디 Option. 현재 사용하지 않음.IS_MAIN String Y(대표 목록) or N(하위 목록) Option. 현재 사용하지 않음.IS_NEW String Y(신규 목록) or N(인기 목록) Option. 현재 사용하지 않음.IS_FREE String Y(무료) or N(유료) 단, IS_NEW 가 N 인 경우 즉, 인기 목록의 경우만 유효함 Option. 현재 사용하지 않음. 목록 명(20 자 이하)TITLE String 예) 어플리케이션, 음악, 영상, 이북, 어플리케이션>게임, 음악> 발라드, 영상>액션, 이북>국내소설 등… Option. 현재 사용하지 않음.MUSIC_TYPE String “S” 곡 Page :10/47
  11. 11. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 11 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 “M” 뮤직비디오 음악 목록의 경우만 해당됨2.3.2. 상품 목록 호출 예시Intent intent = new Intent(“android.intent.action.VIEW” );Intent.setType(“vnd.kt.olleh.storefront/list.kt.olleh.storefront” );intent.putExtra(“CONTENT_TYPE”, “MUSIC”); // 음악startActivity( intent); Page :11/47
  12. 12. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 12 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.202.4. My 구매 화면2.4.1. My 구매 화면 Intent parameter 정의My 구매내역 화면으로 이동한다. N_ID 값을 전달하면 어플리케이션, 음악, 영상, 이북 구매내역 화면으로이동한다.MimeTypevnd.kt.olleh.storefront/my.kt.olleh.storefrontIntent parameter 정의 Column Name Type 설명 "A" 어플리케이션 "S" 음악N_ID String "V" 영상 "E" 이북 Option. 현재 사용하지 않음.UPDATE_CHECK String Y: update check 함 N: update check 하지 않음2.4.2. My 구매 화면 호출 예시Intent intent = new Intent(“android.intent.action.VIEW” );Intent.setType(“vnd.kt.olleh.storefront/my.kt.olleh.storefront” );intent.putExtra(“N_ID”, “A”); // 콘텐트종류startActivity( intent); Page :12/47
  13. 13. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 13 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.202.5. 브랜드샵 리스트2.5.1. 브랜드샵 리스트 이동 Intent parameter 정의브랜드샵 리스트 화면으로 이동한다. 각 브랜드샵 ID 를 전달하면 해당 브랜드샵 리스트로 이동하며, 해당화면의 타이틀 명을 설정할 수 있다.MimeTypevnd.kt.olleh.storefront/brandshop.kt.olleh.storefrontIntent parameter 정의 Column Name Type 설명BRAND_ID String 브랜드샵 IDsubTitle String 브랜드샵 타이틀 명2.5.2. 브랜드샵 리스트 호출 예시Intent intent = new Intent(“android.intent.action.VIEW” );Intent.setType(“vnd.kt.olleh.storefront/brandshop.kt.olleh.storefront” );intent.putExtra(“BRAND_ID”, “bw004”); // 삼성 브랜드샵 IDintent.putExtra(“subTitle”, “Samsung”); // 삼성 브랜드샵 타이틀 명startActivity( intent); Page :13/47
  14. 14. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 14 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.202.6. Home 화면2.6.1. Home 화면 Intent parameterolleh 마켓의 메인(홈) 화면으로 이동한다.MimeTypevnd.kt.olleh.storefront/home.kt.olleh.storefrontIntent parameter 정의 Column Name Type 설명 Option.PACKAGE_NAME String 호출하는 어플리케이션의 패키지 명. 예: “kt.olleh.testpackage”2.6.2. Home 화면 호출 예시Intent intent = new Intent(“android.intent.action.VIEW” );Intent.setType(“vnd.kt.olleh.storefront/home.kt.olleh.storefront” );intent.putExtra(“PACKAGE_NAME”, “kt.olleh.testpackage”); // 패키지명startActivity( intent); Page :14/47
  15. 15. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 15 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.203. Web 연동 규격안드로이드 웹 브라우저에서 KT Olleh 마켓을 연동하는 규격으로 아래와 같은 형식을 가지며, query 문은name=value 형식을 따른다.[schme]://[host]?query Schme cstore3.1. Content 상세 화면3.1.1. Content 상세 화면 정의olleh 마켓 특정 컨텐츠의 상세 화면으로 한다. IS_ADULT 값은 Option 값으로 없을 경우 성인 컨텐츠가아닌 일반 컨텐츠로 간주한다. IS_ADULT 값이 “ADULT”이면 성인 인증을 거친 후 상세 화면으로 이동한다.HOST 명 detailQuery 정의 Column Name Type 설명 APPLICATION: 어플리케이션 MUSIC: 음악 CONTENT_TYPE String MOVIE: 영화 EBOOK_S: 이북 시리즈 상세 EBOOK: 이북 단품 m: 음악 앨범 c: 단일 상품 P_TYPE String e: 할인 상품 p: 세트 상품 b: 번들 (1+1) P_ID String Content id (상품 고유 번호) Category id (카테고리 고유 번호) N_ID String Option. IS_ADULT String 성인 콘텐트: “ADULT” 일반 콘텐트: “” Page :15/47
  16. 16. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 16 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.203.1.2. Content 상세 화면 호출 예시Ex. 어플리케이션상세페이지호출cstore://detail?CONTENT_TYPE=APPLICATION&P_TYPE=c&P_ID=A001006&N_ID=51200001483276IS_ADULT 값을 “ADULT”로 주면 다음과 같이 성인인증을 받고서 상세 화면으로 이동한다. Page :16/47
  17. 17. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 17 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.203.2. 검색3.2.1. 검색 정의해당 KEYWORD 로 olleh 마켓 컨텐츠 검색 결과 화면으로 이동한다.HOST 명searchQuery 정의 Column Name Type 설명 "A" 어플리케이션 "S" 음악N_ID String "V" 영상 "E" 이북KEYWORD String 검색어(20 자 이하)3.2.2. 검색 호출 예시Ex. 어플리케이션 검색 호출cstore://search?N_ID=A&KEYWORD=KT Page :17/47
  18. 18. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 18 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.203.3. 상품 목록3.3.1. 상품 목록 정의상품 목록 화면으로 이동한다. 필수 파라미터로 CONTENT_TYPE 을 주면, 어플리케이션, 음악, 영화, 이북리스트 화면으로 이동 한다.HOST 명listQuery 정의 Column Name Type 설명 APPLICATION: 어플리케이션 MUSIC: 음악CONTENT_TYPE String MOVIE: 영화 EBOOK: 이북 Option. Category id (카테고리 고유 번호) 메인 목록의 경우 아래 중 하나 "A" 어플리케이션N_ID String "S" 음악 "V" 영상 "E" 이북 하위 목록의 경우는 각 해당 고유 아이디 Option.IS_MAIN String Y(대표 목록) or N(하위 목록) Option.IS_NEW String Y(신규 목록) or N(인기 목록) Option.IS_FREE String Y(무료) or N(유료) 단, IS_NEW 가 N 인 경우 즉, 인기 목록의 경우만 유효함 Option. 목록 명(20 자 이하)TITLE String 예) 어플리케이션, 음악, 영상, 이북, 어플리케이션>게임, 음악> 발라드, 영상>액션, 이북>국내소설 등… Option.MUSIC_TYPE String “S” 곡 Page :18/47
  19. 19. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 19 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 “M” 뮤직비디오 음악 목록의 경우만 해당됨3.3.2. 상품 목록 호출 예시Ex. 음악 상품 목록 호출cstore://list?CONTENT_TYPE=MUSIC Page :19/47
  20. 20. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 20 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.203.4. My 구매 화면3.4.1. My 구매 화면 정의My 구매내역 화면으로 이동한다. N_ID 값을 전달하면 어플리케이션, 음악, 영상, 이북 구매내역 화면으로이동한다.HOST 명myQuery 정의 Column Name Type 설명 "A" 어플리케이션 "S" 음악N_ID String "V" 영상 "E" 이북 현재 사용하지 않음.UPDATE_CHECK String Y: update check 함 N: update check 하지 않음3.4.2. My 구매 화면 호출 예시Ex. 어플리케이션 구매 화면 호출cstore://my?N_ID=A&UPDATE_CHECK=N Page :20/47
  21. 21. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 21 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.203.5. 브랜드샵 리스트3.5.1. 브랜드샵 리스트 이동 정의브랜드샵 리스트 화면으로 이동한다. 각 브랜드샵 ID 를 전달하면 해당 브랜드샵 리스트로 이동하며, 해당화면의 타이틀 명을 설정할 수 있다.HOST 명brandshopQuery 정의 Column Name Type 설명BRAND_ID String 브랜드샵 IDsubTitle String 브랜드샵 타이틀 명3.5.2. 브랜드샵 리스트 화면 호출 예시Ex. 브랜드샵 리스트 호출cstore://brandshop?BRAND_ID=bw004&subTitle=Samsung Page :21/47
  22. 22. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 22 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.203.6. Home 화면3.6.1. Home 화면olleh 마켓의 메인(홈) 화면으로 이동한다.HOST 명homeQuery 정의 Column Name Type 설명 Option.PACKAGE_NAME String 호출하는 어플리케이션의 패키지 명. 예: “kt.olleh.testpackage”3.6.2. Home 화면 호출 예시Ex. Home 화면호출cstore://home?PACKAGE_NAME=kt.olleh.testpackage Page :22/47
  23. 23. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 23 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.204. 어플리케이션 SELF Update셀프 업데이트 확인 사용을 위한 초기 페이지에 추가되는 기능적용 대상: olleh 마켓이 설치된 모든 단말 셀프 업데이트 확인 기능을 사용하기 위하여 다음과 같은 코드를 Application 초기 화면 페이지에 추가하여야 한다. Application 업데이트가 존재하는 경우 사용자에게 공지할 수 있다.Self Update 호출 MimeTypevnd.olleh.app.store/vnd.update.check전달 Parameters Parameter 설명 Uri (Data) [Uri] 업데이트를 확인하기 위한 App 의 필수 PackageName(getPackageName()) 입력BoradcastReceiver (App 업데이트 확인을 수신하기 위한 Receiver 등록)[어플리케이션 Package Name]+ ".action.SELF_UPDATE_CHECK_RECEIVERD" [어플리케이션 Package Name]은 App 개발 시 최초 등록한 PackageName 을 설명 등록한다.수신 Parameters Parameter 설명 result [BOOLEAN] 최신 업데이트 버전 확인 결과 예제 intent.putExtra("result", true)수신 Value Value 설명 true 최신 업데이트 버전 존재함. false 최신 업데이트 버전 없음.Throws Exception 설명 없음 Page :23/47
  24. 24. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 24 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20초기 화면을 Create 시 업데이트 확인 Receiver 등록 SamplepublicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// App Manager에Self Update 확인 요청 후 아래와 같이 Broadcast한다.registerReceiver(receiver, newIntentFilter(getPackageName()+ ".action.SELF_UPDATE_CHECK_RECEIVERD"));// 셀프 업데이트를 검사 한다. 검사 확인은 Broadcast로 노티 한다.// 서비스 호출은 mimeType을 사용한다.Intent intent = new Intent(); Uri uri = Uri.parse(getPackageName());intent.setDataAndType(uri,"vnd.olleh.app.store/vnd.update.check");startService(intent);}/** * App Manager가 Self Update 확인 후 Broadcast 로 결과를 전달해주는 값을 받는다. */private BroadcastReceiver receiver = new BroadcastReceiver() {@Overridepublicvoid onReceive(Context context, Intent intent) { // 최신 버전 존재 : true, 현재 버전이 최신 버전인 경우 : false boolean isResult = intent.getExtras().getBoolean("result"); // [필수 사항] 추가하지 않으면 현재 Activity를 빠져나가는 동안 에러가 발생한다. unregisterReceiver(receiver); // AlertDialog UI와 문구는 KT UX가이드를 참조한다. // 업그레이드가 있는 경우는 사용자에게 확인을 요청 후 다운로드를 클릭 시 // 다운로드 및 업데이트를 진행한다. if (isResult) { AlertDialog.BuildermAlertDialog = new AlertDialog.Builder(this); mAlertDialog.setMessage("업데이트를 진행하시겠습니까?n" + "업데이트를 계속 진행하면 어플이 종료됩니다."); Page :24/47
  25. 25. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 25 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 // false : Back버튼으로 대화상자를 닫지 못하도록 한다. mAlertDialog.setPositiveButton("확인", newDialogInterface.OnClickListener() { @Override publicvoid onClick(DialogInterface dialog, int which) { Intent intent = new Intent("com.kt.olleh.intent.action.UPDATE"); intent.putExtra("type", “APP”); intent.putExtra("package_name", Main.this.getPackageName()); startService(intent); // Application 종료.. ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); am.restartPackage(getPackageName()); } }); // 업데이트. mAlertDialog.setNegativeButton("취소", newDialogInterface.OnClickListener() { @Override publicvoid onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); // 취소한다. mAlertDialog.create(); // 생성 mAlertDialog.show(); // 화면에 표시 } }};어플리케이션 종료를 사용하기 위해서는 다음과 같은 퍼미션이 필요함. <!-- 어플리케이션을 종료할 수 있는 권한 추가 --> <uses-permissionandroid:name="android.permission.RESTART_PACKAGES" /> Page :25/47
  26. 26. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 26 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.205. 플랫폼 SMS 수신 연동 규격5.1. 어플리케이션 구동 및 Parameter 전달 규격적용 대상: 스마트폰, SoIPApplication ID를 기반으로 해당 하는 어플리케이션을 구동시키고 Parameter를 전달하기 위한 규격을정의 한다. 플랫폼SMS를 전달 받으려는 어플리케이션은 Receiver의 intent-filter에action을 정의한다.스마트폰용 플랫폼 SMS 구조 및 예제 플랫폼 SMS 구조 -appid [APP_ID]:[Parameters] 예제 -appid 12345678:email=test@test.com 설명 해당 Application 의 APP_ID 를 파라 미터로 전달하며, 해당 Application 을 실 행한다. 단. 해당 어플리케이션이 존재하지 않으면 olleh 마켓의 상세(소개)페 이지로 이동한다.SoIP 용 플랫폼 SMS 구조 및 예제 플랫폼 SMS 구조 FF-appid [APP_ID]:[Parameters] 예제 FF-appid 12345678:email=test@test.com 설명 해당 Application 의 APP_ID 를 파라 미터로 전달하며, 해당 Application 을 실 행한다. 단. 해당 어플리케이션이 존재하지 않으면 olleh 마켓의 상세(소개)페 이지로 이동한다.Action 등록 예<action android:name="[어플리케이션 Package Name].intent.action.PAYLOAD_RECEIVED" /> [어플리케이션 Package Name]은 App 개발 시 최초 등록한 PackageName 을 설명 등록한다.전달 Parameters Parameter 설명 payload [String] 플랫폼 SMS 로 수신된 Parameters 를 전달한다. 예제 intent.putExtra("payload", "email=test@test.com") Page :26/47
  27. 27. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 27 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20플랫폼 SMS 수신 Action 등록 샘플<!-- 플랫폼 SMS를 통해서 파라미터 수신 --><receiverandroid:name=".SmsReceiver" android:label="플랫폼SMS 수신 Activity"> <intent-filter> <actionandroid:name="[어플리케이션PackageName].intent.action.PAYLOAD_RECEIVED"/> </intent-filter></receiver>플랫폼 SMS 수신 Receiver 샘플@Overridepublicvoid onReceive(Context context, Intent intent) { Toast.makeText(context, "SMS를 통한 App 실행.", Toast.LENGTH_SHORT).show(); Intent i = new Intent(context, TestActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("payload", intent.getExtras().getString("payload")); context.startActivity(i);}5.2. 플랫폼 SMS 를 통한 어플리케이션 실행 테스트를 위한 설정적용 대상: 스마트폰, SoIP플랫폼 SMS 를 통한 어플리케이션 실행 테스트를 위해서는 olleh 마켓 Setting 어플리케이션이 필요하다.플랫폼 SMS 를 통한 어플리케이션 실행 테스트를 위한 설정 절차1. 어플리케이션 구동 및 Parameter 전달 규격이 적용된 바이너리를 설치 한다.2. 플랫폼 SMS를 통한 어플리케이션 실행 테스트를 위해서 olleh 마켓에서 구매한 어플리케이션으로강제 설정하기 위해 Setting 어플리케이션을 구동하여 하단의 그림을 보고 설정 한다.(SoIP 단말용 Setting 어플리케이션에서는 최초 “KPad/SoIP olleh 마켓 설정으로 이동 메뉴를 선택”하고나머지는 아래 그림을 보고 동일하게 설정) Page :27/47
  28. 28. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 28 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20플랫폼 SMS 발송 시 KAM 메시지는 다음과 같다.스마트폰용 KAM 데이터 : -appid A00000001:1234567890 appidSOIP 용 KAM 데이터 : FF-appid A00000001:1234567890 appid1234567890 값에는 어플리케이션에서 전달 받고자 하는 값을 입력한다. Page :28/47
  29. 29. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 29 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.206. 외부 어플리케이션에서 olleh 마켓 실행 규격6.1. 외부 어플리케이션에서 olleh 마켓 실행 규격적용 대상: olleh 마켓이 설치된 모든 단말 외부 어플리케이션에서 어플리케이션의 상세 소개 페이지로 이동 할 수 있도록 API를 제공한다.Application ID와 일치하는 어플리케이션이 존재 하지 않는 경우 “판매중인 어플리케이션이 아닙니다.”노티를 보여준 후 이전 화면으로 이동한다.컨텐츠 페이지 이동 호출 MimeTypevnd.olleh.app.store/vnd.contents.introduce전달 Parameters Parameter 설명 Uri (Data) [Uri] 어플리케이션의 상세 소개 페이지로 이동할 어플리 필수 케이션의 APP_ID 값 입력 contents_id App_ID 값이 없을 경우에는 상세 화면으로 이동하고자 APP_ID 가 없는 할 contents 의 id 값을 putExtra() 를 이용해서 전달한다. 경우 필수Throws Exception 설명 없음olleh 마켓 컨텐츠 소개 페이지 호출 Sample// APP_ID가 있을 경우 올레 마켓 상세/간단 소개페이지를 호출한다..Intent intent = new Intent();Uri uri = Uri.parse(”81000001”);intent.setDataAndType(uri, "vnd.olleh.app.store/vnd.contents.introduce");startService(intent);// App_ID가 없는 경우는 아래를 사용한다.Intent intent = new Intent();intent.setType("vnd.olleh.app.store/vnd.contents.introduce");intent.putExtra(”contents_id”,”540000010234”)startService(intent); Page :29/47
  30. 30. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 30 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.206.2. olleh 마켓 실행 중 컨텐츠 소개페이지 이동적용 대상: 스마트폰olleh 마켓이 실행 중인 상태에서 컨텐츠 소개페이지로 이동하는 기능은 olleh 마켓VersionCode“1102”버전 이상부터 지원한다.Preload 버전 olleh마켓패키지 명 :com.kt.olleh.storefront인스톨 버전 olleh 마켓 패키지 명 :com.kt.olleh.istoreolleh 마켓 실행 중 컨텐츠 소개페이지로 이동 기능 지원 Version Code :1102Android Native API를 이용해서 olleh 마켓 VersionCode를 가져온다.olleh 마켓 Version Code 추출 Sampletry { PackageManager pm = getPackageManager(); PackageInfopackageInfo = pm.getPackageInfo("com.kt.olleh.storefront", 0); intversionCode = packageInfo.versionCode; // Version Code 값이 1102 버전 이상인 경우에만 olleh 마켓 실행 중 컨텐츠 소개페이지로 이동 하는 기능을 제공함. if (versionCode>= 1102) { // olleh 마켓 실행 중 컨텐츠 소개페이지로 이동 }}catch (Exception e) { e.printStackTrace();} Page :30/47
  31. 31. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 31 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.207. Preload 어플리케이션 버전 정보 관리Preload 어플리케이션 버전 정보 관리적용 대상: olleh 마켓이 설치된 모든 단말KT Android 단말기에 Preload 되는 모든 어플리케이션은 AndroidManifest.xml의<android:versionName>값을 다음과 같은 규격으로 맞춰야 한다.android:versionName 생성 규칙 어플리케이션 서버 설명2.0.7 또는 02.00.07 02.00.07 어플리케이션의 versionName 이 2.0.7 인 경우 서버에 등록되는 바이너리 버전은 02.00.07 로 등록되어야 한다.android:versionName 생성 제약 조건1.어플리케이션의versionName의 최대 자릿수는 마침표(.) 포함 최대 8자리(99.99.99)를 초과할 수 없고최소 자릿수는 마침표(.) 포함 5자리(0.0.1) 미만이 될 수 없다.2. 어플리케이션이 최소 자릿수 사용 시 AppManager에서 클라이언트의 versionName 을 마침표(.) 포함8자리로 변환하는데 이때. 서버에 등록된 버전과 동일한 버전 정보가 되어야 한다.예) AppManager 변환 예시. 어플리케이션 AppManager 설명 2.01.7 02.01.07 마침표(.) 사이에 2 자리/1 자리를 혼용해서 사용할 경우 AppManager 는 1 자리를 2 자리로 변환하고 2 자리 중 앞자리 02.1.7 02.01.07 를 0 으로 채운다. Page :31/47
  32. 32. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 32 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20AndroidManifest.xml 의 android:versionName 규격 적용 샘플//최소 자릿수 사용시<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="패키지 명"android:versionCode="2007"android:versionName="2.0.7">//최대 자릿수 사용시<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="패키지 명"android:versionCode="2007"android:versionName="02.00.07"> Page :32/47
  33. 33. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 33 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.208. In App Purchase 연동8.1. In App Purchase 연동규격적용 대상: 스마트폰KT olleh마켓 서버를 이용하여 어플리케이션 내의 아이템 구매 서비스를 제공하려는 셀러는 본 절의규격을 준수해야 한다.아이템 구매는 보안을 위해 AIDL을 이용하여 App Manager와 연동하여야 하며 아래 정의를 참고한다.AIDL은 Android에서 사용되는 IPC(Inter Process Communication)로 다른 프로세스의 Service를 Binder할수 있는 기능을 제공한다..In App Purchase는 Preload버전과 Install버전 olleh 마켓 별 지원되는 네트워크를 구분하여 처리가필요하다.olleh 마켓 Preload 버전과 Install 버전 패키지명. olleh 마켓 패키지 명 Preload 버전 olleh 마켓 com.kt.olleh.storefront Install 버전 olleh 마켓 com.kt.olleh.istoreolleh 마켓 Preload 버전과 Install 버전 지원 네트워크. olleh 마켓 3G 네스팟 공인 네스팟 사설 I-WLAN 사설 WI-FI Preload 버전 olleh 마켓 O O O O X Install 버전 olleh 마켓 O X X X X전달 Parameters Parameter 설명 packageName In App Purchase 를 요청하는 어플리케이션의 패키지 명. 필수 AES 암호화 시 Key 값으로 사용된다. iv AES 암호화 시 Initialization Vector 값. 필수 샘플에서는 System.currentTimeMillis 를 사용하였으나 실 제 개발 시에는 유출되지 않을 값으로 변경이 필요하다. Initialization Vector 값은 AES 암호화 시 유동적으로 생 성된 값을 사용하는 것을 추천한다. encryptItemId Encrypt 된 구매하려는 아이템 아이디 필수수신 Parameters Parameter 설명 Page :33/47
  34. 34. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 34 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 Map iv : 결과값을 Decrypt 할 키 값 result : 결과값 (Result Code 값은 아래에 상세 설명)Result Code 값 설명 Parameter 설명 0 결제 성공 100 입력 파라미터 오류 200 사용자 인증 오류 300 KHUB 과금 오류 리턴 값 800 올레마켓에서 구매하지 않은 어플리케이션. 900 네트워크 접속 오류 901 사설 Wi-Fi 망에서 사용 불가 998 결제를 진행하는 동안 문제가 발생 999 기타 일반적인 오류Throws Exception 설명 RemoteException RemoteMethod 호출 중에 발생하는 예외Activity Sample importjava.util.Map; importandroid.app.Activity; importandroid.app.AlertDialog; importandroid.app.ProgressDialog; importandroid.content.ComponentName; importandroid.content.Context; importandroid.content.DialogInterface; importandroid.content.Intent; importandroid.content.ServiceConnection; importandroid.os.Bundle; importandroid.os.Handler; importandroid.os.IBinder; importandroid.os.Message; importandroid.util.Log; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; Page :34/47
  35. 35. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 35 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20importcom.kt.olleh.manager.purchase.AES;importcom.kt.olleh.manager.purchase.IRemoteInAppPurchaseService;publicclass Main extends Activity implementsOnClickListener { publicstaticfinalintSUCCESS = 0; // 결제 성공. publicstaticfinalintNPUT_PARAM_ERROR = 100; // 입력 파라미터 오류. publicstaticfinalintUSER_ACCREDIT_ERROR = 200; // 사용자 인증 오류. publicstaticfinalintKHUB_ACCOUNT_ERROR = 300; // KHUB 과금 오류. publicstaticfinalintNOT_OLLEHMARKET_APP = 800; // 올레마켓에서 구매하지 않은 어플리케이션. publicstaticfinalintNETWORK_ERROR = 900; // 네트워크 접속 오류. publicstaticfinalintNETWORK_NON_WIFI = 901; // 사설Wi-Fi에서는 사용할 수 없음. publicstaticfinalintACCOUNT_FAIL = 998; // 결제를 진행하는 동안 문제가 발생 publicstaticfinalintGENERAL_ERROR = 999; // 기타 일반적인 오류. privateintmResultCode = 999; private Button mButton; privateProgressDialogmProgressDialog; // mHandler인스턴스에게 전달 되는 모든 메시지를 처리함. private Handler mHandler = new Handler() { @Override publicvoidhandleMessage(Message msg) { String text = "기타 일반적인 오류."; switch (mResultCode) { caseSUCCESS: text = "결제 성공."; break; caseINPUT_PARAM_ERROR: text = "입력 파라미터 오류."; break; caseUSER_ACCREDIT_ERROR: text = "사용자 인증 오류."; break; caseKHUB_ACCOUNT_ERROR: text = "KHUB 과금 오류."; break; caseNOT_OLLEHMARKET_APP: text = "올레마켓에서 구매하지 않은 어플리케이션."; break; Page :35/47
  36. 36. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 36 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 caseNETWORK_ERROR: text = "네트워크 접속 오류."; break; caseNETWORK_NON_WIFI: text = "Wi-Fi에서는 사용할 수 없음."; break; caseACCOUNT_FAIL: text = "결제를 진행하는 동안 문제가 발생했습니다."; break; default: // GENERAL_ERROR text = "기타 일반적인 오류."; break; } AlertDialog.Builder dialog = new AlertDialog.Builder(Main.this); dialog.setMessage(text); dialog.setPositiveButton("확인", newDialogInterface.OnClickListener() { @Override publicvoid onClick(DialogInterface dialog, int which) { dialog.dismiss(); mButton.setEnabled(true); // 구매 버튼을 활성화한다. } }); // 업데이트. dialog.create(); // 생성.. dialog.show(); // 화면에 표시.. }};/** Called when the activity is first created. */@OverridepublicvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton = (Button) findViewById(R.id.btn_bind); mButton.setOnClickListener(this);}@Override Page :36/47
  37. 37. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 37 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 publicvoid onClick(View v) { switch (v.getId()) { caseR.id.btn_bind: { // Remote Service Bind. mButton.setEnabled(false); // 구매 버튼을 비활성화한다. mProgressDialog = newProgressDialog(Main.this); mProgressDialog.setMessage("결제를 요청중입니다."); mProgressDialog.setIndeterminate(true); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.show();// 오래 걸리는 작업을 work thread에서 실행 함new Thread(new Runnable() { // 제시도 횟수를 설정한다. 개발 시 적정한 값으로 설정. privatestaticfinalintRETRY_COUNT = 5; privatebooleanmIsInAppPurchaseConnect = false; publicvoid run() { try { /* ====================================================*/ // [필수] Remote In App Purchase에 Bind한다. mIsInAppPurchaseConnect = bindService(newIntent(IRemoteInAppPurchaseService.class.getName()), mServiceConnection,Context.BIND_AUTO_CREATE); // RemoteInAppPurchaseService의 Interface를 생성할 때까지 잠시 대기한다. for (int i = 0; i <RETRY_COUNT; i++) { if (mRemoteInAppPurchaseService != null) { break; } Log.v("InAppPurchaseTest", "Remote In App Purchase Service Connecte Retry Count: " + (i + 1)); try { Thread.sleep(100); } catch (Exception e) { } Page :37/47
  38. 38. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 38 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 } /* ==================================================== */ // RemoteInAppPurchaseService의 Interface를 생성하지 못하면 에러로 처리한다. if (mRemoteInAppPurchaseService == null) { thrownewNullPointerException("RemoteInAppPurchaseService Interface Create Fail.."); } Log.v("InAppPurchaseTest", "Remote In App Purchase Service Connecte Result: " + mIsInAppPurchaseConnect); // 아이템 결제를 요청한다. String iv = String.valueOf(System.currentTimeMillis()); AES aes = new AES(getPackageName(), iv); String encryptItemId = aes.encrypt("I00000001"); // 구매하고자 하는 아이템 아이디 암호화. @SuppressWarnings("unchecked") Map<String, String> map = mRemoteInAppPurchaseService.purchase(getPackageName(), iv, encryptItemId); Log.i("InAppPurchaseTest", "Result Map : " + map.toString()); String resultIv = map.get("iv"); aes = new AES(getPackageName(), resultIv); String result = aes.decrypt(map.get("result")); // 구매결과 복호화한 후 Integer로 변환한다. mResultCode = parseInt(aes.decrypt(map.get("result")), mResultCode); Log.i("InAppPurchaseTest", "IV : " + resultIv); Log.i("InAppPurchaseTest", "Result : " + result);}catch (Exception e) { Log.e("InAppPurchaseTest", e.getMessage(), e); mResultCode = ACCOUNT_FAIL;}finally { /* =====================================================*/ if (mIsInAppPurchaseConnect == true) { try { // [필수] Remote In App Purchase에 Unbind한다. unbindService(mServiceConnection); Page :38/47
  39. 39. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 39 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 Log.v("InAppPurchaseTest", ">> Remote In App Purchase Service Disconnecte<<"); mIsInAppPurchaseConnect = false; } catch (Exception e) { Log.e("InAppPurchaseTest", e.getMessage(), e); } } /* =====================================================*/ // ProgressDialog가 끝남과 동시에 화면이 보여지도록 하기 위해서 이곳에 정의했음. mProgressDialog.dismiss(); // mHnadler의 handleMessage(Message)에 의해 처리됨. mHandler.sendMessage(mHandler.obtainMessage()); } }}).start() break; } } } /** String을 Integer로 변환한다. */ publicstaticintparseInt(String str, intdefaultValue) { if (str == null) { returndefaultValue; } try { returnInteger.parseInt(str); } catch (NumberFormatExceptionnfe) { returndefaultValue; } } /* ================ RemoteInAppPurchaseService Connect Start ================ */ privateIRemoteInAppPurchaseServicemRemoteInAppPurchaseService = null; Page :39/47
  40. 40. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 40 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 privateServiceConnectionmServiceConnection = newServiceConnection() { @Override publicvoidonServiceConnected(ComponentName name, IBinder service) { mRemoteInAppPurchaseService = IRemoteInAppPurchaseService.Stub.asInterface(service); Log.v("InAppPurchaseTest", "Remote In App Purchase Service Connected.."); } @Override publicvoidonServiceDisconnected(ComponentNamep_name) { Log.v("InAppPurchaseTest", "Remote In App Purchase Service Disconnected.."); mRemoteInAppPurchaseService = null; } }; /* ================RemoteInAppPurchaseService Connect End ================ */}샘플소스는 In App Purchase를 통한 아이템 결제 결제는 Thread를 생성해서 처리했으며,ProgressDialog를 이용해서 진행 중 표시를 사용자에게 노출하였다. Thread에서 처리가 완료 된 후에는Handler와 통신하여 결제 결과를 AlertDialog로 사용자에게 결과를 노티 하였다.In App Purchase를 통해서 결제를 요청하는 경우 완료 되기 이전에는 타 Activity로 이동을 하는 경우결과값을 수신 할 수 없어서 에러를 발생할 수 있다.결제 결과 대기시간은 ConnectionTimeOut : 20초, SocketTimeOut : 20초로 최대 40초가 소요 될 수 있다.샘플 소스는 추후 추가 또는 수정될 수 있음.8.2. In App Purchase 연동을 위한 AIDL 생성AIDL 생성 패키지명 (변경 불가)com.kt.olleh.manager.purchaseAIDL 생성 클래스명 (변경 불가)IRemoteInAppPurchaseService.aidlIRemoteInAppPurchaseService.aidl 생성 (변경 불가)package com.kt.olleh.manager.purchase;interface IRemoteInAppPurchaseService { Page :40/47
  41. 41. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 41 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 Map purchase(String packageName, String iv, String encryptItemId); Map cancel(String packageName, String iv, String encryptItemId); }* 결제 취소 기능(cancel())은 추후 적용 예정8.3. In App Purchase Sequence DiagramIn App Purchase를 통한 아이템 구매를 요청한 경우는 완료되기 전에 다른 작업을 진행할 수 없다.1 :bindService에서 15 : unbindService는 하나의 세션 내에서 처리하여야 한다.8.4. In App Purchase 연동을 위한 AES 암호화IV 사용블록 암호의 운용 모드(Block engine modes of operation)가 CBC/OFB/CFB를 사용할 경우에는Initialization Vector(IV)를 설정해야 한다. Page :41/47
  42. 42. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 42 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20In App Purchase에서 사용하는 AES 암호화 클래스는 CBC로 개발되어서 Initialization Vector(IV)를사용한다.AES 암호화 클래스(필수)packagecom.kt.olleh.manager.purchase;importjava.lang.reflect.Method;importjava.security.MessageDigest;importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.SecretKeySpec;importandroid.util.Log;publicclass AES { private Cipher mCipher; privateSecretKeySpecmKey; privateIvParameterSpecmIv; /** * Creates a StringEncrypter instance. * @param key A key string which is converted into UTF-8 and hashed by MD5. Null or an empty string is not allowed. * @param iv An initial vector string which is converted into UTF-8 and hashed by MD5. * @throws Exception */ public AES(String key, String iv) throws Exception { if (key == null || "".equals(key)) { thrownewNullPointerException("The key cannot be null or an empty string.."); } if (iv == null || "".equals(iv)) { thrownewNullPointerException("The initial vector cannot be null or an empty string."); } mCipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // Initialize an encryption key and an initial vector. MessageDigest md5 = MessageDigest.getInstance("MD5"); mKey = newSecretKeySpec(md5.digest(key.getBytes("UTF-8")), "AES"); mIv = newIvParameterSpec(md5.digest(iv.getBytes("UTF-8"))); } /** Page :42/47
  43. 43. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 43 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 * Encrypts a string. * @param value A string to encrypt. It is converted into UTF-8 before being encrypted * @return An encrypted string. * @throws Exception */public String encrypt(String value) throws Exception { if (value == null || "".equals(value)) { thrownewNullPointerException("The cipher string cannot be null or an empty string."); } // Initialize the cryptography algorithm. if (mIv == null || "".equals(mIv)) { mCipher.init(Cipher.ENCRYPT_MODE, mKey); } else { mCipher.init(Cipher.ENCRYPT_MODE, mKey, mIv); } // Get a UTF-8 byte array from a unicode string. byte[] utf8Value = value.getBytes("UTF-8"); // Encrypt the UTF-8 byte array. byte[] encryptedValue = mCipher.doFinal(utf8Value); // Return a base64 encoded string of the encrypted byte array. returnnew String(encodeBase64(encryptedValue));}/** * Decrypts a string which is encrypted with the same key and initial vector. * @param value A string to decrypt. It must be a string encrypted with the same key and initial vector. * @return A decrypted string * @throws Exception */public String decrypt(String value) throws Exception { if (value == null || "".equals(value)) { thrownewNullPointerException("The cipher string cannot be null or an empty string."); } // Initialize the cryptography algorithm. if (mIv == null || "".equals(mIv)) { mCipher.init(Cipher.DECRYPT_MODE, mKey); Page :43/47
  44. 44. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 44 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 } else { mCipher.init(Cipher.DECRYPT_MODE, mKey, mIv); } // Get an encrypted byte array from a base64 encoded string. byte[] encryptedValue = AES.decodeBase64(value.getBytes()); // Decrypt the byte array. byte[] decryptedValue = mCipher.doFinal(encryptedValue); // Return a string converted from the UTF-8 byte array. returnnew String(decryptedValue, "UTF-8");}/** * Converts a binary data into a Base64 encoded string. If the binary data is null or a zero-length array, an empty string is returned. */publicstaticbyte[] encodeBase64(byte[] binaryData) { byte[] buf = null; try { Class<?> Base64 = Class.forName("org.apache.commons.codec.binary.Base64"); Class<?>[] parameterTypes = new Class<?>[] { byte[].class }; Method encodeBase64 = Base64.getMethod("encodeBase64", parameterTypes); buf = (byte[]) encodeBase64.invoke(Base64, binaryData); } catch (Exception e) { Log.e("AES", e.toString(), e); } returnbuf;}/** * Converts a Base64 encoded string into a binary data. If the string is null or an empty string, a zero-length array is returned. */publicstaticbyte[] decodeBase64(byte[] base64Data) { byte[] buf = null; try { Class<?> Base64 = Class.forName("org.apache.commons.codec.binary.Base64"); Class<?>[] parameterTypes = new Class<?>[] { byte[].class }; Page :44/47
  45. 45. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 45 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.20 Method decodeBase64 = Base64.getMethod("decodeBase64" parameterTypes); "decodeBase64", byte[]) buf = (byte[]) decodeBase64.invoke(Base64, base64Data); } catch (Exception e) { Log.e("AES" e.toString(), e); "AES", } returnbuf; }}8.5. In App Purchase 테스트를 위한 설정In App Purchase 테스트를 위해서 olleh 마켓 Setting 어플리케이션을 이용한다.In App Purchase 테스트를 위한 설정 절차1) 올레마켓에 어플리케이션을 등록하여 APPID와 ITEM ID를 발급받지 않은 상태에서 in app purchase 연동 규격 준수 여부를 확인하고자 하는 경우 이용한다. olleh 마켓 연동 서버를 테스트서버로 변경하고 in app purchase 테스트를 진행한다. 테스트용 Item ID는 테스트서버에서만 유효하다. Page :45/47
  46. 46. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 46 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.202) 1)의 과정을 통해 어플리케이션이 연동 규격을 준수하였음을 확인한 후 APPID APPID와 ITEM ID로 실제 올레마켓 서버와의 연동 확인은 아래와 방법으로 가능하다. 메뉴 서버는 상용 서버로 변경하여 테스트를 진행해야 한다. Page :46/47
  47. 47. KT Android olleh 마켓 연동 문서번호 버전 V 1.8 쪽 47 가이드 작성자 홍유리/이주영 최종수정일자 2010.12.208.6. In App Purchase 를 지원하는 olleh 마켓 최소 버전 정보 추출적용 대상: 스마트폰olleh 마켓이 In App Purchase를 지원하는 VersionCode는“2010”버전 이상부터 지원한다. Preload 버전 olleh마켓 패키지명 :com.kt.olleh.storefront 인스톨 버전 olleh 마켓 패키지명 :com.kt.olleh.istore olleh 마켓 In App Purchase 기능 지원 Version Code : 2010 Android Native API를 이용해서 olleh 마켓 VersionCode를 가져온다.olleh 마켓 Version Code 추출 Sampletry { PackageManager pm = getPackageManager(); PackageInfopackageInfo = pm.getPackageInfo("com.kt.olleh.storefront", 0); intversionCode = packageInfo.versionCode; // Version Code 값이 “2010” 버전 이상인 경우에만 In App Purchase를 지원한다.. if (versionCode>= 2010) { // RemoteInAppPurchaseService 연결 및 결제. }}catch (Exception e) { e.printStackTrace();} Page :47/47

×