iOS 应用程序中通过 cordova-plugin-purchase 进行购买?

问题描述 投票:0回答:3

我正在使用 Capacitor(但不是 Ionic)来打包适用于 iOS 的 SvelteKit 应用程序,并尝试让应用内购买正常工作。

Capacitor 的应用内购买页面出人意料地毫无帮助。我已尽力而为:

  1. 我在 appstoreconnect 中设置了产品,它们的状态是“准备提交”

  2. 我已经安装了

    cordova-plugin-purchase
    并运行
    npx cap update
    npx cap sync
    并且正在安装

[info] 找到 1 个适用于 ios 的 Cordova 插件: [电子邮件受保护]

  1. 我尝试进行最简单的测试,看看发生了什么:
import 'cordova-plugin-purchase'; // This seems to add `CdvPurchase` to the global scope.

function buy() {
    
  const {store, ProductType, Platform} = CdvPurchase;

  store.verbosity = store.DEBUG;
    
  store.register([{
    type: ProductType.CONSUMABLE,
    id: "my-product-id",
    platform: Platform.APPLE_APPSTORE,
  }]);

  store.error(e => {
    console.log('error', e);
  });

  store.when()
    .productUpdated(() => {
      console.log('product updated', product);
    })
    .approved(value => {
      console.log('approved', value);
    })
    .verified(value => {
      console.log('verified', value);
    })
    .finished(value => {
      console.log('finished', value);
    });

  store.ready(() => {
    console.log('ready', store.products);
    store.order('my-product-id');
  });
  
  store.initialize(Platform.APPLE_APPSTORE)
    .then(() => {
      console.log('initialize resolved', store.products);
      store.order('my-product-id');
    });

}

但是我运行

buy
函数,我得到的是:

[日志] - [CordovaPurchase] 信息:初始化()

store
永远不会报告准备就绪。没有一个监听器被触发,甚至
.error()
也没有。

我错过了什么吗?我该如何调试这个?

ios in-app-purchase capacitor cordova-plugin-purchase
3个回答
0
投票

设备准备就绪后,您需要设置并初始化商店。

您不能

buy()
产品然后初始化商店;它必须在设备启动时完成。

例如,在科尔多瓦,这是

onDeviceReady
事件 (example)。

对于 Capacitor,如果您使用 Ionic + Angular,则可以使用

this.platform.ready()
事件

对于 React、Vue 等框架,可以使用:

document.addEventListener("deviceready", function(){
//do something when device is ready
}, false);

0
投票

尝试以这种方式导入cordova-plugin-purchase:

import "cordova-plugin-purchase/www/store.js";

还可以尝试使用“window”作为全局变量,以防正常方式不起作用:

const { store, ProductType, Platform } = window.CdvPurchase;

以下是其他有用的链接,您可以在其中找到订阅基本代码的代码:

  1. GitHub 问题讨论:https://github.com/j3k0/cordova-plugin-purchase/issues/1437
  2. 开发人员使用 PAID_SUBSCRIPTION 的微型示例:https://gist.github.com/j3k0/8b7e72b6af43572651328c613ac86d59
  3. 开发人员使用 .ts 和更复杂的示例:https://github.com/j3k0/cordova-subscription-example/blob/main/with-server/www/ts/subscription-service.ts

我过去发现这个资源很有用,所以我想你也可能有用。


0
投票

我正在努力添加 cordova-plugin-purchase (v13)。这是我使用的代码:

const initializeIAP = () => {


const { store, ProductType, Platform, logLevel } = CdvPurchase;
  const idProduct = "MyPRODUCTID";
  store.verbosity = 4;

  store.initialize([Platform.APPLE_APPSTORE]);
  store.register([
    {
      id: idProduct,
      type: ProductType.PAID_SUBSCRIPTION,
      platform: Platform.APPLE_APPSTORE,
    },
  ]);

  const myProduct = store.get("MMmonthly", Platform.APPLE_APPSTORE);
  console.log(myProduct);
};

document.addEventListener("deviceready", initializeIAP);

不幸的是,我的产品值返回了未定义的值。 我在 Apple Store Connect 中设置了 IAP 订阅(并且我在代码中使用相同的 idProduct),我在 iOS 模拟器上作为沙盒用户进行连接...

我错过了什么?

感谢您提前的帮助

© www.soinside.com 2019 - 2024. All rights reserved.