2013-04-18 13 views
5

की ऐपस्टोर स्थापना का पता लगाएं मुझे अपने ऐप में एक कस्टम लॉगिंग लागू करने की आवश्यकता है।आईओएस ऐप

ऐसा करने के लिए मुझे यह पता लगाने की आवश्यकता है कि ऐप का वर्तमान संस्करण ऐप स्टोर से स्थापित किया गया है या xcode से चल रहा है या एक टेस्टफलाइट संस्करण है।

वहाँ कुछ स्थापना स्रोत से निर्भर करता है अनुप्रयोग में अलग है?

मैं कुछ विकास के वातावरण में विभिन्न के लिए नहीं करना चाहती।

उत्तर

11

आप आवेदन बंडल से embedded.mobileprovision फ़ाइल में पढ़ कर जिस तरह का हिस्सा प्राप्त कर सकते हैं:

NSString *provisionPath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]; 

हैं जो मौजूद नहीं है, आप किसी ऐप का निर्माण कर रहे हैं।

यह मौजूद है, तो आप अपने डिबग और तदर्थ प्रावधानीकरण प्रोफ़ाइल के बीच कुछ अंतर यह पता लगाने, और कहा कि यह निर्धारित करने के लिए जो निर्माण में हो देखने की जरूरत है।

क्योंकि XCode स्वचालित रूप से एक साथ आवेदन पत्र सेट डीबग कॉन्फ़िगरेशन में "DEBUG" ध्वज, जो रिलीज़ में सेट नहीं है (जिसका उपयोग डिफ़ॉल्ट रूप से एडहोक बिल्ड के लिए किया जाता है), आप ऐप स्टोर में लॉगिंग को अक्षम करने और DEBUG मैक्रो फ़्लैग के आधार पर लॉगिंग के स्तर को निर्धारित करने से बेहतर हो सकते हैं ।

+1

यह बहुत अच्छा लग रहा है, क्या आपको लगता है कि मैं ऐप जारी करने से पहले इसका परीक्षण करने का कोई तरीका ढूंढ सकता हूं? उदाहरण के लिए यह सुनिश्चित करने के लिए कि यह रिलीज पर काम करता है, _Release योजना_ के साथ बनाएं और चलाएं। – bago

+0

आपके द्वारा संकलित, रिलीज़ या विज्ञापन-प्रसार करने वाले सभी एप्लिकेशन हमेशा एक एम्बेडेड.मोबाइलप्रोविजन शामिल करेंगे। यह केवल अंतिम ऐप स्टोर बिल्ड है जो इस फ़ाइल को याद कर रहा है। आप यह सत्यापित कर सकते हैं कि यह आपके डिवाइस से किसी ऐप स्टोर ऐप को डाउनलोड करके और एप्लिकेशन बंडल की खोज करके मौजूद नहीं है ... ध्यान दें कि मैं इस तकनीक के साथ नहीं आया, हॉकी ऐप को यह खोजने के लिए पूर्ण क्रेडिट मिलता है (या कम से कम वह जगह है मैंने इसके बारे में सीखा)। –

+0

अच्छी टिप :) +1 Tks – TonyMkenu

0

आप बिल्ड कॉन्फ़िगरेशन का उपयोग कर सकते हैं जो मैक्रो को परिभाषित करने के लिए परिभाषित करता है कि आपने टेस्टफलाइट के लिए बनाया है।

उदाहरण के लिए, हम डिबग एक मैक्रो USE_TESTFLIGHT सेट बनाता है, और हमारे कोड में हम करते हैं:

#ifdef USE_TESTFLIGHT 
//do something test-flight specific 
[TestFlight takeOff:kTestFlightAppToken]; 
#endif 

आप नए निर्माण कॉन्फ़िगरेशन कि आप कैसे संकलन कर रहे हैं पर निर्भर करता है सेटअप अलग मैक्रो बना सकते हैं/ऐप को वितरित , और ifdef का उपयोग उन पर आधारित विभिन्न कार्यों को करने के लिए करें।

+0

है कि काम करता है, विभिन्न निर्माण कॉन्फ़िगरेशन पूरा नहीं करता "मैं कुछ विकास के वातावरण में अलग है नहीं करना चाहती।" –

+0

सहमत हुए। यह सुझाव, जबकि कुछ विकास आवश्यकताओं के लिए उपयोगी है, सवाल के जवाब में जवाब नहीं देता है। –