मेरी ऐप आवश्यकता: मुझे कुछ कारणों से पुश अधिसूचना (एपीएन) का उपयोग किये बिना सर्वर पुश पर स्थानीय अधिसूचना को ट्रिगर करने के लिए सॉकेट कनेक्शन बनाए रखना चाहिए। इसलिए मैं सॉकेट कनेक्शन को बनाए रखने के लिए आईफोन की वीओआईपी पृष्ठभूमि क्षमता का उपयोग कर रहा हूं।पृष्ठभूमि में वीओआईपी सॉकेट कनेक्शन कैसे बनाए रखें?
1. पृष्ठभूमि में चलाने के लिए सॉकेट कनेक्शन को जारी रखने के लिए मैंने वीओआईपी के लिए एक स्ट्रीम कॉन्फ़िगर किया है, तो टाइमआउट मान को सेट करना चाहिए? टाइमआउट समाप्त होने के बाद सॉकेट कनेक्शन समाप्त हो जाएगा? मैं अपने आवेदन को हर समय सॉकेट सुनने के लिए कैसे बना सकता हूं।
[[UIApplication sharedApplication] setKeepAliveTimeout:86400 handler:^(void)
{
if (inputStream)
[inputStream close];
if (outputStream)
[outputStream close];
urlStr = @"http://192.168.0.108";
website = [NSURL URLWithString:urlStr];
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)[website host], 1234, &readStream, &writeStream);
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType] ;
[outputStream setDelegate:self];
[outputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType] ;
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
}];
3. अपने सर्वर पुन: प्रारंभ और एप्लिकेशन कहते हैं:
ग्राहक धारा विन्यास इस प्रकार
NSString *urlStr = @"http://192.168.0.108";
NSURL *website = [NSURL URLWithString:urlStr];
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)[website host], 1234, &readStream, &writeStream);
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
NSInputStream *inputStream = (NSInputStream *)readStream;
NSOutputStream *outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType] ;
[outputStream setDelegate:self];
[outputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType] ;
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
2. मैं हैंडलर applicationDidEnterBackground में धारा फिर से कनेक्ट करना चाहिए है, पृष्ठभूमि में है, मैं कनेक्शन कैसे सुनिश्चित करूं? यदि मेरे आईफोन में वाई-फाई कनेक्शन या यदि मैं सर्वर ऐप को समाप्त करता हूं तो कनेक्शन बंद हो जाएगा, तो मेरे ऐप को उम्मीद के अनुसार काम करने के लिए मुझे क्या उपाय करना चाहिए?
कोड जो आपने यहां शामिल किया है, क्या यह कार्य कोड है? –