Example #1
0
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
#if !DIST
            foreach (SKProduct product in response.Products)
            {
                Console.WriteLine("Localised price:" + product.LocalizedPrice());
                Console.WriteLine("Product title: " + product.LocalizedTitle);
                Console.WriteLine("Product description: " + product.LocalizedDescription);
                Console.WriteLine("Product price: " + product.LocalizedPrice());
                Console.WriteLine("Product id: " + product.ProductIdentifier);
            }

            foreach (string invalidProductId in response.InvalidProducts)
            {
                Console.WriteLine("Invalid product id: " + invalidProductId);
            }
#endif

            if (responseDelegate != null)
            {
                responseDelegate(response.Products);
                responseDelegate = null;
            }

            productsRequest.Dispose();
            productsRequest = null;
        }
Example #2
0
        // Received response to RequestProductData - with price, title, description info
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            SKProduct[] products = response.Products;

            NSDictionary userInfo = null;

            if (products.Length > 0)
            {
                NSObject[] productIdsArray = new NSObject[response.Products.Length];
                NSObject[] productsArray   = new NSObject[response.Products.Length];
                for (int i = 0; i < response.Products.Length; i++)
                {
                    productIdsArray[i] = new NSString(response.Products[i].ProductIdentifier);
                    productsArray[i]   = response.Products[i];
                }
                userInfo = NSDictionary.FromObjectsAndKeys(productsArray, productIdsArray);
            }
            NSNotificationCenter.DefaultCenter.PostNotificationName(
                InAppQueryInventoryNotification,
                this,
                userInfo);

            foreach (string invalidProductId in response.InvalidProducts)
            {
                Debug.WriteLine("Invalid product id: " + invalidProductId);
            }
        }
Example #3
0
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            try
            {
                Logger.Log("ReceivedResponse...");
                SKProduct[] products = response.Products;

                NSDictionary userInfo = null;
                if (products.Length > 0)
                {
                    NSObject[] productIdsArray = new NSObject[response.Products.Length];
                    NSObject[] productsArray   = new NSObject[response.Products.Length];
                    for (int i = 0; i < response.Products.Length; i++)
                    {
                        productIdsArray[i] = new NSString(response.Products[i].ProductIdentifier);
                        productsArray[i]   = response.Products[i];
                        Logger.Log("ReceivedResponse: Product ID: " + response.Products[i].ProductIdentifier);
                    }

                    userInfo = NSDictionary.FromObjectsAndKeys(productsArray, productIdsArray);
                }

                NSNotificationCenter.DefaultCenter.PostNotificationName(InAppPurchaseManagerProductsFetchedNotification, this, userInfo);
            }
            catch (Exception ex)
            {
                Logger.Log("ERROR: ReceivedResponse: " + ex);
            }
        }
 //        /// <summary>
 //        /// The products.
 //        /// </summary>
 //        [Obsolete("Use the products property.")]
 //        public readonly SKProduct[] Products;
 /// <summary>
 /// Initializes a new instance of the <see cref="U3DXT.iOS.IAP.InitializationEventArgs"/> class.
 /// </summary>
 /// <param name="response">Response.</param>
 public InitializationEventArgs(SKProductsResponse response)
 {
     invalidIDs = response.invalidProductIdentifiers.Cast<string>().ToArray();
     products = response.products.Cast<SKProduct>().ToArray();
     //			InvalidIDs = invalidIDs;
     //			Products = products;
 }
Example #5
0
        //        /// <summary>
        //        /// The products.
        //        /// </summary>
        //        [Obsolete("Use the products property.")]
        //        public readonly SKProduct[] Products;
        /// <summary>
        /// Initializes a new instance of the <see cref="U3DXT.iOS.IAP.InitializationEventArgs"/> class.
        /// </summary>
        /// <param name="response">Response.</param>
        public InitializationEventArgs(SKProductsResponse response)
        {
            if (response.invalidProductIdentifiers == null)
                invalidIDs = new string[0];
            else
                invalidIDs = response.invalidProductIdentifiers.Cast<string>().ToArray();
            products = response.products.Cast<SKProduct>().ToArray();

            error = null;
        }
