微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。