/// <summary>
        /// Initializes the Payment Observer and adds it to the Payment Queue
        /// </summary>
        public Task StartAsync()
        {
            // Make sure we don't get initialized twice
            if (_paymentObserver != null)
            {
                throw new InAppPurchaseException(PurchaseError.DeveloperError, "PaymentObserver has been already created");
            }

            _paymentObserver = new PaymentObserver();
            // Start Observing the Payment Queue
            SKPaymentQueue.DefaultQueue.AddTransactionObserver(_paymentObserver);

            return(Task.CompletedTask);
        }
        /// <summary>
        /// Removes the Observer from the Payment Queue
        /// </summary>
        public Task StopAsync()
        {
            try
            {
                // Disconnect only if we were connected
                if (_paymentObserver != null)
                {
                    SKPaymentQueue.DefaultQueue.RemoveTransactionObserver(_paymentObserver);
                    _paymentObserver = null;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Unable to RemoveTransactionObserver: {ex.Message}");
            }

            return(Task.CompletedTask);
        }