React Native和Estimote-未处理的承诺拒绝:TypeError:null不是对象正在评估'RNEstimoteProximity.initialize'

问题描述

React Native的新功能。我正在构建一个应用程序,并且希望集成一个功能,使其能够与Estimote Beacons交互。我正在使用从Estimote网站(https://github.com/Estimote/react-native-proximity/)中找到的该库,并将其集成到我的App.js文件中。我可以跳过locationPermission.request()部分,但它会在RNEP.proximityObserver.initialize()行上引发错误错误消息是:

[Unhandled promise rejection: TypeError: null is not an object (evaluating 'RnestimoteProximity.initialize')]
- node_modules\@estimote\react-native-proximity\index.js:67:33 in <global>
- node_modules\promise\setimmediate\core.js:37:14 in tryCallOne
- node_modules\promise\setimmediate\core.js:123:25 in setImmediate$argument_0
- node_modules\react-native\Libraries\Core\Timers\JSTimers.js:146:14 in _callTimer
- node_modules\react-native\Libraries\Core\Timers\JSTimers.js:194:17 in _callImmediatesPass
- node_modules\react-native\Libraries\Core\Timers\JSTimers.js:458:30 in callImmediates
* [native code]:null in callImmediates
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:407:6 in __callImmediates
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:143:6 in __guard$argument_0
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:384:10 in __guard
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:142:17 in __guard$argument_0
* [native code]:null in flushedQueue
* [native code]:null in invokeCallbackAndReturnFlushedQueue

我的App.js代码

import React,{useState} from 'react';
import * as Font from 'expo-font';
import { AppLoading } from 'expo';
import Navigator from './routes/drawer';

import * as RNEP from '@estimote/react-native-proximity';

const startProximityObserver = () => {
    const ESTIMOTE_APP_ID = "XXXXXXXXXXXXXXX";
    const ESTIMOTE_APP_TOKEN = "XXXXXXXXXXXXXXX";

    const zone1 = new RNEP.ProximityZone(5,"va-test");
    zone1.onEnteraction = context => {
        console.log("zone1 onEnter",context);
    };
    zone1.onExitaction = context => {
        console.log("zone1 onExit",context);
    };
    zone1.onChangeAction = contexts => {
        console.log("zone1 onChange",contexts);
    };

    RNEP.locationPermission.request().then(
    permission => {
      console.log(`location permission: ${permission}`);

      if (permission !== RNEP.locationPermission.DENIED) {
        const credentials = new RNEP.CloudCredentials(
          ESTIMOTE_APP_ID,ESTIMOTE_APP_TOKEN
        );

        const config = {
          notification: {
            title: "Exploration mode is on",text: "We'll notify you when you're next to something interesting.",channel: {
              id: "exploration-mode",name: "Exploration Mode"
            }
          }
        };

        RNEP.proximityObserver.initialize(credentials,config);
        RNEP.proximityObserver.startObservingzones([zone1]);
      }
    },error => {
      console.error("Error when trying to obtain location permission",error);
    }
  );
};

const stopProximityObserver = () => { RNEP.proximityObserver.stopObservingzones(); };

const getFonts = () => Font.loadAsync({
    'regular' : require('./assets/fonts/Poppins-Regular.ttf'),'semibold' : require('./assets/fonts/Poppins-SemiBold.ttf'),'light' : require('./assets/fonts/Poppins-Light.ttf')
});

startProximityObserver();

export default function App() {
  const [fontsLoaded,setFontsLoaded] = useState(false);

  if(fontsLoaded) {
    return (
      <Navigator />
    );
  } else {
    return (
      <AppLoading startAsync={getFonts} onFinish={() => setFontsLoaded(true)} />
    )
  } 
}

我仔细检查了Estimote应用程序ID和应用程序令牌,它们是正确的,所以我不知道为什么初始化函数不起作用。我尝试查看他们的论坛,但没有发现任何有用的信息。我在代码中还缺少其他内容吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...