using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Purchasing;

public class IAPManager : MonoBehaviour, IStoreListener {
    public const string productIDConsumable = "consumable";  
    public const string productIDNonConsumable = "nonconsumable";
    public const string productIDSubscription = "subscription";

    //Android 상품 ID
    private const string Android_dia_pack1_Id = "com.ExtremeEyes.A.A;";
    private const string _Android_NonconsumableId = "com.studio.app.nonconsumable.android";
    private const string _Android_SubscriptionId = "com.studio.app.subscription.android";

    //iOS 상품 ID
    private const string _IOS_ConsumableId = "com.studio.app.consumable.ios";
    private const string _IOS_NonconsumableId = "com.studio.app.nonconsumable.ios";
    private const string _IOS_SubscriptionId = "com.studio.app.subscription.ios";

    private IStoreController storeController;
    private IExtensionProvider storeExtensionProvider;

    private void InitUnityIAP() {
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

        builder.AddProduct(productIDConsumable, ProductType.Consumable, new IDs(A){
                {Android_dia_pack1_Id, com.ExtremeEyes.A },
                            // {_IOS_ConsumableId, AppleAppStore.Name}
        }
    );

    //     builder.AddProduct(productIDNonConsumable, ProductType.NonConsumable, new IDs(){
    //             {_Android_NonconsumableId, com.ExtremeEyes.Flappyrun },
    //                         {_IOS_NonconsumableId, AppleAppStore.Name}
    //     }
    // );

    //     builder.AddProduct(productIDSubscription, ProductType.Subscription, new IDs(){
    //             {_Android_SubscriptionId, GooglePlay.Name },
    //                         {_IOS_SubscriptionId, AppleAppStore.Name}
    //     }
    // );

        UnityPurchasing.Initialize(this, builder);
    }

    public void OnInitialized(IStoreController controller, IExtensionProvider extension) {
        Debug.Log("유니티 IAP 초기화 성공");
        storeController = controller;
        storeExtensionProvider = extension;
    }
    public void OnInitializeFailed(InitializationFailureReason error) {
        Debug.LogError($"유니티 IAP 초기화 실패 {error}");
    }
    public void OnPurchaseFailed(Product product, PurchaseFailureReason reason) {
        Debug.LogWarning($"구매 실패 - {product.definition.id}, {reason}");
    }
    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) {
        Debug.Log($"구매 성공 - ID : {args.purchasedProduct.definition.id}");

        if (args.purchasedProduct.definition.id == ProductGold) {
            Debug.Log("소모품 구매 완료");
        } else if (args.purchasedProduct.definition.id == ProductCharacterSkin) {
            Debug.Log("비 소모품 구매 완료");
        } else if (args.purchasedProduct.definition.id == ProductSubscription) {
            Debug.Log("구독 서비스 구매 완료");
        }

        return PurchaseProcessingResult.Complete;
    }

    public void Purchase(string productId) {
            if (!IsInitialized) {
                return;
            }

            var product = storeController.products.WithID(productId);
            if (product != null && product.availableToPurchase) {
                Debug.Log($"구매 시도 - {product.definition.id}");
                storeController.InitiatePurchase(product);
            } else {
                Debug.Log($"구매 시도 불가 - {productId}");
            }
        }
    private void Awake() {
        DontDestroyOnLoad(gameObject);
        InitUnityIAP();
    }
}


Assets\IAPManager.cs(5,42): error CS0535: 'IAPManager' does not implement interface member 'IStoreListener.OnInitializeFailed(InitializationFailureReason, string)'


강의 글에서 하라는 대로 코드 짰는데

저게 왜 자꾸 나오는 거죠?


chat gpt로 계속 수정 해봐도 마찬가지에요