विभिन्न लक्ष्यों के लिए बिल्ड जोड़ें


1

मेरे पास पहले से ही iOS 9+ डिवाइस के लिए रिलीज़ बिल्ड है। अब मैं केवल ARKit उपकरणों के लिए एक नया संस्करण जारी करना चाहता हूं जिनके लिए arm64 भी आवश्यक है। लेकिन मेरा बिल्ड itunesconnect रिलीज के लिए XCode में एक सत्यापन पास नहीं करता है। यह एक त्रुटि दिखाता है कि मैं पहले से जारी बंडल के लिए लक्ष्य डिवाइस रेंज को नहीं बदल सकता। लेकिन अगर मैं XCode में बंडल को बदल देता हूं तो यह एक और एप्लिकेशन होगा। मैं केवल ARKit enablers के लिए एक अद्यतन प्रदान करना चाहता हूं, मैं यह कैसे कर सकता हूं?


यदि यह वही ऐप है, तो आप केवल उन उपकरणों के लिए ARKit क्षमताओं को क्यों नहीं जोड़ते हैं जो इसका उपयोग कर सकते हैं और पुराने उपकरणों के लिए पुराने कार्यान्वयन में वापस आ सकते हैं? आप एक ही बंडल के तहत नया ऐप जारी नहीं कर पाएंगे।
माटूस ज़्लॉज़क

@MateuszSzlosek, ARKit विशेषताएं हमारे ऐप की आधार कार्यक्षमता नहीं हैं, लेकिन हमें वास्तव में विशिष्ट उपकरणों के लिए इसे जोड़ने और पुराने उपकरणों के लिए पुराने ऐप बने रहने की आवश्यकता है।
svnvav

जवाबों:


1

AppStore में भेजे गए एक ही बंडल के साथ आपके पास अलग-अलग बिल्ड नहीं हो सकते। यदि आप वास्तव में ARKit सक्षम उपकरणों के लिए "कुछ विशेष" रखना चाहते हैं - तो ऐप लॉन्च के दौरान कुछ प्रकार के चेक का उपयोग करें। यहाँ एप्पल से बोली है

महत्वपूर्ण सभी ARKit कॉन्फ़िगरेशन में A9 या बाद के प्रोसेसर के साथ iOS डिवाइस की आवश्यकता होती है। यदि आपका ऐप अन्यथा अन्य उपकरणों का समर्थन करता है और संवर्धित वास्तविकता को एक माध्यमिक विशेषता के रूप में पेश करता है, तो इस संपत्ति का उपयोग यह निर्धारित करने के लिए करें कि उपयोगकर्ता को एआर-आधारित सुविधाओं की पेशकश करनी है या नहीं। यदि आपके ऐप को अपनी मुख्य कार्यक्षमता के लिए ARKit की आवश्यकता है, तो अपने ऐप के Info.plist के UIRequiredDeviceCapabilities सेक्शन में मौजूद आर्किट कुंजी का उपयोग करें, जो ARKit को सपोर्ट करने वाले डिवाइस पर केवल आपके ऐप को उपलब्ध कराए।

तो आप ARConfiguration.isSupportedरनटाइम में डिवाइस की क्षमताओं की जांच करने के लिए उपयोग कर सकते हैं । यदि यह "पुराने" कार्यान्वयन के लिए समर्थित नहीं है।

लक्ष्य के लिए कोड को संकलित करने के लिए <11 आप विधियों या यहां तक ​​कि वर्गों को इस @available(iOS 11.0, *)तरह से चिह्नित कर सकते हैं :

@available(iOS 11.0, *)
func doSomeARStuff() {
    if ARConfiguration.isSupported { print("Supported") }
}

अपने मौजूदा कोड का उपयोग करके उन तरीकों को कॉल करने के लिए इसे पसंद करें:

if #available(iOS 11.0, *) {
    doSomeARStuff()
} else {
    // Fallback on earlier versions
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.