목차 1. Samsung In-App Purchase 소개 다운로드 IAP 3.0 Helper & Sample IAP 3 제약사항 IAP 3 개발모드 지원상품타입 IAP 3
|
|
- 칠 방
- 6 years ago
- Views:
Transcription
1 Samsung In-App Purchase v3.0 Programming Guide
2 목차 1. Samsung In-App Purchase 소개 다운로드 IAP 3.0 Helper & Sample IAP 3 제약사항 IAP 3 개발모드 지원상품타입 IAP 3 Helper Programming 새안드로이드프로젝트생성 IAP Helper 추가 AndroidManifest.xml 수정 IAP 연동기능개발 ) 구매하기 ) 구매목록가져오기 ) 캐싱된구매목록가져오기 ( IAP 3.0 Helper 부터지원 ) ) 상품목록가져오기 IAP 3 Helper Reference SamsungIapHelper ) getinstance( Context, int ) ) (Deprecated) startpayment( String, String, boolean, OnPaymentListener ) ) startpayment( String, boolean, OnPaymentListener ) ) (Deprecated) getiteminboxlist( String, int, int, String, String, OnGetInboxListener ) ) getiteminboxlist( int, int, String, String, OnGetInboxListener ) ) getiteminboxlist( String, OnGetInboxListener ) ) (Deprecated) getitemlist( String, int, int, String, int, OnGetItemListener ) ) getitemlist( int, int, String, int, OnGetItemListener ) Result Callback Interface ) OnPaymentListener ) OnGetInboxListener ) OnGetItemListener Value Object ) PurchaseVo 구매결과정보 ) ItemVo 상품정보 ) InboxVo 구매내역정보 ) ErrorVo 요청처리결과 ) VerificationVo 결제유효성검사결과 Response Code IAP Server-to-Server API Reference Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 2
3 4.1 appsitemverifyiapreceipt Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 3
4 1. Samsung In-App Purchase 1.1 소개 Samsung In-App Purchase( 이하 IAP라함 ) 는 3 rd Party Application 내에서삼성결제서비스를연동할수있도록지원하고있습니다. Version 1 에서는 jar 형태의라이브러리로연동하는방식이었으나 Version 2 에서부터는 Application간의독립성을보장하기위해서별도의안드로이드패키지로제공하고있습니다. 이를위해서 IAP와 3 rd Party Application과는 AIDL(Android Interface Definition Language) 방식으로통신하게됩니다. 이런방식은많은장점이있지만 IAP Service 연동, 삼성어카운트연동, IAP 패키지유효성검사 등의다양한처리가요구되기때문에안드로이드에대한전문적인지식뿐만아니라삼성서비스 들에대한이해를필요로합니다. 그래서좀더쉽게 IAP 와연동할수있도록 Version 2 부터별도의 Helper Class 를제공하게되었습 니다. 다음그림은 IAP Helper 를통해서 3 rd Party 어플리케이션이 IAP 와연동하는과정을보여주 고있습니다. 3 rd Party Application 에서는단지 IAP Helper 의 SamsungIapHelper 의메소드를호출하고그최종 결과만처리하면됩니다. 다음은 IAP Helper 를이용해서구매하는기능을구현한소스코드입니다. public class PurchaseActivity extends Activity implements OnPaymentListener private SamsungIapHelper miaphelper = null;... Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 4
5 protected void oncreate( Bundle savedinstancestate ) super.oncreate( savedinstancestate ); setcontentview( R.layout.activity_main ); miaphelper = SamsungIapHelper.getInstance( this, MODE ); public void dopurchase( View _view ) miaphelper.startpayment(item_id, true, this public void onpayment( ErrorVo _errorvo, PurchaseVo _purchasevo )... // 여기에서결제성공 / 실패처리를한다. IAP Version 3 가새롭게릴리즈되었습니다. Version 3 에서달라진점은다음과같습니다. 1. 자동갱신기간제 (Auto-Recurring Subscriptions) 상품기능제공기존에는지정한기간이끝나면종료되는기간제상품만제공하였으나, 매월결제가자동으로갱신되는기간제상품이추가되었습니다. 2. ItemGroupId 제거기존에는 3 rd party application을구분하기위해서갤럭시앱스에서 application마다생성해주는 12자리숫자 ItemGroupId를사용하였으나 application을식별하고관리하기에어려움이있어서 ItemGroupId를 3 rd party application의 PackageName으로변경했습니다. 따라서모든 IAP Helper의 Method에서 ItemGroupId를전달할필요가없어졌습니다. 3. 자유롭게생성할수있는 Item Id Version 2.0까지는갤럭시앱스에서임의로생성하는 12자리숫자를상품에대한 ID로사용하였지만아이템식별과 ID 관리상의어려움이있어서 3 rd party 관리자가 GUN, machinegun, bullet 과같이임으로지정한값을사용할수있도록개선되었습니다. 4. 캐싱된구매목록가져오기추가. 기존에는 3 rd party application 내의모든아이템에대해서기간과수량을지정하여구매목록을요청하였지만새롭게추가된캐싱된구매목록가져오기는지정된상품들에대해서만구매목록을요청할수있도록지원하고있습니다. 특히, 클라이언트사이드캐싱을지원하기때문에좀더빠른응답을보장받을수있습니다. 위와같이 IAP 가개편됨에따라서 IAP Helper 도일부수정되어함께배포되고있습니다. 또한기 존 IAP Version 2 사용자는다음과같은작은변경사항을확인할필요가있습니다. 1. IAP Version 2 에서사용하던 IAP Library 용어가 IAP Helper 로변경되었습니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 5
6 2. IAP Helper 및 Sample 의패키지명이 com.sec.android.iap 에서 com.samsung.android.sdk.iap 로 변경되었습니다. 3. IAP SDK 의개발환경이 Eclipse 에서 Android Studio 로변경되었습니다. 이제단계별로 IAP Helper 를이용하는방법을구체적인예제를통해서알아보도록하겠습니다. 1.2 다운로드 IAP 3.0 Helper & Sample 삼성개발자사이트의 IAP 부분에서아래의 IAP SDK 파일을다운로드받습니다. SamsungInAppPurchaseSDK_v3.x.x.zip 위압축파일은다음과같이 IAP 3.0 Helper 와 Helper 를활용한샘플소스코드로구성되어있습니 다. 번호 위치 프로젝트 설명 1./Libs AIDL Interface IAP3.0과연동을위한 AIDL Interface 2./Sample/IAP3Helper IAP3Helper IAP3.0과연동을위한 Helper 프로젝트 (AIDL Interface 포함 ) 3./Sample/IAP3Sample IAP3Sample IAP3Helper를이용한샘플어플리케이션프로젝트 제공되는 Helper 와샘플의기준개발환경은다음과같습니다. Android Studio IAP 3 제약사항 IAP는안드로이드 API 14부터지원합니다. 그이하의버전에서는정상적으로동작하지않습니다. IAP는삼성전자단말기에서만동작합니다. 그이외의제조사단말기에서는동작하지않습니다. 그이외의제약사항은없습니다. 1.4 IAP 3 개발모드 IAP 는과금때문에결제서비스를테스트하는것이쉽지않습니다. IAP 는다양한상황에서테스트 할수있도록다음과같은 3 가지의모드를지원하고있습니다. Mode 값설명 운영모드 0 운영모드입니다. Release 할때는반드시운영모드로설정해야합 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 6
7 니다. 운영모드에서만실제결제가발생합니다. 개발자테스트모드 ( 성공 ) 개발자테스트모드 ( 실패 ) 1 항상성공결과를반환하는테스트모드입니다. -1 항상실패결과를반환하는테스트모드입니다. 모드는구매, 구매목록, 상품목록을가져오기위해서 Helper의 getinstance() 로인스턴스를얻을때파라메터로설정을할수있습니다. 개발시에는항상성공결과를넘겨주는 1이나항상실패결과를넘겨주는 -1 로설정하여다양한상황에대해서충분히테스트를하고 Release 할때는반드시운영모드로수정해야합니다. 테스트모드로 Release 했을경우에는실제결제가발생하지않습니다. 간혹 3 rd party 에서테스트모드로 Release 하는경우가있어서 IAP는다음과같이개발자모드로설정되어있음을알리는팝업을보여줍니다. 이팝업을보셨다면반드시모드값을확인하시기바랍니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 7
8 1.5 지원상품타입 IAP 3 에서는아래와같이다양한상품타입을지원합니다. 타입설명 Consumable 구매한상품을사용하면상품이소진되는경우로재구매가가능한상품 ( 소모성상품 ) 입니다. 예 : 게임에서총알과같은소모성상품 NonConsumable 구매한상품에대해서영구적으로재사용이가능한상품으로재구매가 ( 비소모성상품 ) 불가능한상품입니다. 예 : 단행본책과같이한번구입하면재구매할필요가없는비소모성상품 참고 : 비소모성상품은특성상재구매테스트를할수가없습니다. 이를위해운영모드 ( 0 ) 가아닌테스트모드 ( 1 ) 에서는반복테스트를위해 10분마다재구매가가능하도록초기화됩니다. Non-Recurring 구매한상품에대해서일정기간이지나면재구매가가능한상품입니다. Subscription 예 : 월간잡지나기간제이용권과같이구매한후에일정기간이지나 ( 기간제상품 ) 면재구매가가능한상품. Auto-Recurring 매달자동으로재구매가되는상품입니다. Subscriptions ( 자동갱신기간제상품 ) All( 전체 ) 위세가지타입을모두포함한다. 2. IAP 3 Helper Programming 3rd Party Application 에서 IAP 의결제서비스를사용하기위해서는아래와같은과정으로진행되 어야합니다. 1 새안드로이드프로젝트생성 2 IAP Helper 프로젝트추가 3 AndroidManifest.xml 수정 4 IAP 연동기능개발 본문서에서사용된개발환경은 Android Studio 입니다. 본가이드문서의모든내용은이 개발환경을기준으로합니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 8
9 2.1 새안드로이드프로젝트생성 여기부터는 IAP 기능을사용하는 3 rd Party Application 영역입니다. IAP 기능을사용하는어플리케이션을위한새로운프로젝트를생성해보도록하겠습니다. File -> New Project 메뉴를선택하면새로운안드로이드어플리케이션을생성하는화면이나타납니다. Application Name 은 IAP3Sample 로 Package Name 은 iap3helper.sample.example 로정했습니다. 각 자원하는이름으로입력하시면됩니다. Next 버튼을클릭하고 Minimum SDK 는 API 14 이상으로 선택합니다. 주의 IAP 3.0 부터는 Item Group ID 대신 Package Name 으로어플리케이션을구분하기때문에갤럭시 앱스에등록되어있는 application 패키지명으로지정해야오류없이테스트할수있습니다. Next 버튼을다시클릭하고, Blank Activity 를선택하고 Next 버튼을클릭합니다. Activity 이름과레이아웃이름은기본값을사용하고 Finish 버튼을클릭하면새로운프로젝트가 생성됩니다. 2.2 IAP Helper 추가 이제새로생성한 IAP3Sample 프로젝트에 IAP Helper 프로젝트를추가해야합니다. Project Explorer에서 IAP3Sample 프로젝트를선택하고마우스오른쪽버튼을클릭해서 New -> Module를선택합니다. Import Existing Project를선택하고 Next를 Click 후 Source Directory에서 IAP3Helper 폴더를찾아지정후 Finish를클릭하여추가합니다. 다시 Project Explorer에서 IAP3Sample 프로젝트를선택하고마우스오른쪽버튼을클릭후 Open Module Settings를선택하거나 F4 키로 Project Structure 화면으로이동합니다. IAP3Sample Modules을선택후 Dependencies 탭을클릭하여 + 버튼을선택하면 Choose Modules 화면으로이동합니다. IAP3Helper를선택후 Ok 버튼을클릭하여추가를완료합니다. 2.3 AndroidManifest.xml 수정 아래설명될 AndroidManifest 의권한과 Activity 추가는변경없이고정해서사용되어야합니다. 그래서 IAP Helper 의 AndroidManifest.xml 파일에주석으로포함되어있으니이를복사해서사용 하시면안전하고편리합니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 9
10 1) 권한추가 IAP 연동을위해서는 com.sec.android.iap.permission.billing 권한이필요합니다. 또한, IAP 는네트워크통신을사용하기때문에 android.permission.internet 권한도추가해야합니다. AndroidManifest.xml에아래와같이권한을추가합니다. <uses-permission android:name="com.sec.android.iap.permission.billing"/> <uses-permission android:name="android.permission.internet"/> 2) IAP Helper 에포함된 Activity 추가 IAP Helper 는투명한 Activity 를통해서 3 rd Party 어플리케이션과통신을하게됩니다. 그래서다 음의세가지 Activity 를 AndroidManifest 파일에추가해야합니다. Activity 이름 com.samsung.android.sdk.iap.li b.activity.inboxactivity com.samsung.android.sdk.iap.li b.activity.paymentactivity com.samsung.android.sdk.iap.li b.activity.itemactivity 설명구매내역을요청하기위해서필요한 Activity 구매요청을위해서필요한 Activity 상품목록을요청하기위해서필요한 Activity <activity android:name="com.samsung.android.sdk.iap.lib.activity.inboxactivity" android:theme="@style/theme.empty" android:configchanges="orientation screensize"/> <activity android:name="com.samsung.android.sdk.iap.lib.activity.paymentactivity" android:theme="@style/theme.empty" android:configchanges="orientation screensize"/> <activity android:name=" com.samsung.android.sdk.iap.lib.activity.itemactivity" android:theme="@style/theme.empty" android:configchanges="orientation screensize"/> 주의 : 위 3 개의 Activity 는투명해야하기때문에모두 로설정하고있습니다. 만약투명한테마를지정하지않는다면이 Activity 들이여러분의 Application 을가리는현상이발생하게됩니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 10
11 2.4 IAP 연동기능개발 1) 구매하기 다음과같이 activity_main.xml 레이아웃을수정해서구매버튼을추가하고구매버튼이클릭되었 을때 dopurchase 메소드가호출되도록했습니다. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp" > <!-- Purchase Button --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onclick="dopurchase"/> </LinearLayout> 이제 MainActivity.java 에서 dopurchase 메소드에서 IAP 에결제를요청하는코드를아래와같 이작성했습니다. public class MainActivity extends Activity implements OnPaymentListener private static final int MODE = SamsungIapHelper.IAP_MODE_COMMERCIAL; // Please change the ITEM_ID for your application. // ======================================================================== private static final String ITEM_ID = "Nuclear"; // ======================================================================== private SamsungIapHelper miaphelper = protected void oncreate( Bundle savedinstancestate ) super.oncreate(savedinstancestate); setcontentview( R.layout.activity_main ); miaphelper = SamsungIapHelper.getInstance( this, MODE ); public void dopurchase( View _view ) miaphelper.startpayment( ITEM_ID, true, this ); Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 11
12 @Override public void onpayment( ErrorVo _errorvo, PurchaseVo _purchasevo ) // 여기에서결제성공 / 실패처리를한다. 위소스코드에서 IAP에구매를요청하는부분은 dopurchase 메소드내부의단한줄입니다. oncreate 메소드에서 SamsungIapHelper를생성하고 dopurchase에서는 startpayment 메소드만호출하면됩니다. 단 startpayment 메소드의세번째인자는 OnPaymentListener 타입이고결제결과를받는콜백메소드 onpayment를위한인터페이스입니다. 위 Activity는 OnPaymentListener를구현하고있기때문에 this가인자로들어갔습니다. 기존에복잡했던초기화과정은모두 IAP Helper 내부에서처리되고구매결과만 onpayment 인 터페이스로들어오게됩니다. Reference startpayment( String, boolean, OnPaymentListener ) 메소드 OnPaymentListener 인터페이스 deprecated method startpayment( String String, boolean, OnPaymentListener ) 이제다음과같이 onpayment 메소드에서결제성공시에 PurchaseVo 값을보여주는코드를추가 해보도록하겠습니다. 여러분의어플리케이션에서결제가성공또는실패시에어떤처리를해 public void onpayment( ErrorVo _errorvo, PurchaseVo _purchasevo ) AlertDialog.Builder alert = new AlertDialog.Builder( this ); alert.setpositivebutton( android.r.string.ok, new public void onclick( DialogInterface dialog, int which ) dialog.dismiss(); ); if( _errorvo!= null ) // If Payment is finished Successfully Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 12
13 // ================================================================ if( _errorvo.geterrorcode() == SamsungIapHelper.IAP_ERROR_NONE ) alert.settitle( _errorvo.geterrorstring() ); alert.setmessage( _purchasevo.dump() ); // ================================================================ // If Payment is failed // ================================================================ else alert.settitle( "ERROR" ); alert.setmessage( _errorvo.geterrorstring() ); // ================================================================ else alert.settitle( "ERROR" ); alert.setmessage( "ErrorVo is null" ); alert.show(); 이것으로구매를위한모든코딩이완료되었습니다. 실행을해보면다음그림과같은 MainActivity가화면에나타납니다. MainActivity 화면에서 l Purchase 버튼을클릭하면삼성어카운트패스워드를확인하는 Confirm Password 화면이나타납니다. 이화면에서 2 패스워드를입력하고 3 Confirm 버튼을클릭하면결제방법을선택하는화면이나타납니다. 이화면에서 4 결제방법을선택하고 5 Buy 버튼을클릭하면비로소 IAP의구매프로세스가진행됩니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 13
14 구매절차가모두완료되고결제가성공하면다음과같은팝업을확인할수있을것입니다. 참고 IAP Helper에서는악의적인구매를방지하기위해서 Client-to-Server Verification을기본제공하고있습니다. 좀더안전한거래를위해서는 Server-to-Server Verification을권장합니다. Server-to- Server Verification에대해서좀더자세히알고싶으신분들은 4. IAP Server-to-Server API Reference를참고하시기바랍니다. 2) 구매목록가져오기 이제사용자가구매한내역을가져오는코드를작성해보도록하겠습니다. 이부분도구매요청과 크게다르지않습니다. 여기서는구매목록을 ListView 를통해서보여주기위해서별도의 InboxListActivity 를추가하도록하겠습니다. 우선 activity_main.xml 레이아웃의구매버튼아래에 InboxListActivity 를실행하는버튼을하나추 가하고클릭되었을때 dogetinboxlist 메소드가호출되도록설정합니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 14
15 <!-- InboxList Button --> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="inboxlist" android:onclick="dogetinboxlist" /> 다음으로 MainActivity.java 에서 dogetinboxlist 메소드를다음과같이구현합니다. 필요한정보들 을 intent 에세팅하고 InboxListActivity 를실행하는내용입니다. public void dogetinboxlist( View _view ) Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat( "yyyymmdd", Locale.getDefault() ); String today = sdf.format( d ); Intent intent = new Intent( MainActivity.this, InboxListActivity.class ); intent.putextra( "IapMode", MODE ); intent.putextra( "StartNum", 1 ); intent.putextra( "EndNum", 15 ); intent.putextra( "StartDate", " " ); intent.putextra( "EndDate", today ); startactivity( intent ); 버튼을누르면 InboxListActivity 의 oncreate 메소드에서 intent 로넘어온값들을저장하고받은값 들을기반으로 IAP 에구매목록을요청하게됩니다. 관련코드는아래와같습니다. public class InboxListActivity extends Activity implements OnGetInboxListener private int miapmode = 1; private int mstartnum = 0; private int mendnum = 0; private String mstartdate = ""; private String menddate = ""; private SamsungIapHelper miaphelper = protected void oncreate( Bundle savedinstancestate ) super.oncreate( savedinstancestate ); Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 15
16 Intent intent = getintent(); if( intent!= null && intent.getextras()!= null && intent.getextras().containskey( "IapMode" ) && intent.getextras().containskey( "StartNum" ) && intent.getextras().containskey( "EndNum" ) && intent.getextras().containskey( "StartDate" ) && intent.getextras().containskey( "EndDate" ) ) Bundle extras = intent.getextras(); miapmode = extras.getint( "IapMode" ); mstartnum = extras.getint( "StartNum" ); mendnum = extras.getint( "EndNum" ); mstartdate = extras.getstring( "StartDate" ); menddate = extras.getstring( "EndDate" ); else Toast.makeText( this, R.string.invalid_parameter, Toast.LENGTH_LONG ).show(); finish(); miaphelper = SamsungIapHelper.getInstance( this, miapmode ); miaphelper.getiteminboxlist( mstartnum, mendnum, mstartdate, menddate, this public void ongetiteminbox ( ErrorVo _errorvo, ) ArrayList<InboxVo> _inboxlist 복잡해보이지만대부분 MainActivity에서전달된값들을저장하는코드일뿐입니다. 사실 IAP에구매목록을요청하는부분은노란색으로표시된단두줄뿐입니다. 구매요청과마찬가지로최종결과는 OnGetInboxListener 인터페이스의 ongetiteminbox 메소드로들어옵니다. 실행해보면지금은 ongetiteminbox에아무런코드도들어있지않기때문에결과를눈으로확인할수는없지만 IAP와실제로연동되어그결과를 ongetiteminbox로전송되는것을확인할수있을것입니다. Reference getiteminboxlist( int, int, String, String, OnGetInboxListener ) 메소드 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 16
17 OnGetInboxListener 인터페이스 Deprecated method getiteminboxlist( String, int, int, String, String, OnGetInboxListener ) 주의 getiteminboxlist 는모드와관계없이모든구매이력을전달합니다. InboxListActivity 를 AndroidManifest.xml 파일에다음과같이추가해야합니다. <activity android:name=".inboxlistactivity" android:label="@string/items_inbox_list" > </activity> 이제 ongetiteminbox 메소드에 ListView 에데이터를추가하는코드를작성하도록하겠습니다. 우 선 InboxListActivity oncreate 메소드에다음코드를추가합니다. 이코드는 Activity 에뷰를제공 하고그뷰들을초기화하는코드입니다. setcontentview( R.layout.inbox_list_layout ); initview(); inbox_list_layout.xml 은다음과같이구성되어있습니다. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:orientation="vertical"> <!-- Item Inbox List ListView --> <ListView android:id="@+id/iteminboxlist" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:visibility="gone"/> <!-- Item Inbox List NULL --> <TextView android:id="@+id/nodatatext" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 17
18 </LinearLayout> initview 메소드코드는다음과같습니다. public void initview() minboxlistview = (ListView)findViewById( R.id.itemInboxList ); mnodatatextview = (TextView)findViewById( R.id.noDataText ); mnodatatextview.setvisibility( View.GONE ); minboxlistview.setemptyview( mnodatatextview ); minboxlistadapter = new InboxListAdapter( this, R.layout.inbox_row, minboxlist ); minboxlistview.setadapter( minboxlistadapter ); 그다음으로아래멤버변수들을 InboxListActivity에추가합니다. private ListView minboxlistview = null; private TextView mnodatatextview = null; private ArrayList<InboxVo> minboxlist = new ArrayList<InboxVo>(); private InboxListAdapter minboxlistadapter = null; 위코드에서 minboxlistadapter 가있는데이것은리스트뷰의각 row 에대한뷰를제공하는역할 을하는 AdapterView 입니다. 이와관련된설명을본문서의범위를벗어나기때문에별도로설명 하지는않겠습니다. InboxListAdapter 는다음과같이구성되어있습니다. public class InboxListAdapter extends ArrayAdapter<InboxVo> private int mresid = 0; private LayoutInflater minflater = null; private ArrayList<InboxVo> mitems = null; public InboxListAdapter ( Context int ) ArrayList<InboxVo> _context, _resid, _items super( _context, _resid, _items ); mresid = _resid; mitems = _items; minflater = (LayoutInflater)_context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 18
19 public static class ViewHolder TextView itemname; TextView itempricestring; TextView itemtype; TextView paymentid; TextView purchasedate; TextView public View getview ( final int View ) final ViewGroup _position, _convertview, _parent final InboxVo vo = mitems.get( _position ); ViewHolder vh; View v = _convertview; if( v == null ) vh = new ViewHolder(); v = minflater.inflate( mresid, null ); vh.itemname = (TextView)v.findViewById( R.id.itemName ); vh.itempricestring = (TextView)v.findViewById( R.id.itemPriceString ); vh.itemtype = (TextView)v.findViewById( R.id.itemType ); vh.paymentid = (TextView)v.findViewById( R.id.paymentId ); vh.purchasedate = (TextView)v.findViewById( R.id.purchaseDate ); vh.expiredate = (TextView)v.findViewById( R.id.expireDate ); v.settag( vh ); else vh = (ViewHolder)v.getTag(); vh.itemname.settext( vo.getitemname() ); vh.itempricestring.settext( vo.getitempricestring() ); String itemtype = "Type : "; if( true == "00".equals( vo.gettype() ) ) itemtype += "Consumable"; vh.expiredate.setvisibility( View.GONE ); else if( true == "01".equals( vo.gettype() ) ) itemtype += "NonConsumable"; Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 19
20 vh.expiredate.setvisibility( View.GONE ); else if( true == "02".equals( vo.gettype() ) ) itemtype += "Subscription"; vh.expiredate.setvisibility( View.VISIBLE ); else if( true == "03".equals( vo.gettype() ) ) itemtype += "Auto Recurring Subscription"; vh.expiredate.setvisibility( View.GONE ); else itemtype += "Unsupported type"; vh.expiredate.setvisibility( View.GONE ); vh.itemtype.settext( itemtype ); vh.paymentid.settext( "Payment ID : " + vo.getpaymentid() ); vh.purchasedate.settext( "Purchase Date : " + vo.getpurchasedate() ); vh.expiredate.settext( "Expire Date : " + vo.getsubscriptionenddate() ); return v; 앞서 InboxAdapter 는리스트뷰의각 row 의뷰를생성해준다고했습니다. 각뷰의행을위한레이 아웃은아래와같이구성되어있습니다. 파일명은 inbox_row.xml 입니다. 이것은앞서설명한 initview 메소드에서 InboxAdapter 를생성할때인자로전달하고있습니다. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingbottom="8dp" android:paddingleft="12dp" android:paddingright="12dp" android:paddingtop="8dp" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/itemname" android:layout_width="0dp" android:layout_height="wrap_content" android:linespacingextra="8dp" android:singleline="true" android:ellipsize="end" android:textsize="14dp" Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 20
21 android:textstyle="bold" android:gravity="center_vertical left" android:layout_weight="1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:linespacingextra="8dp" android:singleline="true" android:ellipsize="end" android:textsize="14dp" android:textstyle="bold" android:gravity="center_vertical right" android:layout_marginleft="10dp" android:layout_weight="0" /> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:singleline="true" android:ellipsize="end" android:textsize="10dp" android:gravity="center_vertical left"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:singleline="true" android:ellipsize="end" android:textsize="10dp" android:gravity="center_vertical left"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:singleline="true" android:ellipsize="end" android:textsize="10dp" android:gravity="center_vertical left"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:singleline="true" android:ellipsize="end" android:textsize="10dp" android:textcolor="#ff0000" android:gravity="center_vertical left"/> </LinearLayout> Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 21
22 이제마지막으로결과를처리할 ongetiteminbox public void ongetiteminbox ( ErrorVo _errorvo, ) ArrayList<InboxVo> _inboxlist if( _errorvo!= null && _errorvo.geterrorcode() == SamsungIapHelper.IAP_ERROR_NONE ) if( _inboxlist!= null && _inboxlist.size() > 0 ) minboxlist.addall( _inboxlist ); minboxlistadapter.notifydatasetchanged(); 위코드는 Inbox 요청이성공했을경우결과로내려온 _inboxlist 를 minboxlist 에추가하고 minboxlistadapter 에데이터가변경되었음을알려줘서 ListView 를갱신하는역할을수행합니다. 이제실행해보면다음과같이사용자가구매한내역을확인할수있는화면을볼수있습니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 22
23 3) 캐싱된구매목록가져오기 ( IAP 3.0 Helper 부터지원 ) IAP 3.0 Helper 에서새롭게추가된구매목록가져오기기능에대해서알아보도록하겠습니다. 앞서설명한구매목록은 3 rd party application 내의모든아이템들에대해서일정기간과개수를지정해서가져오는기능이었다면이것은선택된아이템들에대한전체구매목록을가져오는기능을지원합니다. 특히클라이언트사이드에서캐싱기능을제공하기때문에매우빠른응답속도를기대할수 있습니다. 지금부터새로운구매목록 API 를활용한예제를작성해보도록하겠습니다. 앞장에서사용했던 InboxListAdapter.java, inbox_list_layout.xml, inbox_row.xml 은그대로활용합니다. 우선 activity_main.xml 레이아웃의구매버튼아래에 CachedInboxListActivity 를실행하는버튼을 하나추가하고클릭되었을때 dogetcachedinboxlist 메소드가호출되도록설정합니다. <!-- Cached InboxList Button --> <Button android:id="@+id/btn_get_cached_inbox_list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/load_cached_items_inbox_list" android:onclick="dogetcachedinboxlist" /> 다음과같이 MainActivity.java 에원하는아이템들에대한 ID 목록을만들어서추가합니다. private static final String ITEM_IDS = " Nuclear, Claymore, " + " Blockbuster"; 다음으로 MainActivity.java 에서 dogetcachedinboxlist 메소드를다음과같이구현합니다. 필요한 정보들을 intent 에세팅하고 CachedInboxListActivity 를실행하는내용입니다. public void dogetcachedinboxlist( View _view ) Intent intent = new Intent( MainActivity.this, CachedInboxListActivity.class ); intent.putextra( "IapMode", MODE ); intent.putextra( "ItemIds", ITEM_IDS ); startactivity( intent ); Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 23
24 다음으로 CachedInboxListActivity 클래스를생성하고다음과같이코드를추가합니다. public class CachedInboxListActivity extends Activity implements OnGetInboxListener private int miapmode = 1; private String mitemids = ""; private SamsungIapHelper miaphelper = null; private ListView minboxlistview = null; private TextView mnodatatextview = null; private ArrayList<InboxVo> minboxlist = new ArrayList<InboxVo>(); private InboxListAdapter minboxlistadapter = protected void oncreate( Bundle savedinstancestate ) super.oncreate( savedinstancestate ); setcontentview( R.layout.inbox_list_layout ); initview(); Intent intent = getintent(); if( intent!= null && intent.getextras()!= null && intent.getextras().containskey( "IapMode" ) && intent.getextras().containskey( "ItemIds" ) ) Bundle extras = intent.getextras(); miapmode = extras.getint( "IapMode" ); mitemids = extras.getstring( "ItemIds" ); else Toast.makeText( this, R.string.invalid_parameter, Toast.LENGTH_LONG ).show(); finish(); miaphelper = SamsungIapHelper.getInstance( this, miapmode ); miaphelper.getiteminboxlist( mitemids, this ); public void initview() minboxlistview = (ListView)findViewById( R.id.itemInboxList ); mnodatatextview = (TextView)findViewById( R.id.noDataText ); mnodatatextview.setvisibility( View.GONE ); minboxlistview.setemptyview( mnodatatextview ); minboxlistadapter = new InboxListAdapter( this, Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 24
25 R.layout.inbox_row, minboxlist ); minboxlistview.setadapter( minboxlistadapter public void ongetiteminbox ( ErrorVo _errorvo, ) ArrayList<InboxVo> _inboxlist if( _errorvo!= null && _errorvo.geterrorcode() == SamsungIapHelper.IAP_ERROR_NONE ) if( _inboxlist!= null && _inboxlist.size() > 0 ) minboxlist.addall( _inboxlist ); minboxlistadapter.notifydatasetchanged(); 앞서설명했던 InboxListActivity 와구성이거의동일합니다. 다만노란색으로표시된부분의함수 파라미터만조금차이가있습니다. Reference getiteminboxlist( String, OnGetInboxListener ) 메소드 OnGetInboxListener 인터페이스 주의 getiteminboxlist 는모드와관계없이모든구매목록을전달합니다. 마지막으로 AndroidManifest.xml 파일에다음과같이새롭게추가된 CachedInboxListActivity 를 추가합니다. <activity android:name=".cachedinboxlistactivity" android:label="@string/cached_items_inbox_list" > </activity> 이제실행해보면다음과같은결과화면을확인할수있을것입니다. 앞서언급했듯이클라이언트 캐싱을지원하기때문에최초로딩이후에는빠른속도로로딩되는것을확인할수있습니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 25
26 4) 상품목록가져오기 마지막으로상품목록을가져오는코드를추가해보도록하겠습니다. 상품목록도구매목록처럼 ListView 형식으로보여주는것이좋겠지만기능에충실하게하기위해서구매요청과비슷하게 구현하겠습니다. activity_main.xml 레이아웃에다음과같이상품목록가져오는버튼을추가하고이버튼이 클릭되었을때 dogetitemlist 메소드가호출되도록설정했습니다. <!-- Get Item List Button --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onclick="dogetitemlist"/> MainActivity 에 dogetitemlist 메소드를다음과같이추가합니다. SamsungIapHelper 의 getitemlist 메소드를호출하기만하면됩니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 26
27 public void dogetitemlist( View _view ) if( miaphelper == null ) miaphelper = SamsungIapHelper.getInstance( this, MODE ); miaphelper.getitemlist( 1, 15, "00", MODE, this ); 다음으로 MainActivity 선언부에다음과같이 OnGetItemListener 인터페이스구현을추가합니다. public class MainActivity extends Activity implements OnPaymentListener, OnGetItemListener OnGetItemListener 인터페이스의콜백 ongetitem 메소드를다음과같이구현합니다. 아래 코드는최종결과가넘어왔을경우 AlertDialog public void ongetitem( ErrorVo _errorvo, ArrayList<ItemVo> _itemlist ) AlertDialog.Builder alert = new AlertDialog.Builder( this ); alert.setpositivebutton( android.r.string.ok, new public void onclick(dialoginterface dialog, int which) try dialog.dismiss(); catch( Exception e ) e.printstacktrace(); ); if( _errorvo!= null ) if( _errorvo.geterrorcode() == SamsungIapHelper.IAP_ERROR_NONE ) alert.settitle( R.string.item_list ); String message = ""; for( ItemVo vo : _itemlist ) message += vo.dump() + "\n" + " " + "\n"; Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 27
28 alert.setmessage( message ); else alert.settitle( R.string.item_list ); alert.setmessage( _errorvo.geterrorstring() ); else alert.settitle( R.string.item_list ); alert.setmessage( "ErrorVo is null" ); try alert.show(); catch( Exception e ) e.printstacktrace(); 예제를실행하면 AlertDialog 에 item 리스트내용을출력하며, 실행결과실패시에는에러 메시지가출력이됩니다. 다음화면처럼구매목록에서구현했던것과같이 ListView 와 AdapterView 를활용해서리스트형태로보여줄수도있습니다. Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 28
29 1.2 다운로드 IAP 3.0 Helper & Sample 에서다운로드받은 IAP3Sample 프로젝트에는 ListView 로 출력하는예제를포함하고있으니참고하시기바랍니다. Reference getitemlist( int, int, String, int, OnGetItemListener ) 메소드 OnGetItemListener 인터페이스 Deprecated method getitemlist( String, int, int, String, int, OnGetItemListener ) 메소드 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 29
30 3. IAP 3 Helper Reference 3.1 SamsungIapHelper IAP Helper 에서는구매, 구매목록, 상품목록을위한총 3 개의메소드를제공하고있습니다. 이메 소드들은모두 SamsungIapHelper 클래스내부에존재합니다 1) getinstance( Context, int ) Singleton 방식의 SamsungIapHelper 객체를반환합니다. public static SamsungIapHelper getinstance( Context _context, int _mode ) 파라미터 파라미터 타입 설명 _context Context Android Context _mode int IAP 개발모드 0: 운영모드 1: 개발자테스트모드 ( 반환결과는무조건성공 ) -1: 개발자테스트모드 ( 반환결과는무조건실패 ) 반환값 SamsungIapHelper 2) (Deprecated) startpayment( String, String, boolean, OnPaymentListener ) 구매를요청하는메소드입니다. 이메소드는 IAP 3.0 부터 deprecated 되었습니다. startpayment( String, boolean, OnPaymentListener ) 메소드를사용할것을권장합니다. public void startpayment ( String String boolean OnPaymentListener ) _itemgroupid, _itemid, _showsuccessdialog, _onpaymentlistener 파라미터 파라미터 타입 설명 _itemgroupid String 상품이속해있는그룹의 ID값으로갤럭시앱스를통해서발급 받을수있다. 갤럭시앱스에서 IAP 연동을위해서어플리케이 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 30
31 션마다발급하는 ID다. IAP 3.0부터는 packagename으로변경되어더이상사용되지않는다. 하위호환성을위해서만유지되고있다. _itemid String 상품의 ID값. _showsuccessdialog booelan true 이면결제성공시 IAP의다이얼로그를보여준다. false 인경우는보여주지않는다. false인경우는 3 rd Party App에서결제결과성공시결과를보여줘야한다. _onpaymentlistener OnPaymentListener 결제결과를 3 rd Party App에게알려주기위한콜백메소드 onpayment() 정의를위한인터페이스. 3) startpayment( String, boolean, OnPaymentListener ) IAP 3.0 에서 Item Group ID 가 Package Name 으로변경되면서새롭게추가된메소드로구매를요 청한다. public void startpayment ( String boolean OnPaymentListener ) _itemid, _showsuccessdialog, _onpaymentlistener 파라미터 파라미터 타입 설명 _itemid String 상품의 ID값. _showsuccessdialog booelan true 이면결제성공시 IAP의다이얼로그를보여준다. false 인경우는보여주지않는다. false인경우는 3 rd Party App에서결제결과성공시결과를보여줘야한다. _onpaymentlistener OnPaymentListener 결제결과를 3 rd Party App에게알려주기위한콜백메소드 onpayment() 정의를위한인터페이스. 4) (Deprecated) getiteminboxlist( String, int, int, String, String, OnGetInboxListener ) 구매목록을가져옵니다. 이메소드는 IAP 3.0부터 deprecated 되었습니다. getiteminboxlist( int, int, String, String, OnGetInboxListener ) 메소드를사용할것을권장합니다. public void getiteminboxlist ( String _itemgroupid, int _startnum, int _endnum, String _startdate, String _enddate, OnGetInboxListener _ongetinboxlistener Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 31
32 ) 파라미터 파라미터 타입 설명 _itemgroupid String 상품이속해있는그룹의 ID값으로갤럭시앱스를통해서발급받을수있다. 갤럭시앱스에서 IAP 연동을위해서어플리케이션마다발급하는 ID다. IAP 3.0부터는 packagename으로변경되어더이상사용되지않는다. 하위호환성을위해서유지되고있다. _startnum int 요청하는구매목록의시작번호. 주의 : 시작번호가 0이아니고 1이다. _endnum int 요청하는구매목록의끝번호. 주의 : 시작번호가 0이아니고 1이다. 예 : _startnum = 1, _endnum = 15 라면 1번부터 15번까지를요청하는것이다. _startdate String 요청하는구매목록의시작일. 예 : _enddate String 요청하는구매목록의마지막날짜. 예 : _ongetinboxlistener OnGetInboxListener 구매목록요청결과를 3 rd Party App에게전달하기위한콜백메소드 ongetiteminbox() 정의를위한인터페이스. 5) getiteminboxlist( int, int, String, String, OnGetInboxListener ) IAP 3.0 에서 Item Group ID 가 Package Name 으로변경되면서새롭게추가된메소드로구매목록 을가져옵니다. public void getiteminboxlist ( int _startnum, int _endnum, String _startdate, String _enddate, OnGetInboxListener _ongetinboxlistener ) 파라미터 파라미터 타입 설명 _startnum int 요청하는구매목록의시작번호. 주의 : 시작번호가 0이아니고 1이다. _endnum int 요청하는구매목록의끝번호. 주의 : 시작번호가 0이아니고 1이다. 예 : _startnum = 1, _endnum = 15 라면 1번부터 15번까지를 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 32
33 요청하는것이다. _startdate String 요청하는구매목록의시작일. 예 : _enddate String 요청하는구매목록의마지막날짜. 예 : _ongetinboxlistener OnGetInboxListener 구매목록요청결과를 3 rd Party App에게전달하기위한콜백메소드 ongetiteminbox() 정의를위한인터페이스. 6) getiteminboxlist( String, OnGetInboxListener ) IAP 3.0에서새롭게추가된메소드로선택된상품들에대한구매목록을가져옵니다. 특히, 클라이언트사이드캐싱을지원하기때문에빠른응답을보장합니다. public void getiteminboxlist ( String _itemids, OnGetInboxListener _ongetinboxlistener ) 파라미터 파라미터 타입 설명 _itemids String 상품들의 ID값. 다음과같이여러개아이디를, 로구분하여전달할수있다. 예 : " , , _ongetinboxlistener OnGetInboxListener 구매목록요청결과를 3 rd Party App에게전달하기위한콜백메소드 ongetiteminbox() 정의를위한인터페이스. 7) (Deprecated) getitemlist( String, int, int, String, int, OnGetItemListener ) 상품목록을가져옵니다. 이메소드는 IAP 3.0 부터 deprecated 되었습니다. getitemlist( int, int, String, int, OnGetItemListener ) 메소드를사용할것을권장합니다. public void getitemlist ( String int int String int OnGetItemListener ) _itemgroupid, _startnum, _endnum, _itemtype, _mode, _ongetitemlistener 파라미터 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 33
34 파라미터 타입 설명 _itemgroupid String 상품이속해있는그룹의 ID값으로갤럭시앱스를통해서발급받을수있다. 갤럭시앱스에서 IAP 연동을위해서어플리케이션마다발급하는 ID다. IAP 3.0부터는 packagename으로변경되어더이상사용되지않는다. 하위호환성을위해서유지되고있다. _startnum int 요청하는상품목록의시작번호. 주의 : 시작번호가 0이아니라 1이다. _endnum int 요청하는구매목록의끝번호. 주의 : 시작번호가 0이아니라 1이다. 예 : _startnum = 1, _endnum = 15 라면 1번부터 15번까지를요청하는것이다. _itemtype String 아이템타입 00: Consumable ( 소모성상품 ) 01: NoConsumable ( 비소모성상품 ) 02: Subscription ( 기간제상품 ) 03: Auto-Recurring Subscriptions ( 자동갱신기간제상품 ) IAP 3.0부터제공되는 Type입니다. 10: All ( 모든타입 ) _mode int IAP 개발모드 0: 운영모드 1: 개발자테스트모드 ( 반환결과는무조건성공 ) -1: 개발자테스트모드 ( 반환결과는무조건실패 ) _ongetitemlistener OnGetItemListener 상품목록요청결과를 3 rd Party App에게전달하기위한콜백메소드를 ongetitem() 을정의하는인터페이스. 8) getitemlist( int, int, String, int, OnGetItemListener ) IAP 3.0 에서 Item Group ID 가 Package Name 으로변경되면서추가된메소드로상품목록을가져옵 니다. public void getitemlist ( int int String int OnGetItemListener ) _startnum, _endnum, _itemtype, _mode, _ongetitemlistener 파라미터 파라미터타입설명 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 34
35 _startnum int 요청하는상품목록의시작번호. 주의 : 시작번호가 0이아니라 1이다. _endnum int 요청하는구매목록의끝번호. 주의 : 시작번호가 0이아니라 1이다. 예 : _startnum = 1, _endnum = 15 라면 1번부터 15번까지를요청하는것이다. _itemtype String 아이템타입 00: Consumable ( 소모성상품 ) 01: NoConsumable ( 비소모성상품 ) 02: Subscription ( 기간제상품 ) 03: Auto-Recurring Subscriptions ( 자동갱신기간제상품 ) IAP 3.0부터제공되는 Type입니다. 10: All ( 모든타입 ) _mode int IAP 개발모드 0: 운영모드 1: 개발자테스트모드 ( 반환결과는무조건성공 ) -1: 개발자테스트모드 ( 반환결과는무조건실패 ) _ongetitemlistener OnGetItemListener 상품목록요청결과를 3 rd Party App에게전달하기위한콜백메소드를 ongetitem() 을정의하는인터페이스. 3.2 Result Callback Interface 1) OnPaymentListener IAP 결제가완료되었을때호출되는콜백메소드를위한인터페이스정의 void onpayment( ErrorVo _errorvo, PurchaseVo _purchasevo ); 결제가완료되었을때호출되는콜백메소드. 파라미터 파라미터 타입 설명 _errorvo ErrorVo 요청결과 (3.3 Value Object 참조 ) _purchasevo PurchaseVo 구매결과 (3.3 Value Object 참조 ) 2) OnGetInboxListener 구매목록요청이완료되었을때호출되는콜백메소드를위한인터페이스 void ongetiteminbox( ErrorVo _errorvo, ArrayList<InboxVo> _inboxlist ); 구매목록요청이완료되었을때호출되는콜백메소드 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 35
36 파라미터 파라미터 타입 설명 _errorvo ErrorVo 요청결과 (3.3 Value Object 참조 ) _inboxlist ArrayList<InboxVo> 구매목록 (3.3 Value Object 참조 ) 3) OnGetItemListener 상품목록요청이완료되었을때호출되는콜백메소드정의를위한인터페이스 void ongetitem( ErrorVo _errorvo, ArrayList<ItemVo> _itemlist ); 상품목록요청이완료되었을때호출되는콜백메소드 파라미터 파라미터 타입 설명 _errorvo ErrorVo 요청결과 (3.3 Value Object 참조 ) _itemlist ArrayList<ItemVo> 상품목록 (3.3 Value Object 참조 ) 3.3 Value Object 1) PurchaseVo 구매결과정보 멤버변수 타입 설명 mitemid String 상품아이디 mitemname String 상품명 mitemprice Double 상품가격 예 : 7.99 mitempricestring String 통화기호 + 상품가격 예 : 7.99 mcurrencyunit String 통화기호 예 :,, $ mcurrencycode String 통화코드 예 : EUR, GBP, USD mitemdesc String 상품설명 mitemimageurl String 상품이미지 URL mitemdownloadurl String 상품다운로드 URL mpaymentid String 결제아이디 mpurchaseid String 구매아이디 mpurchasedate String 구매일시 (millisecond 형태 ) mverifyurl String mpurchaseid값을이용해서 IAP 서버에유효한구매인지 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 36
37 확인하기위한 IAP Server URL. mjsonstring String 원본 JSON String 2) ItemVo 상품정보 멤버변수 타입 설명 mitemid String 상품아이디 mitemname String 상품명 mitemprice Double 상품가격 예 : 7.99 mitempricestring String 통화기호 + 상품가격 예 : 7.99 mcurrencyunit String 통화기호 예 :,, $ mcurrencycode String 통화코드 예 : EUR, GBP, USD mitemdesc String 상품설명 mitemimageurl String 상품이미지 URL mitemdownloadurl String 상품다운로드 URL mtype String 상품타입 00: Consumable ( 소모성상품 ) 01: NoConsumable ( 비소모성상품 ) 02: Subscription ( 기간제상품 ) 03: Auto-Recurring Subscriptions ( 자동갱신기간제상품 ) msubscriptiondurationunit String 상품타입이 Subscription인경우상품의유효기간단위로가능한단위는 YEAR, MONTH, WEEK, DAY 모두 4가지로대문자값이다. msubscriptiondurationmultiplier String 상품타입이 Subscription인경우상품의유효기간이다. msubscriptiondurationunit과조합하여 1MONTH와같이표현한다. mjsonstring String 원본 JSON String 3) InboxVo 구매내역정보 멤버변수 타입 설명 mitemid String 상품아이디 mitemname String 상품명 mitemprice Double 상품가격 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 37
38 예 : 7.99 mitempricestring String 통화기호 + 상품가격 예 : 7.99 mcurrencyunit String 통화기호 예 :,, $ mcurrencycode String 통화코드 예 : EUR, GBP, USD mitemdesc String 상품설명 mitemimageurl String 상품이미지 URL mitemdownloadurl String 상품다운로드 URL mtype String 상품타입 00: Consumable ( 소모성상품 ) 01: NoConsumable ( 비소모성상품 ) 02: Subscription ( 기간제상품 ) 03: Auto-Recurring Subscriptions ( 자동갱신기간제상품 ) mpaymentid String 결제아이디 mpurchaseid String 구매아이디 mpurchasedate String 구매일시 (millisecond 형태 ) msubscriptionenddate String 상품타입이 SubScription인경우유효기간만료일. long 타입으로반환된다. mjsonstring String 원본 JSON String 4) ErrorVo 요청처리결과 멤버변수 타입 설명 merrorcode Int 응답코드 ( 3.4 Response Code 참조 ) merrorstring String 에러메시지 mextrastring String 결과에대한추가적인정보 5) VerificationVo 결제유효성검사결과 멤버변수 타입 설명 mitemid String 상품아이디 mitemname String 상품이름 mitemdesc String 상품설명 mpurchasedate String 구매일시 (millisecond 형태 ) mpaymentid String 결제아이디 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 38
39 mpaymentamount String 총결제금액 mstatus String 유효성검사결과 3.4 Response Code 응답코드 코드값 설명 IAP_ERROR_NONE 0 성공 IAP_PAYMENT_IS_CANCELED 1 결제취소 IAP_ERROR_INITIALIZATION IAP 초기화중실패 IAP_ERROR_NEED_APP_UPGRADE IAP 업그레이드가필요 IAP_ERROR_COMMON IAP 실행중오류 IAP_ERROR_ALREADY_PURCHASED Non-Consumable 상품 재 구매 또는 Subscription 상품을유효기간내에재구매하는경우 IAP_ERROR_WHILE_RUNNING Bundle 정보없이결제를요청한경우 IAP_ERROR_PRODUCT_DOES_NOT_EXIST 요청한상품목록이없는경우 IAP_ERROR_CONFIRM_INBOX 서버에결제요청을한이후에그결과를받지못했다면결제결과가성공은아니지만결제가성공했을가능성이있기때문에구매한상품목록확인이필요한경우. IAP_ERROR_ITEM_GROUP_DOES_NOT_EXIST 아이템그룹아이디가없을경우 IAP_ERROR_NETWORK_NOT_AVAILABLE 네트워크를사용할수없는상태 IAP_ERROR_IOEXCEPTION_ERROR IOException IAP_ERROR_SOCKET_TIMEOUT SocketTimeoutException IAP_ERROR_CONNECT_TIMEOUT ConnectTimeoutException IAP_ERROR_NOT_EXIST_LOCAL_PRICE 아이템이해당국가에서팔리지않는경우 IAP_ERROR_NOT_AVAILABLE_SHOP IAP가해당국가에서서비스되고있지않는경우 Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 39
40 4. IAP Server-to-Server API Reference 본장에서는 IAP 에서이용할수있는 server-to-server verification 에대해서설명하겠습니다. 이 API 를사용하면 3 rd Party 서버가특정구매가유효한지여부를판별할수있기때문에악의적인구매를차단할수있습니다. 4.1 appsitemverifyiapreceipt IAP 의 verifyurl( 구매유효성확인 URL) 은다음과같이고정된값을사용합니다. verifyurl : IAP 에서는구매요청결과의일부로다음과같이 purchaseid 를반환합니다. purchaseid : d215d9abcd17b12578a21c0ea7d b a3243b538d8bcae rd Party 클라이언트어플리케이션에서는자신의서버에 purchaseid 를전달하고, 서버에서는 verifyurl 과 purchaseid 값을이용해서다음과같은형식으로 URL 을만들어서요청하면됩니다 d9abcd17b12578a21c0ea7d b a3243b538d8bcae IAP 서버에서는다음과같이 JSON 포맷으로그결과를보내줍니다. 1) 유효한구매인경우 "itemid" : "57515", "paymentid":"zpmtid gbi ", "itemname":"test Pack", "itemdesc":"iap Test Item. Best value!", "purchasedate":" :22:36", "paymentamount":"9.000", "status":"true", "paymentmethod":"creditcard", "mode":"real", 2) 유효한구매가아닌경우 "status":"false" Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 40
41 3) 결과값설명 이름 Type 설명 itemid String 상품 ID itemname String 상품이름 itemdesc String 상품설명 paymentid String 결제아이디 purchasedate String 구매일시 paymentamount String 총결제금액 status String true / false paymentmethod String 상품을구매할때사용된결제방법에대한설명예 : CreditCard, MobileMicroPurchase, PrepaidCard, PSMS, CarrierBilling 등 mode String 상품을구매할때사용된개발모드예 : TEST, REAL Copyright Samsung Electronics Co., Ltd. All rights reserved. Page 41
어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More information[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme
8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean
More information9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요
9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1
More informationMobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V
Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More information안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -
11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - ArrayAdapter ArrayAdapter adapter = new ArrayAdapter(this, android.r.layout.simple_list_item_1,
More information2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an
1 Application Name: Day10_yhg 예제 10-9 activity_main.xml
More information[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView
7 차시이미지처리 1 학습목표 이미지뷰를사용하는방법을배운다. 비트맵을사용하는방법을배운다. 2 확인해볼까? 3 이미지뷰와이미지버튼 1) 학습하기 [ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 4
More information( )부록
A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.
More information리니어레이아웃 - 2 -
4 차시레이아웃 1 학습목표 레이아웃의개념을이해한다. 중복리니어레이아웃의개념이해한다. 2 확인해볼까? 3 레이아웃개념익히기 1) 학습하기 [ 그림 4-1] ViewGroup 클래스계층도 리니어레이아웃 - 2 - [ 예제 4-1]orientation 속성-horizontal 1
More information03장
CHAPTER3 ( ) Gallery 67 68 CHAPTER 3 Intent ACTION_PICK URI android provier MediaStore Images Media EXTERNAL_CONTENT_URI URI SD MediaStore Intent choosepictureintent = new Intent(Intent.ACTION_PICK, ë
More informationAPI STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum
API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More informationINAPP결제 API 가이드
앱내결제 API 가이드 History version Date Reason Contents Writer 0.9 2014-10-17 최초문서 INAPP 결제 API 가이드 draft 개요 INAPP 결제소개 앱스토어에등록된어플리케이션내에서일회성이나영구이용아이템또는기갂제한아이템을판매하여사용자가구매할수있도록하는기능을제공함을목적으로한다. 개발자는 에서제공하는개발자사이트와개발라이브러리를이용하여별도의시스템구축없이앱내유료아이템을판매할수있다.
More informationMicrosoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]
Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information신림프로그래머_클린코드.key
CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!
More informationMicrosoft PowerPoint - 04-UDP Programming.ppt
Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More informationFacebook API
Facebook API 2조 20071069 임덕규 20070452 류호건 20071299 최석주 20100167 김민영 목차 Facebook API 설명 Android App 생성 Facebook developers App 등록 Android App Facebook SDK 추가 예제 Error 사항정리 Facebook API Social Plugin Facebook
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More information학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.
헬로, 안드로이드 4 주차 사용자인터페이스디자인하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 차례 메뉴추가하기 Settings 추가하기 새게임시작하기
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More information슬라이드 1
모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예
More informationInterstage5 SOAP서비스 설정 가이드
Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service
More information학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.
헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationOpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프
OpenCV 와함께하는컴퓨터비전프로그래밍캠프 Appx. 안드로이드 OpenCV 프로그래밍 Last Update: 2018/06/07 Visual C++ 영상처리프로그래밍 저자 황선규 / 공학박사 sunkyoo.hwang@gmail.com 모바일컴퓨터비전프로그래밍 목차 Android 개요 Android 개발환경구축 Android Studio 설치 OpenCV
More information01장
CHAPTER1 Camera (MediaStore) EXIF 1 2 CHAPTER 1 SDK (intent) Camera Camera Camera Android Manifest xml Camera Camera
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More information이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt
1. 리스트뷰의구조 리스트뷰는어떤데이터그룹에대한각각의정보들을항목별로출력시키고사용자에게원하는항목을검색하거나선택할수있도록해주는컨트롤객체입니다. 그래서다른컨트롤처럼정해진형태의정보를저장하는것이아니기때문에리스트뷰가데이터를직접관리하기는힘들었을것입니다. 그래서효과적인데이터관리를위해 "ArrayAdapter" 라는클래스가추가되었고리스트뷰는이클래스를이용해서사용자가지정한데이터에접근하도록구현되어있습니다.
More information윈도우시스템프로그래밍
데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More informationAnalytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras
Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationMicrosoft PowerPoint UI-Event.Notification(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More information오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1
오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1 1. 버전정보 버전개정일자개정사유개정내역 1.0 2017.06.22 1. 초안작성 2. 개요 O'FIN( 오핀 ) 은금융투자회사, 유관기관, 핀테크기업의데이터와서비스를 Open API 로게시하고, 상호융합을통해혁신적비즈니스를만들수있도록하는핀테크오픈플랫폼입니다.
More information슬라이드 1
Android Mobile Application Development Part 2 Agenda Part 1 Build Develop Environment Create new Project Composition of Project Simulate Application Part 2 User Interface Activity Toast Preference Log
More information슬라이드 1
전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More information안드로이드2_14
.,,,,,. 11...,,,.,.,.,. Chapter 14. force feedback.., getsystemservice. String service_name = Context.SENSOR_SERVICE; SensorManager sensormanager = (SensorManager)getSystemService(service_name);. Sensor.,,,.
More informationiii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.
Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:
More informationDocsPin_Korean.pages
Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More information50_1953.pdf
C h a p t e r 02 194 Part Mobile Apps 01 01 02 Chapter 02 195 03 04 196 Part 02 01 02 03 04 Chapter 02 197 05 06 07 08 198 Part 03 01 02 Chapter 02 199 03 04 05 06 200 Part 07 08 09 10 Chapter 02 201 04
More information슬라이드 1
13 장. 커스텀뷰개발 API 에서제공하는뷰를그대로이용하면서약간변형시킨뷰 여러뷰를합쳐서한번에출력하기위한뷰 기존 API 에전혀존재하지않는뷰 public class MyView extends TextView { public class MyView extends ViewGroup { public class MyView extends View { 커스텀뷰를레이아웃
More information09-interface.key
9 Database insert(record r): boolean find(key k): Record 1 Record getkey(): Key * Record Key Database.? Key equals(key y): boolean Database insert(record r): boolean find(key k): Record * Database OK 1
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More informationDaum 카페
인쇄하기 인쇄 [22 장 ] 프래그먼트 (1/8) (20140815 완료 ) 책에담지못한장들 슈퍼성근 조회 326 2014/08/10 22:38:46 주의 : 소스내용중 "0nClick", "0nStart" 함수명첫글자가숫자 0 인것은오타가아닙니다. 다움게시판은 o n C l i c k 라는글을입력할수없기때문에어쩔수없이 영문소문자 o 를숫자 0 으로대체하였습니다.
More informationCluster management software
자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException
More informationSBR-100S User Manual
( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S
More informationDesign Issues
11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance
More informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More information슬라이드 1
핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More informationrmi_박준용_final.PDF
(RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More information예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A
제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor
More informationSecure Programming Lecture1 : Introduction
Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$
More information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More informationPowerPoint Presentation
객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More information슬라이드 1
헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행핛수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행핛수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행핛수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More information슬라이드 1
- 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.
More information02 C h a p t e r Java
02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER
More informationALTIBASE 사용자가이드 Templete
Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS ADO.NET 환경의 ALTIBASE 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change
More informationJMF3_심빈구.PDF
JMF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: Revision number: Issued by: JMF3_ doc Issue Date:
More informationMicrosoft Word - Armjtag_문서1.doc
ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor
More informationMicrosoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx
2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html
More informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More informationMasoJava4_Dongbin.PDF
JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: MasoJava4_Dongbindoc Revision number: Issued by: < > SI, dbin@handysoftcokr
More informationREMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25
REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 문서개정내역 변경일버전변경내용비고 2014.06.30 1.0.0 최초작성 2014.09.30 1.1.0 개인정보항목변경, 개인정보이용약관기능추가 2014.12.01 1.2.0 Proguard 추가 2014.12.16 1.2.0 Android Studio 기준샘플및가이드추가
More information1
1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2
More information헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부
헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 데이터바인딩을통해데이터소스에해당하는데이터베이스와뷰에해당하는액티비티를연결한데이터베이스응용프로그램을작성할수있다. 안드로이드내의다른어플리케이션의데이터에접근하기위해제공되는 ContentProvider 를사용할수있다. 자신의어플리케이션에서다른어플리케이션으로의데이터제공을위한 ContentProvider
More informationPowerPoint Presentation
자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More information슬라이드 1
Android App 개발기초 & Activity, Intent 세미나 2012. 03. 26 ING 팀여상권, 이용균, 최상욱, 권지해 목차 프로젝트생성과정설명 안드로이드동작, 구조설명 Activity 설명 Intent 설명 질문 1 프로젝트생성과정설명 1. Eclipse의메뉴바에서 File 선택 2. New선택후 Android Project 선택 3. Project
More informationAndroid Master Key Vulnerability
Android Master Key Vulnerability Android Bug 8219321 2013/08/06 http://johnzon3.tistory.com Johnzone 内容 1. 개요... 2 1.1. 취약점요약... 2 1.2. 취약점정보... 2 2. 분석... 2 2.1. 기본개념... 2 2.2. 공격방법... 4 3. 방어대책... 7
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More information07 자바의 다양한 클래스.key
[ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,
More information2_안드로이드UI
03 Layouts 레이아웃 (Layout) u ViewGroup의파생클래스로서, 포함된 View를정렬하는기능 u 종류 LinearLayout 컨테이너에포함된뷰들을수평또는수직으로일렬배치하는레이아웃 RelativeLayout 뷰를서로간의위치관계나컨테이너와의위치관계를지정하여배치하는레이아웃 TableLayout 표형식으로차일드를배치하는레이아웃 FrameLayout
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationNTD36HD Manual
Upnp 사용 D7 은 UPNP 를지원하여 D7 의네크워크에연결된 UPNP 기기에별다른설정없이연결하여, 유무선으로네트워크상의연결된 UPNP 기기의콘텐츠를재생할수있습니다. TV 화면의 브라우저, UPNP 를선택하면연결가능한 UPNP 기기가표시됩니다. 주의 - UPNP 기능사용시연결된 UPNP 기기의성능에따라서재생되지않는콘텐츠가있을수있습니다. NFS 사용 D7
More informationGoogle Maps Android API v2
Google Maps API 3 조 20080388 김현철 20080748 양태욱 20091493 김이현 Google Maps? 구글에서제공하는지도서비스 걷기, 차량두가지길찾기기능제공 최근, Open API 로현지대중교통과연동하여사용 Google Maps API? 개발자에게 Google Maps 를삽입할수있도록 Google 에서제공하는 Application
More informationDialog Box 실행파일을 Web에 포함시키는 방법
DialogBox Web 1 Dialog Box Web 1 MFC ActiveX ControlWizard workspace 2 insert, ID 3 class 4 CDialogCtrl Class 5 classwizard OnCreate Create 6 ActiveX OCX 7 html 1 MFC ActiveX ControlWizard workspace New
More information슬라이드 1
UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)
More informationPowerPoint 프레젠테이션
인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음
More information// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 c
6 차시이벤트처리 1 학습목표 터치이벤트처리를배운다. XML 의 onclick 속성을사용하여이벤트를처리한다. 2 확인해볼까? 3 이벤트처리하기 1) 학습하기 터치이벤트 public boolean ontouchevent(motionevent event) { swtich(event.getaction()) { case MotionEvent.ACTION_DOWN:
More informationNetwork Programming
Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI
More information12-file.key
11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,
More information목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4
ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]
More informationSMART ZONE CAST ANDROID SDK 적용가이드 NIT
SMART ZONE CAST ANDROID SDK 적용가이드 NIT I. 준비 1. Smart Zone Cast Agent( 이하 CBSAgent) 를통해메시지를수신하기위해서는다음과같은 Android 개발환경이필요합니다. OS: Android 4.4(KitKat) 이상 Target SDK Level: 26 이상 Compile SDK Level: 26이상 Java
More informationJAVA PROGRAMMING 실습 09. 예외처리
2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오
More information