# Unity中使用 ALC SDK V2

### 概要 <a href="#unity-zhong-shi-yong-alcsdkv2-gai-yao" id="unity-zhong-shi-yong-alcsdkv2-gai-yao"></a>

ONE store APP授權驗證元件是支援在Unity環境中擴展assets以便輕鬆收費之應用程式購買驗證的元件。\
下方說明在項目中設定與使用元件之方法，以及實現ONE store應用程式授權驗證Library功能的方法。

<br>

### ONE store 應用程式授權驗證元件設定 <a href="#unity-zhong-shi-yong-alcsdkv2onestore-ying-yong-ruan-jian-xu-ke-zheng-yan-zheng-cha-jian-she-zhi" id="unity-zhong-shi-yong-alcsdkv2onestore-ying-yong-ruan-jian-xu-ke-zheng-yan-zheng-cha-jian-she-zhi"></a>

#### 下載並獲取元件 <a href="#unity-zhong-shi-yong-alcsdkv2-xia-zai-bing-huo-qu-cha-jian" id="unity-zhong-shi-yong-alcsdkv2-xia-zai-bing-huo-qu-cha-jian"></a>

1. [ONE store SDK 示範GitHub的Release 頁面(連結)](https://github.com/ONE-store/app_license_checker)中，下載適用Unity的最新版本的 ONE store ALC支付元件。
2. Unity選單中，點選 **Assets > Import Package > Custom Package**  <br>

   <figure><img src="https://750271784-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs8LWlkAbJnzCUmymYwc%2Fuploads%2Fu5Cgshc22Q3AorVqK9V4%2F1.png?alt=media&#x26;token=821fb637-4b85-44a6-b5c5-789ba8fbb4f3" alt=""><figcaption></figcaption></figure>
3. 找到ONE store SDK 元件的檔案位置，選擇.unitypackage 檔案
4. **Import Package** 對話框中，選擇所有 assets 後點選 **Import**.

導入包體時新增資料夾。該資料查包含應用程式授權驗證Library。

* Assets > **OneStoreCorpPlugins 資料夾**

#### Build設定 <a href="#unity-zhong-shi-yong-alcsdkv2build-she-zhi" id="unity-zhong-shi-yong-alcsdkv2build-she-zhi"></a>

以下兩種情況，請參考ONE store 公告進行設定&#x20;

* [Target SDK 版本設定為30(OS 11) 以上](https://dev.onestore.co.kr/devpoc/support/news/noticeView.omp?pageNo=4\&noticeId=32968\&viewPageNo=\&searchValue=)
* [Target SDK 版本設定為31(OS 12) 以上](https://dev.onestore.co.kr/devpoc/support/news/noticeView.omp?pageNo=1\&noticeId=33072\&viewPageNo=\&searchValue=)

使用Unity Player 設定，新增**下列選項**

* **Custom Main Manifest**
* **Custom Main Gradle Template**
* **Custom Launcher Gradle Template**<br>

  <figure><img src="https://750271784-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs8LWlkAbJnzCUmymYwc%2Fuploads%2FAfwpi5O0JoSFhcxBFZgS%2F2.png?alt=media&#x26;token=a9797502-1970-4618-848e-aa8e3183fae1" alt=""><figcaption></figcaption></figure>

<br>

**Assets > Plugins > Android** 資料夾中建立檔案。<br>

<figure><img src="https://750271784-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs8LWlkAbJnzCUmymYwc%2Fuploads%2FvPSR4Z7Gf1Komf1j1Ukp%2F3.png?alt=media&#x26;token=e8c60cf6-b4b3-4158-8fcf-77656fa3f3e7" alt=""><figcaption></figcaption></figure>

### 遊戲中套用ONE store ALC(Application License Checker) Library <a href="#unity-zhong-shi-yong-alcsdkv2-you-xi-zhong-ying-yong-onestorealcapplicationlicensecheckerlibrary" id="unity-zhong-shi-yong-alcsdkv2-you-xi-zhong-ying-yong-onestorealcapplicationlicensecheckerlibrary"></a>

#### 複製ONE store授權金鑰  <a href="#unity-zhong-shi-yong-alcsdkv2-fu-zhi-onestore-xu-ke-zheng-mi-yao" id="unity-zhong-shi-yong-alcsdkv2-fu-zhi-onestore-xu-ke-zheng-mi-yao"></a>

在ONE store APP商品狀態中進入授權管理選單。使用 ALC 需要**授權金鑰**。\
透過複製ONE store 開發者中心提供的應用程式的授權金鑰來創建 ALC 對象。<br>

<figure><img src="https://750271784-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs8LWlkAbJnzCUmymYwc%2Fuploads%2FzkVOsO4c7xBQ0FS3tERv%2F4.png?alt=media&#x26;token=74ab24e3-3f52-4f4e-8a39-11a257dcd942" alt=""><figcaption></figcaption></figure>

<br>

呼叫Initialize()函數進行基本設定，透過ILicenseCheckCallback 埠接收驗證結果Event。。\
以下操作是連接到ONE store 服務和請求應用程式授權驗證之先決條件。

<br>

### 請求授權驗證 <a href="#unity-zhong-shi-yong-alcsdkv2-xu-ke-zheng-yan-zheng-qing-qiu" id="unity-zhong-shi-yong-alcsdkv2-xu-ke-zheng-yan-zheng-qing-qiu"></a>

呼叫授權驗證時，透過與 ONE store 伺服器的通訊傳送授權。使用者因網路發生故障或飛航模式等元印無法正常造訪ONE store伺服器時，一般採用緩存快取策略，以確保換存快取License有效期限內的正常運作。 如果不想使用緩存快取策略，則可透過 **strictQueryLicense API** 不使用緩存快取的授權。

#### 呼叫QueryLicense API (Cached API)  <a href="#unity-zhong-shi-yong-alcsdkv2-tiao-yong-querylicenseapicachedapi" id="unity-zhong-shi-yong-alcsdkv2-tiao-yong-querylicenseapicachedapi"></a>

偕同緩存快取策略操作。 一般情况下，透過ONE store伺服器接收使用者購買紀錄的License，但因網路發生故障或飛航模式等原因導致無法造訪ONE store伺服器時，使用緩存快取的License以確保有效期限內的正常運作。

```csharp

using OneStore.Alc;

class YourCallback: ILicenseCheckCallback
{
// ILicenseCheckCallback implementations.
public void OnGranted(string license, string signature) { }
public void OnDenied() {}
public void OnError(int code, string message)
}

_appLicenseCheckerImpl.QueryLicense();

```

#### 呼叫StrictQueryLicense API (Non-Cached API)  <a href="#unity-zhong-shi-yong-alcsdkv2-tiao-yong-strictquerylicenseapinoncachedapi" id="unity-zhong-shi-yong-alcsdkv2-tiao-yong-strictquerylicenseapinoncachedapi"></a>

不使用緩存快取的授權。 如果在網路發生故障或飛航模式下使用該 API， 因無法造訪 ONE store伺服器，使用者無法使用應用程式 。

```csharp

using OneStore.Alc;

class YourCallback: ILicenseCheckCallback
{
// ILicenseCheckCallback implementations.
public void OnGranted(string license, string signature) { }
public void OnDenied() {}
public void OnError(int code, string message)
}

_appLicenseCheckerImpl.StrictQueryLicense();

```

### 中斷連接 <a href="#unity-zhong-shi-yong-alcsdkv2-duan-kai-lian-jie" id="unity-zhong-shi-yong-alcsdkv2-duan-kai-lian-jie"></a>

呼叫AppLicenseChecker的destroy函數，中斷ONE store服務連接

```csharp

using OneStore.Alc;

_appLicenseCheckerImpl.Destroy();
```

<br>
