2012-02-07 15 views
6

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

मेरा ऐप, पृष्ठभूमि में रहते हुए, एक्सएमपीपी से 50 मिनट या उससे भी अधिक समय तक रहता है, फिर यह डिस्कनेक्ट हो जाता है। मैं ऐप को कभी भी डिस्कनेक्ट नहीं करना चाहता, मैंने ढांचे को देखा लेकिन मुझे इस व्यवहार को ठीक करने के लिए जगह नहीं मिल रही है। क्या आपको पता है कि "अनिश्चितता से जुड़े रहना संभव है?" यदि हां, तो मुझे xmppframework में कौन सी सेटिंग्स बदलनी होंगी।

धन्यवाद

[संपादित करें] 50mins उपयोगकर्ता अभी भी XMPP से जुड़ा है, लेकिन यह XMPPRooms यह conected था की डिस्कनेक्ट है के बाद। एक और रन पर यह 3 घंटों के लिए जुड़ा हुआ था, जब आईफोन कनेक्ट होता है तो यह लगातार नहीं लगता है।

+0

यदि यह केवल XMPPRooms से डिस्कनेक्ट हो गया है, तो हो सकता है कि बैक-एंड पर बनाए गए आपके सत्रों के साथ ऐसा कुछ हो सकता है जो पिछले 50 मिनट तक रहता है। – tipycalFlow

+0

मैंने अपना सर्वर यहां सेट किया है: _Do उन ग्राहकों को डिस्कनेक्ट न करें जो idle._ आपकी सेटिंग का क्या अर्थ है? – subharb

+0

मेरा मतलब कमरे के लिए सत्र था, अगर वे उपयोगकर्ता सत्र से अलग हैं। आपने अपने संपादन में उल्लेख किया है कि उपयोगकर्ता सत्र बनाए रखा गया है लेकिन XMPPRooms डिस्कनेक्ट हैं – tipycalFlow

उत्तर

0

यह सुनिश्चित करने के लिए कि आपका एप्लिकेशन भेज सकें और जीवित संदेश प्राप्त कर सकें, इसे एक वीओआईपी ऐप होना चाहिए और एक वीओआईपी सॉकेट का उपयोग करना चाहिए। Apple's Documentation से:

  1. को अपने ऐप्लिकेशन के Info.plist फ़ाइल के लिए UIBackgroundModes कुंजी जोड़ें। इस कुंजी का मान उस सरणी में सेट करें जिसमें वीओआईपी मान शामिल है।
  2. वीओआईपी उपयोग के लिए ऐप के सॉकेट में से किसी एक को कॉन्फ़िगर करें।
  3. पृष्ठभूमि में जाने से पहले, setKeepAliveTimeout को कॉल करें: हैंडलर: समय-समय पर निष्पादित करने के लिए एक हैंडलर स्थापित करने के लिए विधि। आपका ऐप इस सेवा कनेक्शन को बनाए रखने के लिए इस हैंडलर का उपयोग कर सकता है।

सॉकेट के लिए के रूप में:

NSInputStream और NSOutputStream: धारा को NSStreamNetworkServiceType संपत्ति जोड़ने के लिए विधि: forKey: कोको धाराओं के लिए, setProperty का उपयोग करें। इस संपत्ति का मूल्य NSStreamNetworkServiceTypeVoIP पर सेट होना चाहिए।

संबंधित मुद्दे