Meine App sendet eine Benachrichtigung an den Benutzer jedes Mal, wenn ein Auto den Preis ändert. Es wird mit Code durchgeführt, der jede Stunde läuft.React-Native Update AsyncStorage Artikel
-Code ist folgende:
backgroundData(){
BackgroundTimer.setInterval(() => {
AsyncStorage.getItem('key').then(JSON.parse).then(items => {
this.setState({value: items});
})
if(!this.state.value == 0 || !this.state.value == null){
const promises = this.state.value.map((item, index) =>
fetch(`URL/GetDetalhesViatura?CarID=${item[0]}`)
.then(response => response.json())
)
Promise.all(promises).then(viaturas => this.setState({viaturas: flatten(viaturas)}))
const newItem = []
this.state.viaturas.map((item, index) =>
newItem.push([item.Preco, item.CodViatura]),
this.setState({ stateArray: newItem })
)
const newItem2 = []
this.state.value.map((item, index) =>
newItem2.push([item[1], item[0]]),
this.setState({stateArray2: newItem2})
)
var results = new Array();
//CODE TO CHECK ARRAYS FOR DIFFERENT PRICES
this.setState({results: results})
if(!this.state.results == 0 || !this.state.results == null){
const promises = this.state.results.map((item, index) =>
fetch(`URL/GetDetalhesViatura?CarID=${item[1]}`)
.then(response => response.json())
)
Promise.all(promises).then(viaturas2 => this.setState({viaturas2: flatten(viaturas2)}))
this.state.viaturas2.map((item, index) =>
PushNotification.localNotification({
message: "Notification",
})
)
}
} else {
console.log('empty')
}
}, 9999999);
}
Zuerst es fetchs die aktuellen Daten auf meinem AsyncStorage. Wenn es Daten hat, ruft es die neuen Daten von der API ab und vergleicht danach beide Daten, und wenn es unterschiedliche Preise gibt, sendet es eine Benachrichtigung an den Benutzer.
Das Problem ist, dass ich die 'key'
für jedes Auto (wenn der Preis geändert hat) mit dem neuen Preis aktualisieren, oder die App weiterhin Benachrichtigungen an den Benutzer senden wird.