मैं MultipeerConnectivity एप्पल फ्रेमवर्क के साथ काम कर रहा हूं कनेक्शन, विज्ञापनदाता और ब्राउज़र अब तक बहुत अच्छी तरह से काम करने लगता है लेकिन मुझे लगता है कि जब मेरा कोई सत्र किसी पीयर से जोड़ता है, तो किसी भी कारण से यह मेरे डिस्कनेक्ट हो जाता है, क्योंकि मेरा MCNearbyServiceBrowser
अभी भी यह खोजता है कि वह मौजूद नहीं है अब और। स्पष्ट रूप से एमसीएस सत्र
सहकर्मी के साथ एक कनेक्टेड नहीं स्थिति की रिपोर्ट करता है
क्या किसी के पास यह क्यों हो रहा है की एक अवधारणा है?
मैंने अपने एमसी हैंडलर वर्ग में dealloc विधि को इस तरह से ओवरराइड कर दिया है:
- (शून्य) डेलोक {[स्वयंसेवा डिस्कनेक्ट]; Self.peerId = शून्य; Self.session = शून्य; Self.browser = शून्य; स्वयं। विज्ञापनदाता = शून्य; Self.session.delegate = nil; Self.browser.delegate = शून्य; Self.advertiser.delegate = शून्य; }
और मेरे पास एक फाड़ डालने का तरीका भी है:
- (शून्य) टीडाउनसेवा {{स्वयंसेजन डिस्कनेक्ट]; Self.session = शून्य; स्वयं। विज्ञापनदाता = शून्य; Self.browser = शून्य; Self.session.delegate = nil; Self.browser.delegate = शून्य; Self.advertiser.delegate = शून्य; }
यह समस्या सभी उपकरणों के साथ होती है
मुझे ऐप्पल देव फ़ोरम में एक बहुत ही उपयोगी उत्तर मिला।
यहाँ।
असल में इस समस्या का हल क्या MCPeerID
रीसाइक्लिंग कर रहा था। जब ऑब्जेक्ट बनाया जाता है तो मैं इसे सीरियल कर देता हूं और NSUserDefaults
में संग्रहीत करता हूं। और कभी भी मुझे इसकी ज़रूरत होती है, जैसे जब मैं सेवा को फाड़ देता हूं और इसे फिर से शुरू करता हूं, तो मैं संग्रहीत वस्तु पर जाता हूं और एक नया एक बनाने के बजाय इसका इस्तेमाल करता हूं
आप ऊपर दिए गए लिंक में अगला उदाहरण कोड पा सकते हैं:
- (MCPeerID *) पीअरआईडी {यदि (! _peerID) {_peerID = [MyClassName getRecycledPeerID]; } वापसी _पीयरआईडी; } + (MCPeerID *) getRecycledPeerID {NSUserDefaults * defaults = [NSUserDefaults मानक यूज़र डीफॉल्ट]; // अगर पीअर आईडी मौजूद है, तो इसका इस्तेमाल करें; अन्य अगर एक बनाते हैं ([defaults objectForKey: krecYCLED_PEER_ID]) {NSData * peerIDData = [डिफ़ॉल्ट डेटाफ़ोरी: क्रिएकैलेड_PEER_ID]; वापसी [एनएसकेईएडअंगारिर्क अनर्गिव ऑब्जेक्ट विदडेटा: पीअरआईडीडेटा]; } और {वापसी [[एमसीपीईआरआईडी एलोक] initWithDisplayName: [UIDevice currentDevice] .name]; }}
Comments
Post a Comment