पुश अधिसूचना द्वारा शुरू किया गया जब डिबगिंग ऐप


135

मैं वर्तमान में एक ऐप विकसित कर रहा हूं जो पुश सूचनाएं प्राप्त करता है। मेरे पास PHP पृष्ठ के माध्यम से यह सब 100% काम कर रहा है। मेरे ऐप द्वारा प्राप्त की जा सकने वाली पुश सूचनाएँ कई प्रकार की हैं। PHP इसे संभालती है और मेरे ऐप को सूचना के विभिन्न पैकेट भेजती है जो सभी ठीक-ठाक प्राप्त होते हैं।

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

मेरे पुश प्रकारों में से एक UIView को खोलने के लिए माना जाता है जो कई अलग-अलग सर्वरों के लिए कई कनेक्शन बनाता है और डेटा को आगे-पीछे करता है। उदाहरण के लिए, मुख्य मेनू से ट्रिगर होने पर, यह UIView ठीक काम करता है - हालाँकि जब मेरा पुश नोटिफिकेशन इस UIView को प्रदर्शित करने के लिए ट्रिगर कर रहा है, तो सॉकेट कनेक्शन अपेक्षित रूप से कार्य नहीं कर रहे हैं।

अब मेरा सवाल सॉकेट्स के बारे में नहीं है, बल्कि और भी बहुत कुछ है - आप इस तरह की समस्या को कैसे दूर करेंगे? जब मैं एक पुश अधिसूचना से लॉन्च किए गए एप्लिकेशन (मैं अपेक्षाकृत नया हूं) से क्या बता सकता हूं कि उस निष्पादन को डीबगर / कंसोल / आदि से लिंक करने का कोई तरीका नहीं है ... मुझे कोड का उपयोग करके कोड को डीबग करने का बहुत कठिन समय आ रहा है UIAlertViews, क्योंकि विभिन्न सर्वरों के बीच आगे-पीछे संचार की कई लाइनें हैं।

मेरे लिए आपके पास किसी भी सलाह की बहुत सराहना की जाएगी।

जवाबों:


147

XCode <4.0 (XCode> = 4 के लिए, नीचे दिए गए वायरस द्वारा उत्तर देखें) में, आप डिबगर के माध्यम से ऐप लॉन्च करने के बजाय, ऐप लॉन्च करने के बाद डिबगर को ऐप में संलग्न करने के लिए कॉन्फ़िगर कर सकते हैं। इससे आप अपने एप्लिकेशन की लॉन्च स्थिति, जैसे URL योजना, पेस्टबोर्ड, और पुश सूचनाओं के आधार पर अलग-अलग चीज़ों को डीबग कर सकते हैं।

  1. सोर्स बार में Xcode लुक में, और टार्गेट्स के नीचे Executables होंगे।
  2. निष्पादकों में अपने एप्लिकेशन के लिए निरीक्षक को लाएँ।
  3. इंस्पेक्टर में डीबगिंग टैब टैब पर क्लिक करें।
  4. "डिबगर शुरू करने के बाद निष्पादन योग्य शुरू करें" को अनचेक करें
  5. "अगले लॉन्च / पुश अधिसूचना की प्रतीक्षा करें" जांचें

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


37
मुझे पता है कि यह उचित नहीं हो सकता है, लेकिन मैं तुमसे प्यार करता हूँ। :)
डच ४३२

17
जब आप इस तरह से लॉन्च करते हैं तो आपके एप्लिकेशन का स्टड, स्टडआउट, स्टडर्र को जीडीबी के कंसोल में रूट नहीं किया जाता है, तो उन्हें इंगित किया जाता है कि वे सामान्य ऐप लॉन्च में कहां हैं। आप आयोजक में डिवाइस को देखकर डिवाइस के सिस्टम कंसोल में NSLog () देख सकते हैं।
लुइस गेरबर्ग

1
आपने मुझे यहां कुछ बहुत ही मूल्यवान बिंदु सिखाए हैं। धन्यवाद। मैंने पिछले 2 दिनों को कुछ डिबग करने की कोशिश में बिताया जो मैं आपके पोस्ट के 20 मिनट के भीतर ठीक करने में सक्षम था।
डचेजी ४३२

1
@stigi यूआरएल योजनाओं के परीक्षण के लिए मेरे लिए सिम्युलेटर में काम करता है। मैं xcode 4.5 का उपयोग कर रहा हूँ अगर यह मायने रखता है
dreyln

1
@dreyln मेरी टिप्पणी 2009 से थी :) के बाद से बहुत कुछ बदल गया है। लेकिन सिर के लिए धन्यवाद!
स्टिगी

124

Xcode 4 के लिए आपको निम्न करना होगा:

  1. "स्कीम्स" ड्रॉपडाउन के माध्यम से अपनी सक्रिय योजना को संपादित करें। ( + <)
  2. बाईं ओर अपना उत्पाद चुनें - 'Run MyApp.app'।
  3. दाईं ओर 'जानकारी' टैब चुनें।
  4. और अंत में "Wait to MyApp.app to launch" विकल्प चुनें।

अधिक यहाँ में खंड "अनुकूलित निष्पादन योजना संपादक में"।

EDIT:
यदि आप GDB में लॉग्स को याद करते हैं, तो उसके जवाब में लुई जेरबार्ग की टिप्पणी देखें ।