Example #6
0
            public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
            {
                SKProduct[] products = response.Products;

                foreach (string invalidProductId in response.InvalidProducts)
                {
                    Console.WriteLine("Invalid product id: {0}", invalidProductId);
                }

                _completionSource.SetResult(products);
            }
		// received response to RequestProductData - with price,title,description info
		public override void ReceivedResponse (SKProductsRequest request, SKProductsResponse response)
		{
			SKProduct[] products = response.Products;

			NSMutableDictionary userInfo = new NSMutableDictionary ();
			for (int i = 0; i < products.Length; i++)
				userInfo.Add ((NSString)products [i].ProductIdentifier, products [i]);
			NSNotificationCenter.DefaultCenter.PostNotificationName (InAppPurchaseManagerProductsFetchedNotification, this, userInfo);

			foreach (string invalidProductId in response.InvalidProducts)
				Console.WriteLine ("Invalid product id: {0}", invalidProductId);
		}
        public void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            var product = response.Products;

            if (product != null)
            {
                tcsResponse.TrySetResult(product);
                return;
            }

            tcsResponse.TrySetException(new Exception("Invalid Product"));
        }
        public void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            var product = response.Products;

            if (product != null)
            {
                tcsResponse.TrySetResult(product);
                return;
            }

            tcsResponse.TrySetException(new InAppBillingPurchaseException(PurchaseError.InvalidProduct, "Invalid Product"));
        }
Example #10
0
//		/// <summary>
//		/// The products.
//		/// </summary>
//		[Obsolete("Use the products property.")]
//		public readonly SKProduct[] Products;

        /// <summary>
        /// Initializes a new instance of the <see cref="U3DXT.iOS.IAP.InitializationEventArgs"/> class.
        /// </summary>
        /// <param name="response">Response.</param>
        public InitializationEventArgs(SKProductsResponse response)
        {
            if (response.invalidProductIdentifiers == null)
            {
                invalidIDs = new string[0];
            }
            else
            {
                invalidIDs = response.invalidProductIdentifiers.Cast <string>().ToArray();
            }
            products = response.products.Cast <SKProduct>().ToArray();

            error = null;
        }
Example #11
0
        public virtual void ProductsRequestDidReceiveResponse(SKProductsRequest request, SKProductsResponse response)
        {
            NSArray products = response.Products;
            NSArray invalidProducts = response.InvalidProductIdentifiers;

            foreach(SKProduct product in products.GetEnumerator<SKProduct>()) {
                Console.WriteLine(product.ProductIdentifier);
                Console.WriteLine(product.LocalizedTitle);
                Console.WriteLine(product.LocalizedDescription);
                Console.WriteLine(product.Price);
            }

            request.Autorelease();
        }
Example #12
0
        public void productsRequest_didReceiveResponse_(NSObject request, SKProductsResponse response)
        {
            AKiOS.Functions.NSLog("productsRequest:didReceiveResponse: ");

            foreach (var product in response.Products)
            {
                LOG("product:" + product.ProductIdentifier);
                var payment = SKPayment.PaymentWithProduct(product);
                SKPaymentQueue.DefaultQueue.AddPayment(payment);
            }

            foreach (var invalidProductId in response.InvalidProductIdentifiers)
            {
                LOG("invalid product id: " + invalidProductId);
            }
        }
