# 프로그래밍 방식으로 카탈로그 제작

> CatalogProvider 클래스를 사용하여 유연성 또는 런타임 기반 설정을 위한 코드로 카탈로그를 정의합니다.

`CatalogProvider` 클래스를 사용하여 코드로 직접 카탈로그를 정의할 수 있습니다. 이 접근 방식은 카탈로그 구성을 프로그래밍 방식으로 완벽하게 제어할 수 있으며, 매우 큰 카탈로그를 사용하는 게임과 같은 복잡한 시나리오에서 유용합니다. 카탈로그는 지속적으로 수량이 많은 새로운 아이템을 추가합니다.

카탈로그가 정적이고 시각적 설정을 선호하는 경우 대신 Unity 에디터 IAP Catalog 창을 사용하여 리스트를 구성할 수 있습니다. 이 접근 방식에 대한 지침은 에디터에서 [카탈로그 만들기](./create-catalog-in-editor.md)를 참조하십시오.

> **Note:**
>
> D2C(Direct-to-Consumer) 결제 제공업체의 경우 [원격 카탈로그를 생성](./payment-providers/configure-remote-catalog.md)해야 합니다.

프로그래밍 방식으로 카탈로그 리스트를 정의하는 방법은 다음과 같습니다.

1. 초기화 단계에서 `CatalogProvider` 클래스의 인스턴스를 만듭니다.
2. `AddProduct()` 메서드를 사용하여 각 리스트를 추가하거나, `AddProducts()`를 사용하여 한 번에 여러 리스트를 추가합니다.
3. 각 리스팅에 대해 고유한 크로스 스토어 `Product ID` 및 `Product Type`를 지정합니다.

다음 예제는 ID `100_gold_coins`를 사용하여 소모품 리스트를 `CatalogProvider`에 추가하고 나중에 `FetchProducts()`를 호출하여 정의된 리스트를 검색하는 방법을 보여 줍니다.

```cs
using UnityEngine;
using UnityEngine.Purchasing;

public class MyIAPManager {
    public MyIAPManager () {
        var catalog = new CatalogProvider();
        catalog.AddProduct("100_gold_coins", ProductType.Consumable);
        // Connect to the store
        catalog.FetchProducts(UnityIAPServices.DefaultProduct().FetchProductsWithNoRetries);
    }
}
```

> **Note:**
>
> `CatalogProvider` 클래스를 사용하여 스토어별 ID 및 기타 고급 설정을 코드에서 직접 구성합니다.

## 추가 리소스##additional-resources

* [대시보드에서 카탈로그 관리](./dashboard-catalog/_index.md)
