나는 React Native로 백그라운드 서비스를 실행하기 위해 Headless.js를 사용하고 있습니다. 우리는 그 사용법에 대해 몇 가지 문제에 직면 해 있습니다. React Native를 사용하여 Android 백그라운드 서비스를 실행하기위한 내 옵션에는 어떤 것이 있습니까?네이티브 및 안드로이드 백그라운드 서비스에 반응하십시오.
답변
제 생각에 직접 작성해야합니다. 불행히도 Headless JS는 작업이 완료 될 때까지 일시 중지되므로 적합하지는 않습니다.
네트워크 요청, 타이머 등 UI에는 영향을주지 않는 한 아무 작업이나 할 수 있습니다. 작업이 완료되면 (즉, 약속이 해결 된 경우) React Native는 다른 작업이 실행 중이거나 전경 앱이없는 경우 '일시 중지'모드로 전환됩니다.
https://facebook.github.io/react-native/docs/headless-js-android.html
업데이트 :이 응용 프로그램이 포커스를 잃을 경우 실행중인 프로세스를 유지하는 것이 가능하다. 예제를 제공하기 위해 테스트 앱 소스를 찾아야 할 것이다.
결국, 필자는 안드로이드에서 부팅 할 때 배경 서비스를 작성했습니다. React Native는 이러한 유형의 서비스를 허용하지 않으며 RN이 헤드리스 앱을 만들 의도도 없습니다.
추가 파일 이름 BackgroundAudio.java
import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.HeadlessJsTaskService;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.jstasks.HeadlessJsTaskConfig;
public class BackgroundAudio extends HeadlessJsTaskService {
@Override
protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
return new HeadlessJsTaskConfig(
"BackgroundAudio",
Arguments.fromBundle(extras),
5000);
}
return null;
}
}
편집 AndroidManifest.xml에 내 index.android.js에서 다음
<service android:name=".BackgroundAudio" android:enabled="true" android:label="BackgroundAudio" />
: 마지막으로
import BackgroundAudio from './src/BackgroundAudio'
AppRegistry.registerHeadlessTask('BackgroundAudio',() => BackgroundAudio)
그리고, BackgroundAudio.js index.android.js에서 참조하는 파일은 다음과 같이 읽습니다.
export async function BackgroundAudio (taskData) {
alert('BACKGROUND AUDIO')
}
어떻게 시작할 수 있습니까 ** BackgroundAudio ** 서비스 – Man
정확한 사용 사례에 따라 도움이 될 수있는이 질문을 한 이후 제작 된 몇 가지 패키지가 있습니다. 앱이 때 -
특히 당신은 쉽게 정기적으로 (작업 시간 제한 관리를 처리하기 위해 큐를 사용하는 거의 모든이 예약 된 작업이 최대 30 초 동안 실행됩니다 15 분 ~)을 실행하는 백그라운드 작업을 예약 react native background task와 react native queue을 사용할 수 있습니다 폐쇄되었습니다 (iOS 및 Android 용 교차 플랫폼에서 작동 함). 그러나, 당신의 의도가 끊임없이 백그라운드에서 실행되는 서비스를 갖는 것이라면 RN 세계에서 가능하다는 확신이 없습니다 (내 게시물의 시간에 관한 한).
plz 일부 코드를 추가하면 일정 기간 동안 링크가 작동하지 않을 수도 있습니다. –
_ 외부 리소스에 대한 링크가 권장됩니다. 그러나 링크를 둘러싼 상황을 동료 사용자가 알 수 있도록하고 그것이있는 이유를 알려주십시오. 대상 사이트가 도달 할 수 없거나 영구적으로 오프라인 상태가되는 경우 중요한 링크의 가장 중요한 부분을 항상 인용하십시오. _ – Bugs