मैं रिएक्टिव नेटिव में बैकग्राउंड टास्क कैसे चला सकता हूं?


82

मैंने रिएक्ट नेटिव में एक छोटा सा आईओएस ऐप बनाया है जो लोकेशन ट्रैकिंग करता है, उपयोगकर्ता के चयन के सर्वर के लिए नियमित रूप से lat / lng भेज रहा है। हालाँकि यह तभी काम करता है जब ऐप अग्रभूमि में हो। जब उपयोगकर्ता अन्य एप्लिकेशन में है तो मैं इस कार्य को पृष्ठभूमि में कैसे चला सकता हूं?


संभवत: आप UIBackgroundModes को प्लिस्ट में स्थान पर सेट करके ऐसा कर सकते हैं - यहाँ एक नज़र रखिए। developer.apple.com/library/ios/documentation/UserExperience/…
बेन क्लेटन

4
रिएक्ट नेटिव में एक सीमा होती है जिसमें जब एप्लिकेशन बैकग्राउंड में होता है तो js पुल संदेश प्राप्त करना बंद कर देता है। इसका मतलब है कि यदि आप js से डेटा भेजने की कोशिश कर रहे हैं तो आप इसे बनाने वाले डेटा पर भरोसा नहीं कर पाएंगे। वैकल्पिक रूप से आप मूल कोड में अपडेट भेजने के लिए कोड लिख सकते हैं और यह ट्रिक करना चाहिए
rmevans9

3
Thansk @ rmevans9 यह एक अच्छी शुरुआत है। जो इस पाता है किसी के लिए मैं पहले से ही यहाँ काम का एक छोटा सा किया है gist.github.com/liamzebedee/67e1b2c53c6c5edcf8ec
liamzebedee

1
@liamzebedee क्या आप उत्तर स्वीकार करना चाहेंगे?
डैनियल श्मिट

@liamzebedee क्या आपको लगता है कि स्विफ्ट में इन समान कार्यों को लागू करना संभव होगा?
गेब्रियल गैरेट

जवाबों:


62

वर्तमान में, दुर्भाग्य से, किसी भी तरह के पृष्ठभूमि कार्यों के लिए कोई समर्थन नहीं है। जिस फीचर का आप जिक्र कर रहे हैं वह बैकग्राउंड टाइमर होगा। इस तरह के एक टाइमर यह उत्पाद दर्द ( प्रतिक्रिया के लिए एक सुविधा अनुरोध) है, आप इस सुविधा के लिए बढ़ी हुई मांग दिखाने के लिए इसे बढ़ा सकते हैं।

EDIT 12/2016: अभी भी कोई वास्तविक विकल्प नहीं है। आरएन 0.33 के बाद से आपके पास हेडलेस जेएस एपीआई है, लेकिन यह केवल एंड्रॉइड के लिए है। साथ ही आपका ऐप क्रैश हो जाएगा अगर यह अग्रभूमि में चलता है तो आपको इसका उपयोग करने के बारे में सावधान रहना होगा। यह इंगित करने के लिए @ फ़ेंग के लिए धन्यवाद।


2
पृष्ठभूमि कार्य अब संस्करण 0.36 में समर्थित है, लेकिन केवल Android
फेंग

1
क्या आपके पास फ़ीचर के लिए डॉक्स का लिंक है? मैं प्रतिक्रिया-मूल में निर्मित पृष्ठभूमि-टास्क फ़ीचर पर कुछ भी नहीं ढूंढ सका।
वेनरिक्स


26

और अब प्रतिक्रिया-मूल-पृष्ठभूमि-कार्य है जो एंड्रॉइड और आईओएस दोनों के लिए एक एकल एपीआई है।


2
प्रतिक्रिया-मूल-पृष्ठभूमि-कार्य के लिए एक प्लस! यह मेरी प्रतिक्रिया-मूल-कतार पैकेज ( github.com/billmalarky/react-native-queue ) के साथ वास्तव में अच्छी तरह से एकीकृत करता है । यदि आप "OS बैकग्राउंड टास्क फुल उदाहरण" पर स्क्रॉल करते हैं, तो आप देख सकते हैं कि कतार आपके लिए नौकरियों के प्रबंधन को कैसे संभालती है इसलिए iOS और एंड्रॉइड बैकग्राउंड कार्यों पर 30 सेकंड की सीमा से निपटने के लिए दर्द नहीं है।
बिलमलार्की

1
मैंने अपने ऐप में इस लाइब्रेरी का उपयोग किया है, लेकिन यह उस कार्य को नहीं चलाता है जिसे मैंने नियमित रूप से चलाने के लिए निर्धारित किया है। क्या यह सामान्य है??
सिमाअतार

2
प्रतिक्रिया-मूल-पृष्ठभूमि-कार्य परियोजना को छोड़ दिया गया प्रतीत होता है। 2017 के बाद से कोई प्रतिबद्धता नहीं है और मुद्दों / पुल अनुरोधों को जमा कर रहे हैं। तो यह शायद आजकल जाने का रास्ता नहीं है।
12

