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; }
// 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); } }
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; }
// /// <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; }
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")); }
// /// <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; }
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(); }
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); } }
// 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(); } }
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); }
public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response) { tcs.SetResult(response); }
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(); }
public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response) { _response = response; _waiter.Set(); }
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); }