2016-04-14 6 views
7

रिकॉर्ड नहीं कर रहा हूं मैं एक्सएमपीपी आवेदन में काम कर रहा हूं। जब मैं अपने आवेदन को समाप्त और मारता हूं,एक्सएमपीपी ऐप समाप्त हो गया है और संदेश

1) उपयोगकर्ता XMPP सर्वर में कनेक्ट नहीं है। उपयोगकर्ता ऑफ़लाइन है। लेकिन मैं चाहता हूं कि उपयोगकर्ता कनेक्ट हो और ऑनलाइन हो। व्हाट्स ऐप (एप्लासिक) की तरह।

2) मैं उस समय XMPP सर्वर साइड से कोई संदेश नहीं मिल सकता है,

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 

इस विधि फोन नहीं है। तो, मैं संदेश कैसे प्राप्त कर सकता हूं?

और मैं भी Pushnotification लगा देंगी, लेकिन इस तरह से एक ही मुद्दे की तरह, जब एप्लिकेशन को मारने और से बर्खास्त किया जाता है में, इस विधि फोन नहीं है,

- (void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 

तो, कृपया मुझे उचित तरीके से गाइड है और मुझे सुझाएँ कैसे एक ही व्हाट ऐप (एप्लिकेशन) की तरह काम करने के लिए।

इसके अलावा, हम वीओआईपी फ्लैग इन .plist फ़ाइल सेट नहीं कर सकते हैं क्योंकि इस तरह से सेब द्वारा उचित और अस्वीकार नहीं किया गया है।

मेरा लक्ष्य केवल वही ऐप जैसा ही अधिसूचना कार्य है।

उत्तर

2

सबसे पहले, अपने आवेदन तो समाप्त होने पर आप Push Notification डेटा

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

में launchOptions शब्दकोश में कुंजी

if (launchOptions) 
    { 
     if ([launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) 
     { 
     // Your code 
     } 
    } 

दूसरा साथ प्राप्त होगा, आप पृष्ठभूमि का उपयोग कर सकते उपयोगकर्ता के संदेश को पुन: प्राप्त करने के लिए लाने के , पृष्ठभूमि प्राप्त करते समय आप अपनी स्ट्रीम को कनेक्ट कर सकते हैं और एक्सएमपीपी सर्वर से संदेश प्राप्त कर सकते हैं।

नोट: व्हाट्सएप (आईओएस) संस्करण, जैसे ही आप ऐप खोलते हैं, संदेश भेजता है, यह स्ट्रीम से कनेक्ट हो रहा है और फिर संदेशों को प्राप्त करता है।

हालांकि आप अपनी कार्यक्षमता को अनुकूलित करने के लिए अपना तर्क लागू कर सकते हैं।

2

यह link देखें और Remote Notifications (iOS 7 and Greater) अनुभाग पढ़ें जो ऐप लॉन्च करने से पहले सामग्री डाउनलोड करने के लिए Background Modes and Remote notifications को जोड़ रहा है।

आपको यह विचार मिलेगा और आप अपनी पसंदीदा भाषा ओबीजे-सी या स्विफ्ट में कार्यान्वित कर सकते हैं।

2

निम्नलिखित दस्तावेज़ पढ़ें यह आपकी मदद करेगा। http://xmpp.org/extensions/xep-0168.html

हम प्राथमिकता जोड़ने के लिए जब उपयोगकर्ता की उपस्थिति के रूप में नीचे सेट किया गया है नेड:

-(void)GoOnline{ 

XMPPPresence *goOnline = [XMPPPresence presence]; 
NSXMLElement *priority = [NSXMLElement elementWithName:@"priority" stringValue:@"-1"]; 
[goOnline addChild:priority]; 
[xmppStream sendElement:goOnline]; 
} 

अब प्राथमिकता के बारे में अधिक जानने के लिए, यह भूमिका है और यह कैसे काम करता है, ऊपर के लिंक से दस्तावेज़ पढ़ें।

यह आप मदद कर सकते हैं उम्मीद है कि :)

5

1) उपयोगकर्ता XMPP सर्वर में जुड़ा हुआ नहीं है। उपयोगकर्ता ऑफ़लाइन है। लेकिन मुझे उपयोगकर्ता कनेक्ट और ऑनलाइन चाहिए। व्हाट्स ऐप (एप्लासिक) की तरह।