Example #13
0
        // received response to RequestProductData - with price,title,description info
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            SKProduct[] products = response.Products;

            NSMutableDictionary userInfo = new NSMutableDictionary();

            for (int i = 0; i < products.Length; i++)
            {
                userInfo.Add((NSString)products [i].ProductIdentifier, products [i]);
            }
            NSNotificationCenter.DefaultCenter.PostNotificationName(InAppPurchaseManagerProductsFetchedNotification, this, userInfo);

            foreach (string invalidProductId in response.InvalidProducts)
            {
                Console.WriteLine("Invalid product id: {0}", invalidProductId);
            }
        }
        // received response to RequestProductData - with price,title,description info
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            SKProduct[] products = response.Products;

            if (products != null && products.Length > 0)
            {
                if (OnReceivedProductInformation != null)
                {
                    OnReceivedProductInformation(this, products);
                }
            }

            foreach (string invalidProductId in response.InvalidProducts)
            {
                Console.WriteLine("Invalid product id: {0}", invalidProductId);
            }
        }
        public void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            var invalidProduct = response.InvalidProducts;

            if (invalidProduct?.Any() ?? false)
            {
                tcsResponse.TrySetException(new InAppBillingPurchaseException(PurchaseError.InvalidProduct, $"Invalid Product: {invalidProduct.First()}"));
                return;
            }

            var product = response.Products;

            if (product != null)
            {
                tcsResponse.TrySetResult(product);
                return;
            }
        }
        public void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            SKProduct[] skProducts = response.Products;

            if (skProducts != null)
            {
                _productsReceived.TrySetResult(skProducts);

                //Debug.WriteLine($"{skProducts[0].ProductIdentifier}, {skProducts[0].LocalizedDescription}" +
                //    $", {skProducts[0].PriceLocale.CurrencySymbol}{skProducts[0].Price}");

                return;
            }

            // No products came back. Must be invalid Product Id
            _productsReceived.TrySetException(
                new InAppPurchaseException(PurchaseError.InvalidProduct, "Invalid Product"));
        }
		// received response to RequestProductData - with price,title,description info
		public override void ReceivedResponse (SKProductsRequest request, SKProductsResponse response)
		{
			SKProduct[] products = response.Products;

			NSDictionary userInfo = null;
			if (products.Length > 0) {
				NSObject[] productIdsArray = new NSObject[response.Products.Length];
				NSObject[] productsArray = new NSObject[response.Products.Length];
				for (int i = 0; i < response.Products.Length; i++) {
					productIdsArray[i] = new NSString(response.Products[i].ProductIdentifier);
					productsArray[i] = response.Products[i];
				}
				userInfo = NSDictionary.FromObjectsAndKeys (productsArray, productIdsArray);
			}
			NSNotificationCenter.DefaultCenter.PostNotificationName(InAppPurchaseManagerProductsFetchedNotification,this,userInfo);

			foreach (string invalidProductId in response.InvalidProducts) {
				Console.WriteLine("Invalid product id: " + invalidProductId );
			}
		}
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            if (response.Products == null || response.Products.Length == 0)
            {
                Source.TrySetException(new Exception("No products were found!"));
                return;
            }

            var list = new List <Purchase>();

            foreach (var product in response.Products)
            {
                list.Add(new Purchase
                {
                    Id           = product.ProductIdentifier,
                    Price        = _formatter.StringFromNumber(product.Price),
                    NativeObject = product,
                });
            }
            Source.TrySetResult(list.ToArray());
        }
            public async Task <SKProductsResponse> GetProductData(params string[] appStoreProductIDs)
            {
                _response = null;
                _error    = null;
                _waiter.Reset();


                if (appStoreProductIDs.Length == 0)
                {
                    throw new ArgumentException("No app store product IDs passed", "appStoreProductIDs");
                }
                var array = new NSString[appStoreProductIDs.Length];

                for (var i = 0; i < appStoreProductIDs.Length; i++)
                {
                    array[i] = new NSString(appStoreProductIDs[i]);
                }
                var productIdentifiers = NSSet.MakeNSObjectSet <NSString>(array);

                //set up product request for in-app purchase
                var productsRequest = new SKProductsRequest(productIdentifiers);

                productsRequest.Delegate = this;
                productsRequest.Start();
                await Task.Run(() => _waiter.Wait());


                if (_response != null)
                {
                    return(_response);
                }

                if (_error != null)
                {
                    throw new Exception(_error.LocalizedDescription);
                }

                throw new Exception("Unable to get product data due to unexpected cancellation of request");
            }
            public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
            {
                if (SingleManager.productsRequest == request)
                {
                    SingleManager.productsRequest = null;
                }

                var changed = false;

                foreach (var product in response.Products)
                {
                    ProductDetails details;
                    if (SingleManager.products.TryGetValue(product.ProductIdentifier, out details))
                    {
                        details.SetDetails(product);
                        changed = true;
                    }
                }

                foreach (var product in response.InvalidProducts)
                {
                    ProductDetails details;
                    if (SingleManager.products.TryGetValue(product, out details))
                    {
                        details.SetInvalid();
                        changed = true;
                    }
                }

                // Check that all products have details - if not reload
                SingleManager.RequestProductDetails();

                if (changed)
                {
                    SingleManager.RaiseDetailsChanged();
                }
            }
