2017년 11월 10일 금요일

iOS, Samsung IAP, Unity Overview

iOS IAP


https://developer.apple.com/in-app-purchase/

IAP 대상
 : Content, Subscriptions, New features, Services.

IAP 아이템 종류
Consumable
 : app에서 사용되는 아이템들이 해당되고 구입해서 한번 소비하면 삭제되어 재구매 가능.

Non-Consumable
 : app에서 소비되지 않거나 premium feature 같은 것이 해당되고 구입하면 만료없이 사용 가능.

Auto-Renewable Subscriptions
 : 서비스나 업데이트된 콘텐츠를 주기적으로 구입하는 상황이 해당 됨. (cloud storage 매달 사용, 주간 magazine 배달 받음)
  사용자가 주기적인 구입을 취소하지 않는 한 지정된 기한마다 자동 결재 됨.

Non-Renewing Subscriptions
 : 사용자가 서비스나 콘텐츠를 지정된 기간동안만 사용 가능하고 자동으로 subscription이 갱신되지 않는다.

[Preparing]
- Paid Application Agreement 작성 & banking, tax 정보 입력
- Xcode를 사용하여 app에서 IAP service를 사용하도록 함.
- iTunes Connect에서 상품명, 가격, 설명 등을 작성하여 관리한다.

[Designing and Building]
- IAP store design
- IAP 구현

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html#//apple_ref/doc/uid/TP40008267









[Testing]
- Apple sandbox에서 IAP를 영향 없이 테스트 할 수 있음.
- TestFlight를 사용하여 테스터들을 대상으로 IAP을 테스트하고 feedback을 받을 수 있음.


*실제 구현 관련 포스팅
http://korea-developer.tistory.com/entry/iOS-IAPInApp-Purchase

-----------------------------------------------------------------------------------------------

Samsung IAP


Mobile


http://developer.samsung.com/iap
http://developer.samsung.com/html/techdoc/HowToStart_SamsungInAppPurchaseSDK_v3.0.0_KR.pdf



- Samsung In-App Purchase SDK 3.0.1 이상에서는 Android 6.0(Mashmallow) 이상에서 사용 가능
- 그외 버전에서는 Android 4.0 이상에서 사용 가능한것으로 보임
- Payment 방식 :  90개국에서 Credit Card, Phone bill, PayPal 가능
- 삼성 (Galaxy) Device만 지원
- Samsung Gear에서도 Tizen SDK + Extension SDK를 사용해서 IAP 사용가능
- IAP v2.0 : Consumable item, Non-Consumable items, Non-Recurring subscription items.
  IAP v3.0 : Auto-Recurring subscriptions item.
  IAP v5.0 : Item, Subscription으로 정리, Non-Recurring subscription 제거됨.

[API]

Android API : http://developer.samsung.com/iap/guide
Server Side API? : http://developer.samsung.com/iap/developer-api


Gear

http://developer.samsung.com/gear/distribute/iap


- Mobile(Galaxy)와 연동되어 동작하는 것으로 보임.
- Gear에서 사용할 수 있는 API는 상품 목록, 구매, 구입 목록 확인만 있음.

[Gear API]
 . Web : http://img-developer.samsung.com/onlinedocs/gear/web_device/webapis/iap.html
 . Native(C) : http://img-developer.samsung.com/onlinedocs/gear/native/group__CAPI__IAP__GALAXYAPPS__FRAMEWORK.html

[Programming Guide]
 . Web : http://img-developer.samsung.com/onlinedocs/gear/Extension_PG_Web/html/prog_guide/inapp_ww.htm
 . Native(C) : http://img-developer.samsung.com/onlinedocs/gear/Extension_PG_Native/html/prog_guide/inapp_wn.htm


TV


http://developer.samsung.com/tv/tizen-net-tv-preview/guides/samsung-checkout



- Samsung Checkout 을 통해 Samsung TV 상에서 구매 가능.
- 3-step checkout ???
 : 사용자가 구매 수단 등록 (mobile, web)
 : 구매 아이템 정보 확인
 : Remote control로 숫자를 입력하여 구매 진행

- 환경
. TV: Samsung Smart TV, 2015 or later model (excluding Evolution Kit)
. Payment method: Credit or debit card, PayPal, or carrier billing (in Korea)
. Security: Tizen SecureIME, 2nd-screen card registration (mobile or PC)
. Account: Samsung Account (for sharing account and payment information with Galaxy phones)

- 사전 절차
: TV Sellor Office에 app 등록, DPI portal에 Billing 정보 등록 및 코딩
 (DPI(Digital Product Inventory) security key와 service를 사용하여 Purchase 가능

- 주요 기능
: 아이템 목록 확인, 아이템 구매, 구매 목록 확인, 구매 확인, 구매 복구, 구독 취소

[Billing 사용을 위한 Precondition]
- NuGet packages
 : Tizen.TV
 : Tizen.TV.Service.Billing
 : Tizen.TV.Service.Sso

- Privileges
<tizen:privilege name="http://developer.samsung.com/privilege/sso.partner"/>
<tizen:privilege name="http://developer.samsung.com/privilege/productinfo"/>
<tizen:privilege name="http://tizen.org/privilege/appmanager.launch"/>
<tizen:privilege name="http://developer.samsung.com/privilege/billing"/>

- 기타 환경 설정
a. Retrieve the User ID:
using Tizen.TV.Service.Sso;
string loginUid = Sso.GetLoginUid(); //get UID value from TV
b. Retrieve the country code:
using Tizen.TV;
string country = Environment.SmartHubConfig.Country;
c. Retrieve the server type:
using Tizen.TV;
int serverType = Environment.SmartHubConfig.ServerType;
d. Set the service environment:
// Use dummy payment for development
BillingRequestServerType servertype = BillingRequestServerType.Dummy;

// When submitting to Samsung Apps TV, use Sandbox or Live environment depending on the TV environment.
if(serverType == 0) {  // Operating zone
  BillingRequestServerType servertype = BillingRequestServerType.Prd;
} else { // Staging zone
  BillingRequestServerType servertype = BillingRequestServerType.Dev;
}
string securityKey = "**********"; // YOUR SECURITY KEY ISSUED BY DPI PORTA

Sample : https://github.com/SamsungDForum/Xamarin.Billing


-----------------------------------------------------------------------------------------------

Unity IAP 


https://docs.unity3d.com/Manual/UnityIAPSettingUp.html



- 지원 Store (뭐 그냥 다 된다고 보면 된다.)
: Apple App Store, Mac App Store, Google Play Store, Windows Store, Amazon Appstore, Galaxy Store, Tizen Store, CloudMoolah MOO Store

- Product Types
: Consumable, Non Consumable, Subscription (별도로 구분하고 있지는 않는 듯)

- 주요 기능
: IAP 아이템 목록 추가/확인, 아이템 구입,
  구매 목록 복구, 구매 확인, 구매 검증, Store 확장 기능

- Store Extensions
https://docs.unity3d.com/Manual/UnityIAPStoreExtensions.html
: Cross Platform purchase flow에서 처리할 수 없는
 Store의 unique한 process를 처리하도록 만든 Interface.

/// <summary> /// Called when Unity IAP is ready to make purchases. /// </summary> public void OnInitialized (IStoreController controller, IExtensionProvider extensions) { extensions.GetExtension<IAppleExtensions> ().RefreshAppReceipt (result => { if (result) { // Refresh finished successfully. } else { // Refresh failed. } }); }