दिलचस्प पोस्ट
यूटीएफ -8 एनकोडेड एनएसडीटा को एनएसएसटीइंग में कनवर्ट करें MySQL क्वेरी लॉग को कैसे सक्षम करें? PHP preg_functions multibyte सुरक्षित हैं? सिंगलटन में थ्रेड सुरक्षा तत्व में कोणीय एनजी-दोहराएँ सशर्त लपेट आइटम (एनजी-दोहरा में समूह आइटम) क्यों नहीं करता है <T> स्ट्रीम () और समानांतर स्ट्रीम () तरीके प्रदान नहीं करें? समुद्री शैवाल के साथ समय-श्रृंखला डेटा का प्लॉटिंग करना हर महीने के पहले रविवार को चलाने के लिए कैसे समय निर्धारित करें तिथि के अनुसार अर्रे सूची में ऑब्जेक्ट सॉर्ट करें? मॉलोक / फ्री / नए / डिलीट पर कब और क्यों 0xCD, 0xDD, आदि में ओएस आरंभीकरण मेमोरी होगी? Json.Net में PreserveReferencesHandling और ReferenceLoopHandling में क्या अंतर है? न्यूनतम संभव विंडोज (पीई) निष्पादन योग्य क्या है? मैं सिमिटियों का पालन करने के लिए git कैसे प्राप्त करूं? एंड्रॉइड एम के लिए build.grade को संकलित समय निर्भरता के रूप में अपाचे HTTP एपीआई (लीगेसी) कैसे जोड़ें? उथल-पुथल कनेक्शन समयबाह्य पुन: प्रयास करना

रनटाइम पर यह बताने के लिए कि क्या कोई आईओएस ऐप टेस्टफ्लाइट बीटा इंस्टॉल के माध्यम से चल रहा है

क्या रनटाइम में पता लगाया जा सकता है कि एप स्टोर के माध्यम से टेस्टफ्लाइट बीटा (आईट्यून्स कनेक्ट के जरिए जमा) के माध्यम से कोई एप्लिकेशन इंस्टॉल किया गया है? आप एक एकल ऐप बंडल सबमिट कर सकते हैं और इसे दोनों के माध्यम से उपलब्ध कर सकते हैं। क्या कोई एपीआई है जो यह पता लगा सकता है कि किस तरह से इसे स्थापित किया गया था? या क्या रसीद में ऐसी जानकारी होती है जो इसे निर्धारित करने की अनुमति देती है?

वेब के समाधान से एकत्रित समाधान "रनटाइम पर यह बताने के लिए कि क्या कोई आईओएस ऐप टेस्टफ्लाइट बीटा इंस्टॉल के माध्यम से चल रहा है"

टेस्टफ्लाइट बीटा के माध्यम से इंस्टॉल किए गए एप्लिकेशन के लिए रसीद फ़ाइल को StoreKit\sandboxReceipt नामित सामान्य StoreKit\receipt बनाम नाम दिया गया है। [NSBundle appStoreReceiptURL] का उपयोग करके आप यूआरएल के अंत में सैंडबॉक्स रीसिपिड देख सकते हैं।

 NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; NSString *receiptURLString = [receiptURL path]; BOOL isRunningTestFlightBeta = ([receiptURLString rangeOfString:@"sandboxReceipt"].location != NSNotFound); 

ध्यान दें कि sandboxReceipt रसीद फ़ाइल का नाम है जब स्थानीय रूप से चलाता है और सिम्युलेटर में रन बनाने के लिए

संयोजक के उत्तर के आधार पर मैंने निम्नलिखित SWIFT सहायक वर्ग का निर्माण किया। इस वर्ग के साथ आप यह तय कर सकते हैं कि यह डिबग, टेस्टफ़ाइट या ऐपस्टोर बिल्ड है।

 enum AppConfiguration { case Debug case TestFlight case AppStore } struct Config { // This is private because the use of 'appConfiguration' is preferred. private static let isTestFlight = NSBundle.mainBundle().appStoreReceiptURL?.lastPathComponent == "sandboxReceipt" // This can be used to add debug statements. static var isDebug: Bool { #if DEBUG return true #else return false #endif } static var appConfiguration: AppConfiguration { if isDebug { return .Debug } else if isTestFlight { return .TestFlight } else { return .AppStore } } } 

हम अलग-अलग ट्रैकिंग आईडी या प्रति माह कनेक्शन स्ट्रिंग की आपूर्ति के लिए इन विधियों का उपयोग करते हैं:

  func getURL(path: String) -> String { switch (Config.appConfiguration) { case .Debug: return host + "://" + debugBaseUrl + path default: return host + "://" + baseUrl + path } } 

या:

  static var trackingKey: String { switch (Config.appConfiguration) { case .Debug: return debugKey case .TestFlight: return testflightKey default: return appstoreKey } } 

05-02-2016 को अपडेट करें: यदि कोई पूर्वप्रसारक मैक्रो का उपयोग करने के लिए एक शर्त है तो # डीब्यूग कुछ स्विफ्ट कम्पाइलर कस्टम झंडे सेट करना है इस उत्तर में अधिक जानकारी: https://stackoverflow.com/a/24112024/639227

आधुनिक स्विफ्ट संस्करण, जो सिमुलेटर के लिए खाता है (स्वीकार किए जाते हैं उत्तर के आधार पर):

 private func isSimulatorOrTestFlight() -> Bool { guard let path = Bundle.main.appStoreReceiptURL?.path else { return false } return path.contains("CoreSimulator") || path.contains("sandboxReceipt") } 

यह भी काम करता है:

 if NSBundle.mainBundle().pathForResource("embedded", ofType: "mobileprovision") != nil { // TestFlight } else { // App Store (and Apple reviewers too) } 

पता लगा है कि एप्पल के टेस्टफ्लाइट से आईओएस ऐप डाउनलोड किया गया है या नहीं

एक ही तरीका है कि मैं इसे अपने प्रोजेक्ट्स के लिए उपयोग कर रहा हूं। ये कदम हैं

Xcode में, प्रोजेक्ट सेटिंग्स (प्रोजेक्ट, लक्ष्य नहीं) पर जाएं और सूची में "बीटा" कॉन्फ़िगरेशन जोड़ें:

यहां छवि विवरण दर्ज करें

फिर आपको नई योजना बनाने की आवश्यकता है जो "बीटा" कॉन्फ़िगरेशन में प्रोजेक्ट चलाएगा योजना बनाने के लिए यहां जाएं:

यहां छवि विवरण दर्ज करें

इस योजना को जो भी आप चाहते हैं उसे नाम दें आपको इस योजना के लिए सेटिंग्स को संपादित करना चाहिए। ऐसा करने के लिए, यहां टैप करें:

यहां छवि विवरण दर्ज करें

आर्काइव टैब चुनें जहां आप Build configuration चयन कर सकते हैं

यहां छवि विवरण दर्ज करें

फिर आपको मूल्य की $(CONFIGURATION) परियोजनाओं की जानकारी संपत्ति सूची जैसे एक कुंजी Config को जोड़ने की आवश्यकता है:

यहां छवि विवरण दर्ज करें

फिर इसके सिर्फ मामले में बीटा निर्माण के लिए कुछ विशेष करने के लिए आपको कोड की आवश्यकता होती है:

 let config = Bundle.main.object(forInfoDictionaryKey: "Config") as! String if config == "Debug" { // app running in debug configuration } else if config == "Release" { // app running in release configuration } else if config == "Beta" { // app running in beta configuration }