【问题标题】:How to get working In-App Purchases (IAP) using Cordova on iOS?如何在 iOS 上使用 Cordova 进行应用内购买 (IAP)?
【发布时间】:2019-12-12 11:35:30
【问题描述】:

使用 Apache Cordova 和 https://github.com/j3k0/cordova-plugin-purchase 在 Android 上成功交付应用内购买 (IAP) 后,我无法让它在 iOS 上正常运行。问题是,一旦单击该项目,价格就会显示其详细信息等,但是如果使用单击“取消”,则用户将无法再购买任何东西。除非重新开始游戏,据我所知,我应该处理拒绝/取消事件。尝试了这些,但到目前为止没有成功。

这就是我尝试处理这些事件(拒绝/取消)的方式,包括在代码的不同位置使用 store.refresh() 以及不使用它:

// Handle rejection and cancel events.
store.when("com.XX.YY.gems5").rejected(function(order) {
  store.refresh();
  that.game.state.start("GemsState");
  store.refresh();
});
store.when("com.XX.YY.gems5").cancelled(function(order) {
  store.refresh();
  that.game.state.start("GemsState");
  store.refresh();
});

代码,可在 Android 上正常运行(无需处理即可正常运行):

'use strict';
var that = this;

// Prepare product.
store.register({
  id:    "com.XX.YY.gems5",
  alias: "Gems 5",
  type:  store.CONSUMABLE
});

// Purchase product.
store.order("com.XX.YY.gems5");
store.refresh();
store.when("com.XX.YY.gems5").approved(function (order) {
  order.finish();
  store.refresh();

  // Add extra gems.
  localStorage.gems = parseInt(localStorage.gems) + 5; // Add 5 gems.
  that.upgrade_sound.play(); // Play upgrade sound.
  that.game.state.start("GemsState");
  that.menu_items[1].select(); // Select second item.
});

我正在使用 Phaser 2 和 ES5。

【问题讨论】:

    标签: android ios cordova in-app-purchase phaser-framework


    【解决方案1】:

    显然,这个插件在 Android 和 iOS 上有时会有一些不同的行为,这里就是这种情况。首先,store.refresh(); 应该是一次并且在这段代码的末尾。下面是运行良好的 iOS 示例:

    'use strict';
    var that = this;
    
    store.register({
      id:    "com.XX.YY.gems5",
      alias: "Gems 5",
      type:  store.CONSUMABLE
    });
    
    store.order("com.XX.YY.gems5"); // Initialize purchase.
    
    // Handle approved purchase.
    store.when("XX.YY.ZZ.gems20").approved(function (order) {
      // Add extra gems.
      localStorage.gems = parseInt(localStorage.gems) + 20; // Add 20 gems.
    
      order.finish(); // Finish purchase.
    });
    
    store.refresh(); // Refresh the store to start everything.
    

    还有几个缺点,如果你想进一步了解,可以查看issue#333 (comment)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 2014-04-10
      相关资源
      最近更新 更多