Sto usando socket.io
in un iOS React Native(v0.20) app
. L'app tiene traccia della mia posizione e, quando la mia posizione cambia, invia un messaggio a un server. Se la connessione socket è persa, il server invia un'email per notificarmi.Come eseguire socket.io in background su iOS in un'app React Native?
Ho il rilevamento della posizione in background con react-native-location, ma non riesco a far funzionare socket.io
. Ogni volta che cambio app o spengo lo schermo, l'app tiene traccia della mia posizione ma perdo la connessione socket.
C'è un modo per eseguire socket.io
in background come il rilevamento della posizione? A parte questo c'è un codice nativo che mi permetterà di mantenere uno client/server connection
mentre è in background?
So che c'è uno WebSocket alternative ma non riesco a vedere un modo per farlo funzionare in background.
UPDATE: ho raddoppiato controllato il mio Info.plist
, ha i valori di fondo necessari fissati già per react-native-location. Non so se è importante, ma il funzionamento del socket e il rilevamento della posizione vengono eseguiti nello stesso componente.
LocationComponent.js
window.navigator.userAgent = 'react-native';
const io = require('socket.io-client/socket.io');
const socket = io(url, {jsonp: false});
import React, { Text, View, DeviceEventEmitter } from 'react-native';
import { RNLocation } from 'NativeModules';
export default GeolocationExample = React.createClass({
componentDidMount: function() {
RNLocation.requestAlwaysAuthorization();
RNLocation.startUpdatingLocation();
RNLocation.setDistanceFilter(3.0);
DeviceEventEmitter.addListener('locationUpdated', locationObject => {
this.props.newPosition({ longitude: locationObject.coords.longitude, latitude: locationObject.coords.latitude });
});
},
render: function() {
const { lastPosition, distance } = this.props;
socket.emit('newPos', { longitude: lastPosition.longitude, latitude: lastPosition.latitude, distance, time: Date() });
return (
<View>
<Text> {distance} </Text>
</View>
);
}
});
Il comportamento è simile su iOS e Android oppure si tratta di un problema solo per iOS? – Stavash
Non ho provato Android. Questa è la mia prima app React Native e volevo concentrarmi sulla creazione di iOS in modo da poterlo utilizzare sul mio telefono. – EasilyBaffled
Hai trovato una soluzione a questo? –