2017-12-10 10 views
0
내가 중포 기지를 사용하고

는 알림이 추진됩니다 반작용 :배경 서비스는이 같은, 내 응용 프로그램이 백그라운드에서 내가 데이터베이스가 새로운 데이터가있는 경우 원하는 동안 기본

message.on('child_added', function(data) { 
    pushNotification(data); 
}); 

내가 가진 Google에서 검색했으며이 라이브러리를 찾았습니다 : https://github.com/vikeri/react-native-background-job.

모든 내 백그라운드 작업, 잘 작동 :

BackgroundJob.schedule({ 
    jobKey: "newMessageJob", 
    period: 1000, 
    timeout: 1000, 
    exact: true 
}); 

하지만 난 그것이 작동 할 :

const newMessageJob = { 
    jobKey: "newMessageJob", 
    job:() => { 
    pushNotification(newMessage); 
    } 
}; 
BackgroundJob.register(backgroundJob); 

그러나 문제는 그것이 단지 고정 된 시간이라고, 여기 (setInterval을 모양) 동적으로 (새로운 데이터가 추가되면 백그라운드 작업이 시작됨)이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

+0

이 질문은 너무 광범위합니다. redux를 사용하는 경우 redux-saga를 사용하거나 단순한 미들웨어를 직접 만들면됩니다. 복잡한 작업을 원하지 않으면 componentDidMount에 콜백을 설정하고 setState를 호출하면됩니다. 반응 데이터는 부모에서 자식으로 만 이동하므로이 데이터를 필요로하는 모든 구성 요소에 소품으로 전달할 수있는 수준으로 올려야합니다. 대부분의 경우 이는 최상위 구성 요소입니다. – aemxdp

+0

고맙지 만, 내 앱이 백그라운드에서 실행되는 동안 실행하고 싶습니다. Redux가 아닌 MobX를 사용하고 있는데, 어떻게 할 수 있습니까? –

+0

아, 처음에 문제를 오해했습니다. 제일 먼저하는 일은 폴링을 수행하는 것입니다. 메시지가 도착하면 대기열에 넣고 대기열에 처리되지 않은 항목이 있는지 확인하기 위해 N 밀리 초마다 발생하는 백그라운드 작업을 예약합니다. 더 나은 해결책이 있을지도 모른다. – aemxdp

답변

0

응용 프로그램을 닫는 동안 주기적으로 수행되는 백그라운드 작업은 react native queuereact native background task으로 된 순수 JS (기본 코드 불필요) 크로스 플랫폼으로 해결할 수 있지만 원하는 것은 무엇이겠습니까? (실행중인 서비스를 정기적 인 작업)은 현재 React Native에서 가능하지 않습니다. (이해할 수있는 한 기본적으로이 작업을 수행하는 일반적인 방법조차 없습니다. 앱은 대안을 사용합니다).

  • 작업 실행 사이의 최소 시간 간격은 ~ 15 분이며 다음과 같이

    크로스 플랫폼 백그라운드 작업에 전류 한계가있다.

  • 백그라운드 작업의 시간 제한이 30 초입니다.
  • 작업 일정은 대략적인 것입니다. iOS/Android는 배터리 수명, 현재 CPU로드 등을 사용하여 예약 된 작업을 실행할 수 있는지 또는 실행을 지연하거나 취소할지 여부를 결정합니다. 일반적으로 원하는 시점에 실행되지만 타이밍이 정확하지는 않습니다.