cordova j3k0 / ошибка покупки плагина cordova-plugin на iOS 13 для моего приложения ionic

#cordova #ionic-framework #in-app-purchase #ionic4 #cordova-plugins

#cordova #ionic-framework #покупка в приложении #ionic4 #cordova-плагины

Вопрос:

У меня есть несколько существующих приложений в App Store, и я пытался добавить еще одно, но Apple продолжает отклонять мое приложение из-за проблем с покупкой в приложении. Я не изменил код покупки в приложении, поэтому я не уверен, что может быть не так. У меня нет Mac, поскольку я создаю вещи в облаке; следовательно, я хотел обратиться к сообществу за советом. Пожалуйста, найдите то, что я заметил ниже:

  1. Я знаю, что вы не можете протестировать покупку в приложении на симуляторе. Однако симулятор может нормально отображать данные магазина. Другими словами, inapp должно быть установлено нормально на стороне itunes.
  2. В iOS 11 при покупке появляется всплывающее окно для входа пользователя в систему. Однако на iOS 13 он завершается сбоем непосредственно с помощью "Cannot connect to the itunes store" сообщения. Следовательно, я предполагаю, что проблема может быть связана с iOS13 или с чем-то, что я должен был сделать для работы с iOS 13. Apple тестирует мое приложение на iOS13, и мои предыдущие приложения были одобрены в прошлом, возможно, на iOS11. Более того, отклонение Apple также указывало на то же сообщение об ошибке.
  3. В iOS13 я также вижу следующую ошибку в журналах:
 Found nil parameter when creating SKPaymentDiscount
  

Ниже приведена базовая структура моего кода:

При инициализации приложения я вызвал следующий метод:

   configurePurchasing() {
      try {                          
          this.iapStore.register({
              id: this.productId,
              alias: this.productAlias,
              type: this.iapStore.CONSUMABLE
          });
              
          this.iapStore.when(productId).approved((product) => {
              product.finish();
              
              // Purchase is completed         
          });           

          this.iapStore.when(productId).updated((product) => {
              this.renderProductInfo();                    
          });

          this.iapStore.when(productId).cancelled((product) => {
              // Show purchase cancelled message   
          });
             
          this.iapStore.error((err) => {
              // Show error message
          });

          this.iapStore.ready((status) => {                    
              this.renderProductInfo();                    
          });

          this.iapStore.when(productId).error((err) => {
              // Show error message
          });                
          
          this.iapStore.refresh();            
      }
      catch (err) {
      }
  }

  renderProductInfo() {
    try {                  
        let product = this.iapStore.get(this.productId);        

        if (!product) {                    
          // Show error message       
        }
        else if (product.state === this.iapStore.INVALID) {
          // Show error message             
        }                
        else if (product.state === this.iapStore.VALID) {
            // Product loaded and valid.
            if (this.storeInfoLoadedFlag == false) {              
              this.title = product.title;
              this.price = product.price;
              this.description = product.description;                             
            }
            else if (this.purchaseErrorFlag) {
          // Show error message       
            }
            else if (this.purchaseCancelledFlag) {                        
          // Show cancel message
            }                         
        }                            
    }
    catch (e) {
    }
  }
  

И ниже приведен мой способ покупки:

   purchaseLives() {
      try {                        
          productId = this.productId;
          this.iapStore.get(productId);              
          this.iapStore.order(productId);
          
      }
      catch (err) {
      }
  }  
  

Я был бы безмерно признателен, если бы вы могли предоставить какой-либо указатель, поскольку у меня нет Mac для тестирования кода на реальном устройстве.

Спасибо,

Doug

Комментарии:

1. вы также создали проблему на github разработчика плагина?

2. Привет, Сергей, большое спасибо за ваш ответ. Да, я создал проблему там, но я обеспокоен тем, что я упускаю что-то очевидное, а не проблему с плагином. Следовательно, я создал здесь вопрос, поскольку это может быть скорее проблема с кодированием с моей стороны в отношении iOS 13.