संदेश स्थिति कैसे निर्धारित करें (पढ़ें/अपठित)। चैट एक्सएमपीपी प्रोटोकॉल के साथ महसूस किया जाता है।चैट में संदेश स्थिति (पढ़ना/पढ़ना) निर्धारित करने के लिए कैसे?
उत्तर
XEP-0184: संदेश वितरण रसीद प्रेषक को सूचित करते समय उनका संदेश वितरित करने का समर्थन करता है। आप इसे बिल्डिंग ब्लॉक के रूप में उपयोग करने में सक्षम हो सकते हैं, जब तक कि आप मौजूदा ग्राहकों को इन रसीदों को भेजने की अपेक्षा न करें - XEP आज व्यापक रूप से कार्यान्वित नहीं है।
मैंने इस सुविधा को कार्यान्वित किया है और सफलतापूर्वक काम कर रहा है। मैं उलझन में हूं कि संदेश कैसे वितरित या पढ़ा जाए? क्योंकि संदेश स्थिति वितरण को संग्रहीत करने के लिए कोई प्रावधान नहीं है। क्या आप कृपया मुझे सुझाव दे सकते हैं कि मुझे क्या करना है? –
यह कहना मुश्किल है कि एक संदेश वास्तव में पढ़ा गया है या नहीं। यह मौजूदा कारणों में से एक है क्योंकि मौजूदा ग्राहक XEP को लागू नहीं करते हैं। मैं कहूंगा कि संदेश प्रदर्शित करने में सक्षम होने के बारे में यह कहने में सक्षम है कि आप क्या कर सकते हैं। यदि क्लाइंट शीर्ष पर एप्लिकेशन है, जबकि संदेश वाला टैब टैब प्रदर्शित होता है, और संदेश उस स्थिति में स्क्रॉल विंडो के अंदर रहा है, तो शायद यह प्रदर्शित किया गया है। –
मैं तुम्हें प्रदर्शित चैट मार्कर का उपयोग करने, प्रति http://xmpp.org/extensions/xep-0333.html
XMPP एक पढ़ा/अपठित रसीद नहीं है की जरूरत है। प्राप्त होने पर कुछ ऐसा है जो XEP-0184 में लागू किया गया था।
यदि आप पढ़ी रसीदें प्राप्त करना चाहते हैं तो ऑटो संदेश वितरण रसीद भेजने की बजाय, जब भी उपयोगकर्ता उस संदेश को पढ़ता है तो उसे भेजें। प्रत्येक संदेश में यह संबंधित संदेश_आईडी है। पढ़े गए विशेष संदेश के लिए डिलीवरी रसीद भेजने के लिए उस संदेश_आईडी का उपयोग करें। कनेक्शन बनाने के दौरान निम्नलिखित कोड जोड़ें
//message delivery
XMPPMessageDeliveryReceipts* xmppMessageDeliveryRecipts = [[XMPPMessageDeliveryReceipts alloc] initWithDispatchQueue:dispatch_get_main_queue()];
//don't write this line as it will send auto receipts whenever message will be delivered
//xmppMessageDeliveryRecipts.autoSendMessageDeliveryReceipts = YES;
xmppMessageDeliveryRecipts.autoSendMessageDeliveryRequests = YES;
[xmppMessageDeliveryRecipts activate:self.xmppStream];
मैंने अपनी संदेश इकाई में 'चैटस्टैटस' विशेषता जोड़कर इस समस्या को हल किया। प्रेषक के लिए मैंने चैटस्टैटस का मूल्य भेजा, असंतोष, या प्राप्त (अन्य पक्ष द्वारा प्राप्त या नहीं) रखा है। रिसीवर साइड के लिए मैंने मानों को पढ़ने या अपठित के रूप में रखा है (क्या मैंने संदेश पढ़ा है या नहीं, ताकि अपठित संदेश के लिए मैं पढ़ी रसीद भेज सकूं)।
भेजें बटन पर क्लिक करने पर:
//Save to your Message Entity
NSMutableDictionary *m = [[NSMutableDictionary alloc] init];
[m setObject: message_body forKey:@"message_body"];
[m setObject:messageID forKey:@"message_id"];
[m setObject:@"yes" forKey:@"isOutgoing"];
[m setObject:dateString forKey:@"date"];
[m setObject:timeString forKey:@"time"];
[m setObject:[NSDate date] forKey:@"timeStamp"];
[m setObject:yourId forKey:@"from"];
[m setObject:toId forKey:@"to"];
if (!Is_InternetAvailable]) {
[m setObject:unsent forKey:@"chatStatus"];
}
else{
[m setObject:sent forKey:@"chatStatus"];
}
[[CoreDataMethods sharedCoreDataMethods] saveUserMessage:m];
}
cellForRowAtIndexPath में:
if ([message isoutGoing]) {//If I have sent the message
// Mine bubble
if ([[messageDict valueForKey:@"chatStatus"] isEqualToString:unsent]) {
//set unsent image
}
else if ([[messageDict valueForKey:@"chatStatus"] isEqualToString:sent]){
//set sent image
}
else if ([[messageDict valueForKey:@"chatStatus"] isEqualToString:received]){
//set Received Image
}
}
else{
// Other Bubble , Notify them that you have read the message if it is unread/new message
if ([[messageDict valueForKey:@"chatStatus"] isEqualToString:unread]) {
//send read receipt
NSXMLElement *receivedelement = [NSXMLElement elementWithName:@"received" xmlns:@"urn:xmpp:receipts"];
NSXMLElement *message = [NSXMLElement elementWithName:@"message" xmlns:@"jabber:client"];
[message addAttributeWithName:@"to" stringValue:toId];
[message addAttributeWithName:@"from" stringValue:fromID];
[receivedelement addAttributeWithName:@"id" stringValue:[messageDict valueForKey:@"message_id"]];
[message addChild:receivedelement];
//XMPPMessage *generatedReceiptResponse = [[messageDict valueForKey:@"xmppMessage"] generateReceiptResponse];
[[[kAppDelegate xmppHandler] xmppStream] sendElement:message];
// update message entity
[self updateChatStatus:read withMessageID:[messageDict valueForKey:@"message_id"]];
}
}
और अंत में जब आप didReceiveMessage में डिलीवरी रसीद प्राप्त करते हैं, प्राप्त
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message{
if ([message hasReceiptResponse]) {//message read
//Update database message entity
[self updateChatStatus:@"received" withMessageID:[message receiptResponseID]];
}
}
को chatStatus अद्यतन आप अपनी आवश्यकता के अनुसार चैटस्टैटस के मान सेट कर सकते हैं। असंतोष संदेशों के लिए मैंने इसे भेज दिया है जैसा कि प्रेषित प्रतिनिधि प्रतिनिधि में भेजा गया है।
नोट: मेरे ऐप में मुझे केवल पढ़ने, भेजा और अनसेट स्थिति दिखाना था, डिलीवर की स्थिति नहीं। यदि आप डिलीवरी की स्थिति भी दिखाना चाहते हैं, तो ऑटोसेन्ड मैसेज डिलीवरी रीसेप्ट्स पर टिप्पणी न करें और जब भी संदेश पढ़े जाते हैं तो IQ Stanza को डिलीवरी रसीद के बजाय प्रेषक को भेजें और उसके अनुसार चैटस्टैटस को बदलें।
यह केवल मूल विचार है, आप इसे अपनी आवश्यकता के अनुसार उपयोग कर सकते हैं।
उम्मीद है कि यह मदद करता है !!
- 1. लोगों के बीच चैट संदेश संग्रहीत करने के लिए डेटाबेस डिज़ाइन
- 2. Google ऐप स्क्रिप्ट से चैट संदेश भेजना
- 3. कैसे डिबग करने के लिए संदेश
- 4. ठीक करने के लिए कैसे सबवर्सन स्थिति
- 5. डेल्फी में फेसबुक चैट?
- 6. स्काइप 4COM के साथ स्काइप में समूह चैट में संदेश कैसे भेजूं?
- 7. एंड्रॉइड के लिए चैट एप्लिकेशन कैसे कार्यान्वित करें?
- 8. कैसे एंड्रॉयड में लगातार/नियमित समय निर्धारित करने के लिए?
- 9. पोस्टस्क्रिप्ट में स्ट्रिंग ऊंचाई निर्धारित करने के लिए कैसे?
- 10. जावास्क्रिप्ट में साइट पर समय निर्धारित करने के लिए कैसे?
- 11. ओपनफायर बनाम ejabberd ग्राहक सेवा चैट के लिए पूर्ण चैट समाधान के लिए विकसित
- 12. ब्राउज़र में चैट कैसे काम करता है?
- 13. चैट के लिए कई AJAX अनुरोधों को कैसे कम करें?
- 14. ईथरनेट II फ्रेम की लंबाई निर्धारित करने के लिए कैसे?
- 15. कोको में वॉयस चैट कैसे कार्यान्वित करें?
- 16. चैट में उपयोगकर्ता "टाइपिंग" फ़ंक्शन
- 17. कैसे grails कॉन्फ़िगर करने के लिए हमेशा स्थिति 500
- 18. जावास्क्रिप्ट चैट क्लाइंट के लिए सर्वर मतदान अंतराल
- 19. एक निर्धारित स्थिति में दृश्य को कैसे बढ़ाया जाए?
- 20. UIToolbar में UIBarButtonItem की स्थिति कैसे निर्धारित करें?
- 21. स्ट्रिंग के आकार को निर्धारित करने के लिए, और इसे
- 22. वेब चैट संदेश प्राप्त करते समय ध्वनि चलाएं
- 23. (पीई) कर्ल में HTTP स्थिति संदेश कैसे प्राप्त करें?
- 24. socket.io चैट
- 25. अतिरिक्त जेएस संदेश बॉक्स स्थिति
- 26. विनिमय दर निर्धारित करने के लिए एल्गोरिदम
- 27. यह निर्धारित करने के लिए कि क्या एंड्रॉइड ऐप अधिसूचना संदेश से खुलता है?
- 28. कैसे अंतराल अंतराल JQuery प्रयोग करने के लिए एक मूल्य निर्धारित करने के लिए कैसे JQuery
- 29. वेबस्केट लेखन डीबग संदेश को अक्षम करने के लिए कैसे करें
- 30. एक्सएमपीपी - चैट रूम से अंतिम एन संदेश पुनर्प्राप्त करें
क्या आप इस मामले में सफल हुए हैं? मैं अपने आप को उत्सुक हूं कि इसे कैसे करें –
मैं यह भी उत्सुक हूं कि इसे कैसे करें ... – Sirius
यदि कोई इसमें सफल है तो कृपया कुछ जानकारी साझा करें @ डीनिप्रेलिया – juned