2012-06-17 16 views
7

मैं इस ऐप को ऐपस्टोर में सबमिट नहीं करना चाहता हूं। मैंने कई बार कोशिश की है लेकिन कई समस्याओं से मुलाकात की :(आईओएस निजी एपीआई का उपयोग कैसे करें?

मैं UIKit.framework की सभी शीर्षलेख फ़ाइलों को प्राप्त करने के लिए क्लास-डंप का उपयोग करता हूं। UIApplication.h में क्लास-डंप द्वारा उत्पन्न, मैंने विधि को देखा उपयोग करना चाहते हैं ---- launchApplicationWithIdentifier।

फिर मैंने अपनी परियोजना में UIApplication.h डाल दिया और इसे आयात किया। संकलित करें, मुझे UIKit.framework I में बहुत से "गणक की परिभाषा ...." त्रुटि मिली है। पिछले का उपयोग करें, एक और UIApplication.h है। लेकिन इस फ़ाइल में विधि प्रक्षेपण नहीं है APPicationWithIdentifier।

यदि मैं पिछले UIKit.framework को हटाता हूं और क्लास-डंप द्वारा उत्पन्न फ़ोल्डर आयात करता हूं। तो यह एक ढांचे की तरह दिखाई देता है लेकिन यदि मैं इसे सामने लाओ, यह खाली है।

फिर मैं सभी जेनरेटेड हेडर फ़ाइलों को एक फ्रेमवर्क फ़ाइल चींटी को पिछले UIKit.framework को प्रतिस्थापित करना चाहता हूं। लेकिन मुझे नहीं पता कि कैसे। जैसा कि हम देख सकते हैं, सिस्टम फ्रेमवर्क निर्देशिका के तहत, एक फ़ाइल है जिसमें ढांचे के समान नाम है और इसमें 'निष्पादित शेल स्क्रिप्ट' आइकन है। मैं यह फाइल कैसे बना सकता हूं?

मैं वास्तव में उलझन में आया। कोई मुझे हाथ दे सकता है? धन्यवाद।

+0

ओएमजी, मैंने आपके प्रश्न में आपके प्रश्न का उत्तर अभी जोड़ा है: http://stackoverflow.com/questions/11047176/ios-how-can-i-use-uiapplication-launchapplicationwithidentifier-which-is-in -Priv –

उत्तर

7

बस, वर्ग कार्यान्वयन ऊपर एक श्रेणी इंटरफेस में निजी तरीकों जहां आप इसे उपयोग करना चाहते हैं निर्दिष्ट इस तरह:

@interface UIApplication (Private) 

- (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended; 

@end 

पूरी कक्षा-डंप फ़ाइल और मूल UIKit के साथ लिंक आयात न करें ढांचा।

निजी एपीआई का उपयोग करते समय आपको बहुत सावधान रहना चाहिए। भविष्य में आईओएस संस्करणों में ये विधियां बदल सकती हैं या हटा दी जा सकती हैं!

जांचें कि विधि वास्तव में respondsToSelector: के साथ रनटाइम पर मौजूद है और इस मामले के लिए तैयार रहें कि यह अस्तित्व में नहीं है।

मैंने अपने स्वयं के एप्लिकेशन में एक गुप्त मैपकिट सुविधा का उपयोग किया और मुझे पता था कि निजी विधियां केवल आईओएस 5 में मौजूद हैं। इसलिए मेरा ऐप अभी भी सभी आईओएस संस्करणों में काम करता है लेकिन यह सुविधा केवल आईओएस 5 में उपलब्ध है (ऐप्पल हटा दिया गया है या बदला गया है यह आईओएस 6 बीटा 1 में)।

+1

यह काम करता है। बहुत बहुत धन्यवाद :-) इसके अलावा, मुझे अपने एप्लिकेशन को डीबी फाइल का उपयोग डीपीकेजी उपकरण बनाना होगा और फिर इसे इंस्टॉल करना होगा। केवल इस तरह, मेरा एप्लिकेशन एक और ऐप लॉन्च कर सकता है। – wyp