Это одна из моих первых публикаций. Когда я застреваю, я обычно просто ударяюсь головой о стену, но сегодня я прошу о помощи. У меня есть приложение ReactNative, созданное с использованием Expo, которое выполняет мониторинг местоположения в реальном времени. Это работает, когда компонент активен на экране, но когда приложение уходит в фон, оно перестает работать. Я попытался реализовать фоновую задачу с помощью expo-task-manager, но, хоть убей, не могу заставить ее работать. Я реализовал его, чтобы использовать тактильные ощущения, чтобы уведомить меня о том, что оно работает правильно во время тестирования в полевых условиях, и хотя на симуляторе оно работает нормально (по крайней мере, я получаю console.log), реальное устройство гудит только тогда, когда компонент активен и на экране. Я вижу синий индикатор, когда приложение неактивно, но нет тактильных ощущений.
Может кто-нибудь понять, что я здесь пропустил? Заранее большое спасибо.
Вот мой код:
NSLocationUsageDescription
Use of location for determining waypoints and proximity
NSLocationWhenInUseUsageDescription
Use of location for determing waypoints and proximity
NSMicrophoneUsageDescription
The Microphone will be used to record videos for waypoints.
NSMotionUsageDescription
The of motion sensors required for the compass.
NSPhotoLibraryUsageDescription
The photo library can be used to select images and videos for upload.
NSUserActivityTypes
$(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route
UIBackgroundModes
location
fetch
На данный момент я сосредоточен на iOS, поэтому тестировал ее только там. Я пробовал работать с ним и в симуляторе, и на реальных устройствах. Приведенный выше код гудит, когда компонент активен, но не когда он находится в фоновом режиме.
Я ожидаю, что он гудит, когда я приближаюсь к DESTINATION_COORDS примерно на десять метров, независимо от того, есть ли у меня приложение на переднем плане ИЛИ в фоновом режиме.
Сейчас оно гудит только тогда, когда приложение находится на переднем плане и компонент активно отображается на экране.
Это одна из моих первых публикаций. Когда я застреваю, я обычно просто ударяюсь головой о стену, но сегодня я прошу о помощи. У меня есть приложение ReactNative, созданное с использованием Expo, которое выполняет мониторинг местоположения в реальном времени. Это работает, когда компонент активен на экране, но когда приложение уходит в фон, оно перестает работать. Я попытался реализовать фоновую задачу с помощью expo-task-manager, но, хоть убей, не могу заставить ее работать. Я реализовал его, чтобы использовать тактильные ощущения, чтобы уведомить меня о том, что оно работает правильно во время тестирования в полевых условиях, и хотя на симуляторе оно работает нормально (по крайней мере, я получаю console.log), реальное устройство гудит только тогда, когда компонент активен и на экране. Я вижу синий индикатор, когда приложение неактивно, но нет тактильных ощущений. Может кто-нибудь понять, что я здесь пропустил? Заранее большое спасибо. Вот мой код: [code]import React, { useState, useEffect } from 'react'; import { Text, View, Button } from 'react-native'; import * as Location from 'expo-location'; import * as TaskManager from 'expo-task-manager'; import * as Haptics from 'expo-haptics';
// Clean up function to stop background location updates when component unmounts return () => { Location.stopLocationUpdatesAsync(BACKGROUND_LOCATION_TASK); }; }, []);
useEffect(() => { // Fetch current location every second const interval = setInterval(() => { fetchCurrentLocation(); }, 1000);
// Clean up function to clear the interval when component unmounts return () => clearInterval(interval); }, []);
[/code] Я также предоставляю, по моему мнению, соответствующие части моего app.json: [code]{ "expo": { ... "ios": { ..., "infoPlist": { "UIBackgroundModes": ["location", "fetch"], "NSLocationAlwaysAndWhenInUseUsageDescription": "Placeholder", "NSLocationAlwaysUsageDescription": "Placeholder", "NSLocationWhenInUseUsageDescription": "Placeholder", } }, ..., "plugins": [ "expo-router", "expo-secure-store", [ "expo-location", { "locationAlwaysAndWhenInUsePermission": "Placeholder", "isAndroidBackgroundLocationEnabled": true, "isIosBackgroundLocationEnabled": true } ], ], ... } }
[/code] и даже мой Info.plist: [code] NSLocationUsageDescription Use of location for determining waypoints and proximity NSLocationWhenInUseUsageDescription Use of location for determing waypoints and proximity NSMicrophoneUsageDescription The Microphone will be used to record videos for waypoints. NSMotionUsageDescription The of motion sensors required for the compass. NSPhotoLibraryUsageDescription The photo library can be used to select images and videos for upload. NSUserActivityTypes
$(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route
UIBackgroundModes
location fetch
[/code] На данный момент я сосредоточен на iOS, поэтому тестировал ее только там. Я пробовал работать с ним и в симуляторе, и на реальных устройствах. Приведенный выше код гудит, когда компонент активен, но не когда он находится в фоновом режиме. Я ожидаю, что он гудит, когда я приближаюсь к DESTINATION_COORDS примерно на десять метров, независимо от того, есть ли у меня приложение на переднем плане ИЛИ в фоновом режиме. Сейчас оно гудит только тогда, когда приложение находится на переднем плане и компонент активно отображается на экране.