Example #1
0
        /// <summary>
        /// Initializes the Store Kit with the set of previously defined product
        /// Products can be defined under the editor plugin settings: Stan's Assets->IOS Native->Edit Settings
        /// Or you can add product's via code using <see cref="RegisterProduct"/>
        /// </summary>
        /// <param name="products">List of the products to initialize the service with.</param>
        /// <param name="callback">Callback with the initialization result.</param>
        public static void Init(List <ISN_SKProduct> products, Action <ISN_SKInitResult> callback)
        {
            if (m_successInitResultCache != null)
            {
                callback.Invoke(m_successInitResultCache);
                return;
            }

            m_onStoreKitInitComplete += callback;
            if (m_isInitializationInProgress)
            {
                return;
            }

            m_isInitializationInProgress = true;

            var request = new ISN_SKLib.SA_PluginSettingsWindowStylesitRequest();

            foreach (var product in products)
            {
                request.ProductIdentifiers.Add(product.ProductIdentifier);
            }

            ISN_SKLib.API.LoadStore(request, result =>
            {
                m_isInitializationInProgress = false;
                if (result.IsSucceeded)
                {
                    CacheAppStoreProducts(result);
                    m_successInitResultCache = result;
                }
                m_onStoreKitInitComplete.Invoke(result);
                m_onStoreKitInitComplete = delegate {};
            });
        }
        private static void CacheAppStoreProducts(ISN_SKInitResult result)
        {
            m_products.Clear();
            foreach (ISN_SKProduct product in result.Products)
            {
                ISN_SKProduct settingsProduct = GetProductFromSettings(product.ProductIdentifier);
                if (settingsProduct != null)
                {
                    product.EditorData = settingsProduct.EditorData;
                }

                m_products.Add(product.ProductIdentifier, product);
            }
        }