12

रिएक्ट नेटिव इकोसिस्टम पिछले कुछ महीनों से ब्रेकनेक गति से आगे बढ़ रहा है, और कुछ प्लगइन्स ने पृष्ठभूमि में कोड को चलाने में सक्षम नहीं होने के दर्द को संबोधित करने के लिए पॉप अप किया है।

https://github.com/transistorsoft/react-native-background-fetch - 30 सेकंड के लिए समय-समय पर कुछ मनमाने ढंग से JS कोड चलाने के लिए जागें। उच्च रिज़ॉल्यूशन जियोलोकेशन के लिए उपयुक्त नहीं है, क्योंकि वेक-अप के बीच का समय 15 मिनट या उससे अधिक होगा।

https://github.com/transistorsoft/react-native-background-geolocation - इस स्थिति के लिए एक बेहतर फिट, विशेष रूप से पृष्ठभूमि में जियोलोकेशन पर लक्षित।


4
मैं इस एक का उपयोग कर रहा हूँ github.com/mauron85/react-native-background-geolocation जो एंड्रॉइड के लिए बहुत ही समान लगता है, लेकिन मुफ्त भी है।
simlmx

@simlmx मैंने प्रतिक्रिया-मूल-पृष्ठभूमि-जियोलोकेशन का उपयोग किया है, लेकिन यह पृष्ठभूमि या एप्लिकेशन से स्थिर क्षेत्र से बाहर नहीं निकलता है, कृपया मेरे कॉन्फ़िगरेशन की जांच करें यहां stackoverflow.com/questions/61889407/… मैं किसी भी मदद की सराहना करता हूं, अग्रिम धन्यवाद
कॉफी

8

ये लाइब्रेरी आपकी इच्छित कार्यक्षमता प्राप्त करने में आपकी सहायता कर सकती हैं:

  1. प्रतिक्रिया-मूल-पृष्ठभूमि-नौकरी
  2. प्रतिक्रिया-मूल-पृष्ठभूमि-कार्य
  3. प्रतिक्रिया-मूल-पृष्ठभूमि-भ्रूण

वैकल्पिक रूप से, आप प्रतिक्रिया-मूल से हेडलेस जेएस का उपयोग कर सकते हैं । लेकिन यह केवल Android के लिए उपलब्ध है।


मैंने अपने ऐप में प्रतिक्रिया-मूल-पृष्ठभूमि-फ़ोकस लाइब्रेरी का उपयोग किया है, लेकिन यह प्रति दिन केवल कुछ बार वांछित कार्य चलाता है। क्या यह सामान्य है??
सिमाअत्तर

8

मैं इसका उपयोग करता हूं, और यह काम करने लगता है: https://github.com/ocetnik/react-native-background-timer

ईवेंट को समय-समय पर छोड़ें (भले ही ऐप बैकग्राउंड में हो)।

आप setInterval और setTimeout फ़ंक्शन का उपयोग कर सकते हैं। यह एपीआई प्रतिक्रिया-मूल के समान है और इसका उपयोग पृष्ठभूमि टाइमर के साथ मौजूदा टाइमर को जल्दी से बदलने के लिए किया जा सकता है।

import BackgroundTimer from 'react-native-background-timer';

// Start a timer that runs continuous after X milliseconds
const intervalId = BackgroundTimer.setInterval(() => {
    // this will be executed every 200 ms
    // even when app is the background
    console.log('tic');
}, 200);

// Cancel the timer when you are done with it
BackgroundTimer.clearInterval(intervalId);

// Start a timer that runs once after X milliseconds
const timeoutId = BackgroundTimer.setTimeout(() => {
    // this will be executed once after 10 seconds
    // even when app is the background
    console.log('tac');
}, 10000);

// Cancel the timeout if necessary
BackgroundTimer.clearTimeout(timeoutId);

धन्यवाद! लेकिन यह मॉड्यूल काम नहीं करता है अगर मैं प्रक्रिया से ऐप को मारता हूं, तो क्या आप अब इसी तरह के मॉड्यूल को काम करते हैं, यहां तक ​​कि मैं ऐप को मार दूंगा?
खोलियावको

@Kholiavko क्षमा करें, नहीं। मुझे पता है कि आप अलार्म सेवा के उपयोग के माध्यम से इसे पूरा कर सकते हैं, लेकिन एक मॉड्यूल के बारे में नहीं जानते जो आपको ऐसा करने में मदद करता है।
वेनरिक्स

@ खोलियावको कोई किस्मत?
chapeljuice

1
@chapeljuice, हाँ, इस मॉड्यूल को देखें github.com/vikeri/react-native-background-job
Kholiavko

नमस्कार! यह प्लगइन केवल Android लगता है। क्या आप iOS के लिए किसी भी समाधान के बारे में जानते हैं?
साइमन एलियासन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.