2015-12-25 5 views
10

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

क्या परिदृश्य का परीक्षण करने का कोई तरीका है जहां सिम्युलेटर में फ़ोन से वॉच डिस्कनेक्ट हो गया है?

यदि नहीं, तो क्या कुछ दस्तावेज या एक अच्छी तरह से शोध ब्लॉग पोस्ट है जो इस मामले में WCSession के व्यवहार में कुछ अंतर्दृष्टि देता है?

उत्तर

3

आईफोन सिम्युलेटर छोड़ने से आपको इस परिदृश्य का अनुमान लगाना चाहिए।

+0

अच्छा विचार! सिम्युलेटर छोड़ने के बाद मैं वास्तव में आईफोन को डेटा भेजने में असमर्थ हूं। हालांकि, 'session.reachable' अभी भी घड़ी पर 'सत्य' है और' sendMessage (...) 'के' त्रुटि हैंडलर 'में प्राप्त त्रुटि' कोड = 7001 "अज्ञात घड़ी कनेक्टिविटी त्रुटि है।" W/अंतर्निहित त्रुटि 'कोड = 23' का समय समाप्त हो गया "'। क्या आईफोन पहुंच में नहीं है जब आप घड़ी पर क्या मिलता है? – fabian789

+0

यह एक संभावित त्रुटि है, लेकिन केवल तभी जब आप एक छोटी सी छोटी दौड़ मारते हैं। अन्य संभावना है कि एक पहुंच योग्य त्रुटि नहीं है (मुझे विश्वास है कि 7007)। – ccjensen

+0

ठीक है। 'WCError.h' के मुताबिक, यह वास्तव में 7007 है। लेकिन आमतौर पर, जब आईफोन डिस्कनेक्ट होता है तो' session.reachable' 'false' होगा? – fabian789

2

मुझे लगता है कि इतने इसके संभावित क्योंकि एप्पल डॉक कहते हैं न,

साथ ही, WatchKit क्षुधा, क्योंकि वे दोनों सिम्युलेटर में चल रहे हैं नकली मेजबान डिवाइस के लिए एक विश्वसनीय कनेक्शन है।

एप्पल आप एक यदि क्वेरी का उपयोग करना चाहिए Simulator User Guide

+0

दिलचस्प लिंक, धन्यवाद! हालांकि, मेरी राय में, यह संभावना को पूरी तरह से बाहर नहीं करता है कि मेरे परिदृश्य को अनुकरण करने के लिए _some_ तरीका है! – fabian789

1

के इस हार्डवेयर में अंतर खंड उल्लेख किया है, कि क्या iPhone एक शौचालय का अनुरोध शुरू करने से पहले पहुंचा जा सकता है: क्या आप परीक्षण करना चाहते हैं

if (WCSession.defaultSession().reachable) { 

    //do your request here 

} else { 

    //handle non-reachability 

} 

गैर-पहुंच योग्यता पर आपके ऐप की प्रतिक्रिया WCSession.defaultSession().reachable को false के साथ प्रतिस्थापित करें।

+0

इनपुट के लिए धन्यवाद, लेकिन मेरा मतलब है कि मेरे कोड का परीक्षण करने के अर्थ में "परीक्षण", पहुंचने योग्यता _in_ कोड के लिए परीक्षण कैसे करें :) – fabian789

1

मैं समझता हूं कि आप वास्तव में एक परीक्षण परिदृश्य चाहते हैं।

लेकिन संचार के लिए आप किस दिशा का परीक्षण करना चाहते हैं? यदि आप WCSession के दस्तावेज़ों की जांच करते हैं तो यह हमेशा घड़ी और आईओएस डिवाइस के व्यवहार को बताता है।

इसके अलावा, 'डिस्कनेक्ट' के साथ आपका क्या मतलब है?

आप WCSession.defaultSession().reachable लेकिन दस्तावेज़ राज्यों

iOS पर जांच कर सकते हैं मूल्य हाँ है जब बनती एप्पल घड़ी सीमा में है और जुड़े घड़ी एप्लिकेशन को अग्रभूमि में चल रहा है।

आप paired के लिए जांच सकते हैं, लेकिन आपको watchAppInstalled के लिए भी जांच करनी होगी।

मुझे विश्वास है कि सभी संचार असीमित है। आप के रूप में

- (void)sendMessageData:(NSData *)data 
    replyHandler:(void (^)(NSData *replyMessageData))replyHandler 
    errorHandler:(void (^)(NSError *error))errorHandler 

में मुझे लगता है कि यह एक सिम्युलेटर पर यह परीक्षण करने के लिए संभव नहीं है अपने errorHandler: कोड की जांच करना चाहते हैं। आप केवल अपनी त्रुटि की प्रतिलिपि बना सकते हैं हैंडलर कोड अस्थायी रूप से जवाब देने के लिए हैंडलर को जवाब देने के लिए।

यहाँ कोड मैं उपलब्धता के परीक्षण के लिए उपयोग करते हैं:

if WCSession.isSupported() { 
    let session = WCSession.defaultSession() 
    session.delegate = _modelController 
    session.activateSession() 
    _modelController!.transferArrayToWatchWithSession() 
} 

और _modelController

func transferArrayToWatchWithSession() { 
    let session = WCSession.defaultSession() 
    if WCSession.isSupported() && session.watchAppInstalled { 
     session.transferUserInfo([kWatchControlsDictKey:self.verifiedWatchArray]) 
    } else { 
     log.info(....") 
    } 
} 
+0

मैं असली दुनिया परिदृश्य का परीक्षण या "अनुकरण" करना चाहता हूं जहां आईफोन नहीं है घड़ी के करीब और देखें कि 'वॉच कनेक्टिविटी' एपीआई तब कैसे व्यवहार करती है। – fabian789

0

भीतर iPhone सिम्युलेटर से बाहर निकलें, जबकि एप्पल घड़ी सिम्युलेटर चल रहा है विशिष्ट राज्य को प्राप्त होता है कि आप वर्णन करें ... एक वास्तविक ऐप्पल वॉच के साथ, जब आप आईफोन सिम्युलेटर छोड़ते हैं तो वॉच सिम्युलेटर स्क्रीन के शीर्ष पर एक फोन डिस्कनेक्ट आइकन दिखाएगा। नीचे छवि देखें।

विचार करने के लिए एक और राज्य है, जो कि WCSession केवल दो ऐप्स दोनों अग्रभूमि में संवाद कर सकते हैं। इसलिए, आपको उस परिदृश्य का भी परीक्षण करना चाहिए जहां घड़ी और आईफोन जुड़े हुए हैं (दोनों सिमुलेटर चल रहे हैं) लेकिन आईफोन ऐप अग्रभूमि में नहीं है। (और इसी तरह, वॉच कनेक्ट होने पर अग्रभूमि में आईफोन ऐप के साथ, लेकिन वॉच ऐप अग्रभूमि में नहीं है।) Apple Watch Simulator with disconnected iPhone Simulator

+0

दुर्भाग्य से यह मेरे लिए एक्सकोड 8 में काम नहीं कर रहा प्रतीत होता है। इसके अतिरिक्त, पृष्ठभूमि में आईफोन ऐप के बारे में थोड़ा गलत है; आईफोन ऐप को पृष्ठभूमि में होने के साथ संवाद किया जा सकता है, लेकिन घड़ी ऐप नहीं। –

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