Example #21
0
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            SKProduct[] products = response.Products;
            proUpgradeProduct = products.Length == 1 ? products[0] : null;
            if (proUpgradeProduct != null)
            {
                proUpgradeProduct.LocalizedPrice();
                Console.WriteLine("Product title: " + proUpgradeProduct.LocalizedTitle);
                Console.WriteLine("Product description: " + proUpgradeProduct.LocalizedDescription);
                Console.WriteLine("Product price: " + proUpgradeProduct.LocalizedPrice());
                Console.WriteLine("Product id: " + proUpgradeProduct.ProductIdentifier);
            }

            foreach (string invalidProductId in response.InvalidProducts)
            {
                Console.WriteLine("Invalid product id: " + invalidProductId);
            }

            // finally release the reqest we alloc/init’ed in requestProUpgradeProductData
            productsRequest.Dispose();


            NSNotificationCenter.DefaultCenter.PostNotificationName(InAppPurchaseManagerProductsFetchedNotification, this, null);
        }
Example #22
0
 public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
 {
     tcs.SetResult(response);
 }
Example #23
0
			public override void ReceivedResponse (SKProductsRequest request, SKProductsResponse response)
			{
				tcs.SetResult (response);
			}
        public override void DidReceive(SKProductsRequest request, SKProductsResponse response)
        {
//			IAPXT._OnProductResponse(response);
        }
            public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
            {
                try
                {
                    if (response == null && onFailed != null)
                    {
                        onFailed(new InAppPurchaseException("Invalid response", 0));
                        Console.WriteLine("InAppPurchaseManager: ReceivedResponse: SKProductsResponse is null!");
                    }
                    else
                    {
                        List<ProductInformation> products = new List<ProductInformation>();

                        foreach (SKProduct product in response.Products)
                        {
                            SKProductInformation pi = new SKProductInformation(product);
                            pi.Title = product.LocalizedTitle;
                            pi.Description = product.Description;
                            pi.Price = product.Price.FloatValue;
                            pi.LocalizedPrice = product.LocalizedPrice();
                            //pi.IsDownloadable = product.Downloadable;
                            //pi.DownloadContentVersion = product.DownloadContentVersion;
                            products.Add(pi);
                        }

                        if (onSucceed != null)
                        {
                            onSucceed(products.ToArray(), response.InvalidProducts);
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (onFailed != null)
                    {
                        onFailed(new InAppPurchaseException("Error while requesting product information.", 0, ex));
                    }
                }
            }
            public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
            {
                if (SingleManager.productsRequest == request)
                    SingleManager.productsRequest = null;

                var changed = false;
                foreach (var product in response.Products)
                {
                    ProductDetails details;
                    if (SingleManager.products.TryGetValue(product.ProductIdentifier, out details))
                    {
                        details.SetDetails(product);
                        changed = true;
                    }
                }

                foreach (var product in response.InvalidProducts)
                {
                    ProductDetails details;
                    if (SingleManager.products.TryGetValue(product, out details))
                    {
                        details.SetInvalid();
                        changed = true;
                    }
                }

                // Check that all products have details - if not reload
                SingleManager.RequestProductDetails();

                if (changed)
                    SingleManager.RaiseDetailsChanged();
            }
Example #27
0
 public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
 {
     _response = response;
     _waiter.Set();
 }
Example #28
0
 public override void DidReceive(SKProductsRequest request, SKProductsResponse response)
 {
     //			IAPXT._OnProductResponse(response);
 }
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            SKProduct[] products = response.Products;
            proUpgradeProduct = products.Length == 1 ? products[0] : null;
            if (proUpgradeProduct != null)
            {
                proUpgradeProduct.LocalizedPrice();
                Console.WriteLine("Product title: " + proUpgradeProduct.LocalizedTitle);
                Console.WriteLine("Product description: " + proUpgradeProduct.LocalizedDescription);
                Console.WriteLine("Product price: " + proUpgradeProduct.LocalizedPrice());
                Console.WriteLine("Product id: " + proUpgradeProduct.ProductIdentifier);
            }

            foreach(string invalidProductId in response.InvalidProducts)
            {
                Console.WriteLine("Invalid product id: " + invalidProductId );
            }

            // finally release the reqest we alloc/init’ed in requestProUpgradeProductData
            productsRequest.Dispose();

            NSNotificationCenter.DefaultCenter.PostNotificationName(InAppPurchaseManagerProductsFetchedNotification,this,null);
        }