2013-02-25 60 views
5

हम एक वीओआईपी आवेदन पर काम कर रहे हैं, जब मेरा आवेदन पृष्ठभूमि हो जाता है, मैं सेटकिपअलीवटाइमआउट: हैंडलर का उपयोग करने की कोशिश कर रहा हूं: कनेक्शन को जिंदा रखने के लिए। सेब प्रलेखन के अनुसार, वे टाइमआउट के रूप में न्यूनतम 600 सेकंड देने के लिए कहते हैं। असल में हम कम टाइमआउट मूल्य बनाए रखते हैं, क्या कम समय के साथ संभालना संभव है?setKeepAliveTimeout का उपयोग कैसे करें: हैंडलर - आईओएस?

और, कैसे टाइमर रीसेट या अधिक समय तो यह है कि मैं अपने कनेक्शन alway जिंदा (आने वाली कॉल प्राप्त करने के लिए) रख सकते अनुरोध करने के लिए हैंडलर का उपयोग करने के लिए बाहर समय हिट तो क्या होगा?

यहाँ मैं क्या कर रहा हूँ ...

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    BOOL backgroundAccepted = [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }]; 
    if (backgroundAccepted) 
    { 
     NSLog(@"VOIP backgrounding accepted"); 
    } 
} 




- (void)backgroundHandler { 

    NSLog(@"### -->VOIP backgrounding callback"); // What to do here to extend timeout? 
} 

उत्तर

2

Apple के प्रलेखन से है:

The minimum acceptable timeout value is 600 seconds. 

संपादित अपनी टिप्पणी के बारे

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

+0

क्या आपको कोई विचार है कि वीओआईपी एप्लिकेशन के लिए टाइमआउट हैंडलर को कैसे संभालना है। मैं सर्वर से जुड़े रहना चाहता हूं और इनकमिंग कॉल अधिसूचना प्राप्त करना चाहता हूं? – Newbee

+0

हम वीओआईपी कनेक्शन के रूप में सामान्य सी ++ सॉकेट (नहीं उद्देश्य सी सॉकेट-NSstream) का उपयोग कर सकते हैं। यदि हां, क्या आप मुझे सही दिशा में इंगित कर सकते हैं कि यह कैसे करें? – Newbee

+1

[एप्पल] (http://developer.apple.com/library/ios/#documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SocketsAndStreams/SocketsAndStreams.html) प्रलेखन से: "आईओएस में, POSIX नेटवर्किंग हतोत्साहित किया जाता है"। हालांकि, अगर आप कठिन तरीके से जाना चाहते हैं, तो आप कोशिश कर सकते हैं। आप केवल ObjC से बचना चाहते हैं और सी-बाइंडिंग के साथ खुश हैं, [CFNetwork] (https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html) का उपयोग करें। – Matthias