1
मैं लायन के लिए Xcode 4.2 के साथ हूं, हालांकि ऐप URL स्कीम से सही तरीके से लॉन्च हो रहा है और डिबगर निष्पादन बंद नहीं हो रहा है, कंसोल कुछ भी नहीं दिखा रहा है। क्या मैं कुछ भूल रहा हूँ?
लोहानी

@ यहाँ वही, क्या आपने कभी पता लगाया कि क्यों?
डेविस

3
@ देवदानी, डेविस जी .: क्या आपने लुईस की टिप्पणी को स्वीकृत उत्तर पर देखा है? stackoverflow.com/questions/1239000/… जब इस तरह से लॉन्च किया जाता है, तो स्टडिन / आउट / इरेट कंसोल में रीडायरेक्ट नहीं होते हैं।
इवान वूइका

धन्यवाद, आपने मेरा दिन बचाया! एक बग को नाखून देने की कोशिश करना जो केवल तब होता है जब मेरा ऐप एक यूआरएल हैंडलर द्वारा शुरू किया जाता है।
एलियट

@ डल वायरस - XCode 4 के लिए इसे अपडेट करने के लिए धन्यवाद।
Dutchie432

112

XCode 10, 9, 8, 7 और 6 के लिए:

  1. टूलबार पर स्कीम का चयन करें (जिस डिवाइस से आप डिबगिंग कर रहे हैं, उसके बाएं)
  2. एडिट स्कीम चुनें
  3. बाएं पैनल में रन का चयन करें
  4. के लिए लॉन्च विकल्प चुनते हैं प्रतीक्षा शुरू होने की के लिए निष्पादन योग्य
  5. स्कीम एडिटर को बंद करें और अपने XCode प्रोजेक्ट को चलाएं

अब आप सूचना, कस्टम यूआरएल या ऐप आइकन को छूकर लॉन्च कर सकते हैं।


9
इस जवाब ने मुझे बहुत तकलीफ दी, भले ही इसने मुझे आम तौर पर सही रास्ते पर खड़ा किया। स्टेप 3 थोड़ा भ्रामक है। आपको इसे करना होगा, निश्चित रूप से; बाएं पैनल में रन का चयन करें। लेकिन, बहुत समान वैचारिक शब्द के साथ एक चरण 5 भी होना चाहिए: परिणामों की अपेक्षा करने से पहले xcode के रन बटन पर क्लिक करें ... चूंकि शुरुआत में यह मेरे लिए काम नहीं करता था, मैंने अन्य सहकर्मियों से सलाह मांगी ... उन्होंने पूछा मुझे अगर मैंने रन की बात की, तो मैंने हां में जवाब दिया, विकल्प नंबर के बारे में सोचकर। 3 ... वास्तव में, वास्तव में, वास्तव में एक कदम 5 होना चाहिए ...
फ्लोरिन ओडागियू

@FlorinOdagiu अच्छा फोन। जोड़ा गया चरण 5. धन्यवाद!
bgolson

यदि Xcode एक अलग योजना टैब को पुनर्स्थापित करता है, तो लॉन्च विकल्प जानकारी टैब के अंतर्गत स्थित है।
नैट व्हिटकर

3
जब मैं मैन्युअल रूप से ऐप लॉन्च करता हूं तो मुझे डिबगर विंडो में कोई आउटपुट नहीं मिल रहा है।
डीवीडीब्लॉक

3

मैं पुश नोटिफिकेशन के साथ काम नहीं कर रहा हूं, इसलिए मुझे पुश नोटिफिकेशन का सही काम नहीं पता है। हालाँकि, मैं एक पुश सूचना की प्राप्ति की नकल करने की कोशिश करूँगा अपने कार्यक्रम का मुख्य तरीका दिखाओ यदि संभव हो तो एक अधिसूचना पोस्ट की गई थी, या आवेदन कॉल किया था: didFinishLaunchingWithOptions: आवेदन के भीतर UIApplicationDelegate विधिDidFinishLaunching: विधि।

HTH - चीयर्स, डैन


इसके अलावा एक अच्छा विचार है, लेकिन असली चीज़ को डिबग करने के लिए नकल करना हमेशा 2 सबसे अच्छा है! हैप्पी कोडिंग!
डची ४३२

3

Xcode 6 में:

  1. iPhone को मैकबुक से USB से कनेक्ट करें
  2. आइकन पर टैप करके iPhone पर ऐप लॉन्च करें
  3. Xcode मेनू में, Debug>> Attach to Processअपना ऐप चुनें

1
आप इस दृष्टिकोण के साथ महत्वपूर्ण लॉन्च पथ को डीबग करने में सक्षम नहीं होंगे।
ज़ोरयार

2

XCode 11 और 10 के लिए, आप निम्न कार्य कर सकते हैं:

  1. स्कीम का विकल्प चुनें।
  2. एडिट स्कीम चुनें।

  3. बाएं पैनल से रन विकल्प चुनें

  4. लॉन्च भाग में, निष्पादन योग्य लॉन्च होने की प्रतीक्षा करें का चयन करें , फिर संवाद बंद करें।

  5. प्रोजेक्ट बनाएं और चलाएं। अब आप ऐप आइकन पर टैप करके या अधिसूचना संदेश पर टैप करके ऐप लॉन्च कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.