Экспо-покупки в приложении: ReferenceError: Невозможно найти переменную: connectAsync - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь следить за экспозицией в документации по покупке приложений. . У меня есть учетная запись разработчика android и я настроил покупку в приложении для этой учетной записи. Я просто пытаюсь начать работу с документацией и сразу же получить сообщение об ошибке.

Если вы посмотрите документацию, я просто пытаюсь ввести то, что в первом примере. Я вызываю эту функцию в начале метода рендеринга моего приложения.

import * as InAppPurchases from 'expo-in-app-purchases';
...

const getHistory = async function(){ 
  const history = await connectAsync();
    if (history.responseCode === IAPResponseCode.OK) {
      history.results.forEach(result => {
        console.log(result)
      });
    }
}

И я получаю эти ошибки

[Unhandled promise rejection: ReferenceError: Can't find variable: connectAsync]
* App.js:57:19 in getHistory
- node_modules/regenerator-runtime/runtime.js:45:44 in tryCatch
- node_modules/regenerator-runtime/runtime.js:271:30 in invoke
- node_modules/regenerator-runtime/runtime.js:45:44 in tryCatch
- node_modules/regenerator-runtime/runtime.js:135:28 in invoke
- node_modules/regenerator-runtime/runtime.js:170:17 in Promise$argument_0
- node_modules/promise/setimmediate/core.js:45:7 in tryCallTwo

...

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Поскольку вы использовали:

import * as InAppPurchases from 'expo-in-app-purchases';

Это означает, что ваш код должен выглядеть следующим образом: ...

const getHistory = async function(){ 
  const history = await InAppPurchases.connectAsync();
    if (history.responseCode === InAppPurchases.IAPResponseCode.OK) {
      history.results.forEach(result => {
        console.log(result)
      });
    }
}
0 голосов
/ 03 февраля 2020

Сначала необходимо импортировать модуль покупок в приложении. Например:

import * as InAppPurchases from 'expo-in-app-purchases';

const getHistory = async function(){ 
  const history = await InAppPurchases.connectAsync();
    if (history.responseCode === IAPResponseCode.OK) {
      history.results.forEach(result => {
        console.log(result)
      });
    }
}

Также обратите внимание на документацию, которую вы связали:

Прежде чем продолжить, убедитесь, что вы установили и настроили пакетact-native-unimodules.

и это:

Обратите внимание, что для покупок в приложении требуются физические устройства для работы на обеих платформах, и, следовательно, их нельзя протестировать на симуляторах.

...