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