InAppPurchase 错误

Posted

技术标签:

【中文标题】InAppPurchase 错误【英文标题】:InAppPurchase erreur 【发布时间】:2021-06-12 11:59:34 【问题描述】:

离子:

@ionic/cli: "^6.10.0",
Ionic Framework               : "@ionic/angular": "^5.1.1"
@angular-devkit/build-angular : 0.1102.13
@angular-devkit/schematics: "^9.1.7",
@angular/cli: "^9.1.7",
@ionic/angular-toolkit: "~2.0.0",

系统:

NodeJS:v12.14.0 npm:6.13.4 操作系统:macOS Big Sur 版本 11.2.3 Xcode:Xcode 12.4 构建版本 12D4e 在需要在 Ionic/ios 应用程序中激活应用内购买时,我在 App Store Connect 中构建了我的产品以进行测试。在需要在 Ionic/iOS 应用程序中激活应用内购买时,我将我的产品构建在App Store Connect 进行测试。 enter image description here 我开发了一个带有在线支付功能的 Angular / Ionic 应用程序,并创建了一个 ios 应用程序,当我发送它进行验证时,它被 Apple 拒绝,要求集成“应用内购买”,这就是我使用插件“In- App-Purchase2" 来管理购买但是当我尝试访问我创建的包时,XCode 会启动以下记录器:"Undefined" or nothing display 。 我不明白为什么我找不到我的产品(我的产品列表是空的),我注意到我的应用程序和 AppleStoreConnect 之间没有连接.. 你能帮我看看我使用的方法是否很好,以及为什么它不能很好地工作。 我的代码: Pasted Graphic 4

Pasted Graphic 3

记录 Xcode Loadina network plugin

已签署申请协议 Capture d’écran, le 2021-06-11 à 12 24 03

Ps:我在模拟器中测试过

【问题讨论】:

请do not post images of code - 在此处发布文字。 我不知道 Ionic 但我知道 IAP 必须在真机上测试,它在模拟器中不起作用 【参考方案1】:

嗨@Juliana,欢迎来到社区!让我们帮助您使用 sn-p 代码。在请求处理产品之前,您需要确保 Store 已准备就绪,并使用 NgZone 获取产品数据。

  constructor(private store: InAppPurchase2)
    this.productId = 'my_product_name'
  

  ngOnInit() 
    this.platform.ready().then(() => 
      if (this.platform.is('ios')) 
        this.setupPurchase();
      
    );
  

  setupPurchase()     
    this.store.verbosity = this.store.DEBUG;
    this.store.register(
      id: this.productId,
      type: this.store.NON_CONSUMABLE
    );
    console.log('verbosity ?? ', JSON.stringify(this.store.verbosity));
    this.store.ready(() =>    
      this.registerHandlersForPurchase(this.productId);
    );
    // refresh/store purchase
    this.store.refresh();
  

  registerHandlersForPurchase(productId) 
    // Approved
    this.store.when(productId).approved((product: IAPProduct) => 
      console.log('Approved ?? ', JSON.stringify(product));
      // Product Finish
      product.finish();
    );

    // User closed the native purchase dialog
    this.store.when(this.productId).cancelled((product) => 
      console.error('User Canceled! ', product);
    );

    this.store.refresh();
    
    this.product = this.store.get(this.productId);
    if (!!this.product.id && !!this.product.priceMicros) 
      this.zone.run(() => 
        // Use on html view to show the products
        this.displayProduct = this.product;
      );
    
    console.log('Handlers produto ?? ', JSON.stringify(this.product));
    // Track all store errors
    this.store.error( (err) => 
      console.error('Store Error ' + JSON.stringify(err));
    );
  

请调整它以适应您的代码并在本机设备上运行。您将在调试时看到 console.log() 以及产品的错误和状态。

【讨论】:

以上是关于InAppPurchase 错误的主要内容,如果未能解决你的问题,请参考以下文章

In App Purchase产品ID是否必须以Reverse-DNS开头?

In App Purchase沙盒问题

iOS8 In App Purchase收据验证

iTunes Connect In App Purchase免费试用期限何去?

AppStore苹果应用支付开发(In App Purchase)翻译

在 App Purchase/View Controller Crash: Message sent to deallocated instance