एक बार जब आप बंद या कम से कम WhatsApp उपयोगकर्ता ऑफ़लाइन (iPhone4s पर परीक्षण) हो जाता है, और संदेश इस राज्य में प्राप्त पुश सूचनाओं के रूप हैं।

2) मैं XMPP सर्वर साइड से कोई संदेश उस समय नहीं मिल सकता है,

  • (शून्य) xmppStream: (XMPPStream *) इस didReceiveMessage: (XMPPMessage *) संदेश

यह विधि केवल तभी कॉल की जाती है जब एप्लिकेशन सक्रिय होता है। तो आप अपने आवेदन को मारने के बाद यहां संदेश नहीं प्राप्त कर सकते हैं।

- (void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 

इस विधि निम्न परिदृश्यों

  1. यदि आपका ऐप सक्रिय है और आप किसी भी नए पुश अधिसूचना मिल गया में कहा जाता हो जाएगा।
  2. यदि आपका ऐप पृष्ठभूमि में है या मारे गए हैं या शुरू नहीं किया गया है, तो सिस्टम शीर्ष बार पर केवल अधिसूचना दिखाएगा, जब उपयोगकर्ता अधिसूचना पर टैप करेगा तो यह आपके आवेदन को खोल देगा और फिर विधि कॉल की जाएगी।

और निश्चित रूप से आप वीओआईपी का उपयोग नहीं कर सकते हैं।

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

  1. यदि उपयोगकर्ता सक्रिय है तो ऐप में अपनी कस्टम सूचना दिखाएं।
  2. यदि उपयोगकर्ता निष्क्रिय है (यानी मारे गए या कम से कम ऐप) तो सिस्टम अधिसूचना केंद्र में अधिसूचना दिखाएगा।

उपयोगकर्ता अधिसूचना पर टैप करता है, तो सिस्टम आवेदन शुरू होगा, और आप एप्लिकेशन को लॉन्च करने की स्थिति (जिसमें से स्रोत अनुप्रयोग का शुभारंभ किया) और शर्तों के शामिल होने के अनुसार सर्वर/चैट (या समूहों के लिए जाँच करने के लिए आप समूह चैट उपयोग कर रहे हैं है)।

एक बार जब आप अपने नाम/उपनाम के साथ सर्वर में शामिल हो जाते हैं, तो आपको हाल ही की चैट मिल जाएगी। आप इतिहास भी प्राप्त कर सकते हैं, आपको चैट सर्वर/समूह में शामिल होने के दौरान निर्दिष्ट करने की आवश्यकता है।

सुनिश्चित करें कि आप सर्वर से और समूह से भी डिस्कनेक्ट कर रहे हैं जब आपका ऐप कम या कम हो रहा है। डिस्कनेक्ट करने के लिए निम्न विधियों का उपयोग करें और/या संबंधित परिवर्तन

1. - (void)applicationDidEnterBackground:(UIApplication *)application 
2. - (void)applicationWillTerminate:(UIApplication *)application 

आशा यह आप में मदद मिलेगी, मैं WhatsApp के रूप में की उम्मीद परिणाम प्राप्त करने के लिए एक ही लागू किया है।

4

जब आपका ऐप मारता है, उस समय एक्सएमपीपी सभी सेवा को निष्क्रिय करता है। इसलिए, आप सर्वर पर webservice भेज सकते हैं जो बता सकता है - आप ऑफ़लाइन हैं।

फिर सेवर के बाद आप सभी चैट सामग्री को पुश अधिसूचना भेज सकते हैं।

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