के माध्यम से पृष्ठभूमि से डेटा नहीं भेजा गया है मेरे पास एक ऐसा एप्लिकेशन है जो पृष्ठभूमि में ऐप होने पर सर्वर को डेटा भेजता है।3 जी
-(bool) sendStats: (MCStatsSender*) val{
if(![self checkInternet]){ //Using Reachability here
return false;
}
NSDictionary *inputData = [NSDictionary dictionaryWithObjectsAndKeys:
self.propertyA.value, "key1",
val.data, "key2",
nil];
[myNetworkManager doRequest:[myRequestManager createWithStringAndDictionary:MY_URL Data:inputData handler:myHandler user:val]];
return true;
}
तो inputData
तार के साथ एक सरल शब्दकोश है: यहाँ कोड भेजकर डेटा के लिए जिम्मेदार है।
एक विधि doRequest
एक NSURLSession पर आधारित है और मूल रूप से इस तरह दिखता है:
-(void) doRequest: (MCRequest*) request{
[tasks addObject:request];
if(m_session == nil){
NSURLSessionConfiguration* config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:[NSString stringWithFormat:@"key-%lu",reqid]];
m_session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
}
NSURLSessionDataTask* task = [m_session dataTaskWithRequest:request.generatedRequest];
request.reqId = task.taskIdentifier;
[task resume];
}
जैसा कि मैंने कहा, सब कुछ वाई-फाई के माध्यम से काम करता है, एप्लिकेशन को पृष्ठभूमि में चला जाता है, और कुछ ही मिनटों के बाद, एक कस्टम ब्लूटूथ डिवाइस कुछ डेटा भेजता है और निलंबित मोड से एप्लिकेशन को जगाता है। आईओएस एप्लिकेशन द्वारा डेटा प्राप्त करने के बाद, यह किसी सर्वर को 3 जी से कनेक्ट होने पर सर्वर पर भेजने में विफल रहता है। मैं सकारात्मक हूं कि ब्लूटूथ के माध्यम से भेजा गया डेटा प्राप्त होता है क्योंकि यह स्थानीय डेटाबेस में संग्रहीत होता है।
इसके अलावा एक अन्य महत्वपूर्ण तथ्य भी है। यदि एक्सकोड के माध्यम से कोई एप्लिकेशन चलाया जाता है, भले ही डिवाइस 3 जी से जुड़ा हुआ हो, तो एप्लिकेशन पृष्ठभूमि से डेटा भेज देगा। ऐसा करने के लिए, मैं एक ऐप चलाता हूं, फिर उसे पृष्ठभूमि में रखने के लिए होम बटन टैप करें।
पता नहीं क्या अंतर है और मैक से केबल से जुड़ा हुआ ऐप अलग-अलग क्यों कार्य करता है, और क्यों 3 जी (या 2 जी) के माध्यम से डेटा नहीं भेजा जाता है?
अतिरिक्त जानकारी:
मैं एक फ़ाइल अपलोड की कोशिश नहीं कर रहा हूँ, बल्कि सिर्फ एक सर्वर के लिए एक JSON भेजें।
आपके डिवाइस में ब्लूटूथ डेटा कितना समय मिला ?? – CodeChanger
@CodeChanger एक ऐप हर पांच मिनट या उससे कम समय में ब्लूटूथ से डेटा प्राप्त कर रहा है। मुझे यकीन है कि ब्लूटूथ से डेटा प्राप्त होता है क्योंकि मैं इसे स्थानीय स्क्लाइट डेटाबेस में संग्रहीत करता हूं। – Whirlwind
ठीक है तो 3.0 मिनट ऐप निलंबित होने के बाद मेरे ज्ञान के अनुसार और आपको उस मोड को संभालना होगा और अपनी सेवा को 'bgTask' के साथ कॉल करना होगा। – CodeChanger