2010-08-23 16 views
37

तो, हम सभी जानते हैं कि ऐप्पल आईओएस ऐप्स में निजी या अनियंत्रित एपीआई का उपयोग करके मना कर देता है। मुझे इसके साथ कोई समस्या नहीं है, क्योंकि तकनीकी कारण हैं कि यह एक अच्छा विचार क्यों है। हालांकि, अब दो बार निजी ऐप का उपयोग करने के लिए एक ऐप खारिज कर दिया गया है, जब यह वास्तव में मामला नहीं था। यह मुश्किल नहीं है - निजी एपीआई में connectionState, setThumbnail, setOrder जैसे प्रतीक शामिल हैं। आपके द्वारा नामित विधियों के लिए किए गए किसी भी कॉल को एक निजी एपीआई उपयोग के रूप में फ़्लैग किया जाएगा, भले ही विधि कहा जा रहा हो, जिसे आपने स्वयं परिभाषित किया है। कनेक्शन, थंबनेल या चीजों के क्रम के साथ कुछ करने के लिए, ऊपर उल्लिखित विधि नाम सभी संभावना नहीं हैं। इसके लिए खारिज करना और एक विधि का नाम बदलना और कम से कम एक सप्ताह तक सब कुछ देरी से पुनः सबमिट करना, जबकि आप एक नई समीक्षा की प्रतीक्षा करते हैं।निजी एपीआई "उपयोग" के लिए खुद की जांच करें?

तो वहाँ एक रास्ता आईओएस चौखटे के वर्ग डंप है, nm का उपयोग कर,, आदि वहाँ में कुछ भी साथ खुद के लिए अगर आपके विधि के नाम संघर्ष पता लगाने के लिए? यदि ऐसा है, तो हमें रिलीज से पहले और अनावश्यक अस्वीकृति से परहेज करने का मौका मिल सकता है।

उत्तर

18

मैं ऐप स्कैनर का उपयोग करने का सुझाव दूंगा। यह निजी एपीआई विधि उपयोग के लिए आपकी .app फ़ाइल का विश्लेषण करता है। वर्तमान संस्करण निजी एपीआई आवृत्ति चर का समर्थन नहीं करता है लेकिन यह भविष्य के संस्करण में काम कर सकता है।

यह उन तरीकों को पकड़ लेगा जिन्हें एक निजी एपीआई विधि के रूप में नामित किया गया है, भले ही इसका अपना कार्यान्वयन हो। साथ ही, यह विधियों के अंदर @ चयनकर्ताओं को पकड़ लेगा (जैसे आधिकारिक आईओएस स्वचालित चेकर की तरह)।

लिंक ->https://github.com/ChimpStudios/App-Scanner

+0

याय, डाउनलोड पेज मैक पर सफारी के लिए असंगत प्रतीत होता है। मुझे डाउनलोड बटन देखने के लिए फ़ायरफ़ॉक्स का उपयोग करना पड़ा। – auco

+0

सफारी 5.1 (मैक) – Andrew

+0

पर मेरे लिए ठीक काम करता है ऐप स्कैनर प्रदर्शन करते समय मामले को नहीं पकड़ता है चयनकर्ता: एक चयनकर्ता के साथ बुलाया जाता है जो एक निजी विधि है। हालांकि, ऐप्पल के उपकरण उस मामले को पकड़ते हैं। – ThomasW

2

क्या आपने सेटिंग्स में Validate Build Product चालू करने का प्रयास किया है? यह समीक्षा प्रक्रिया के दौरान आपके ऐप पर किए गए सभी प्रारंभिक चेकों को करने के लिए माना जाता है

+4

हां। निश्चित नहीं है कि यह वास्तव में "मान्य" क्या है, लेकिन यह नहीं है। –

+0

हां, मैंने अभी इसका परीक्षण किया है और निर्माण उत्पाद को मान्य करने में समस्या नहीं है। – ThomasW

3

यह वही नहीं है जो आप खोज रहे हैं, लेकिन एक्सकोड में दो मान्य विकल्प हैं जो शायद प्रयास करने योग्य हैं।

पहला निर्माण सेटिंग है। यह पूरी तरह से स्पष्ट नहीं है कि यह क्या जांचता है - दस्तावेज़ीकरण नहीं कहता है और यहां तक ​​कि डब्ल्यूडब्ल्यूडीसी वार्ता वास्तव में विस्तृत नहीं थी - लेकिन यह संभावित रूप से उपयोगी है। मेरा अनुमान है कि यह निजी एपीआई की जांच नहीं करता है।

दूसरा विकल्प ऑर्गनाइज़र में है। "संग्रहीत ऐप्स" दृश्य में आप ऐप्पल को सत्यापन के लिए अपना ऐप सबमिट कर सकते हैं। दोबारा, वे वास्तव में वास्तव में जांच नहीं करते हैं कि चेक क्या हैं लेकिन मैं समझता हूं कि यह स्वचालित परीक्षणों की तरह है जो वे "मैन्युअल" समीक्षा से पहले चलाते हैं। मेरा अनुमान है कि यह निजी एपीआई कॉल के लिए जांच करता है।

+2

अच्छा विचार। ऑर्गनाइज़र "मान्य" एक ही चेक करता है कि एप्लिकेशन लोडर जमा करने पर करता है - वह बंडल आईडी: सही हैं, फ़ाइल का नाम मान्य है, आदि निजी एपीआई पर नहीं जाएं: हालांकि। –

+1

निजी एपीआई उपयोग अब शामिल है, लेकिन ऐसा लगता है कि निजी एपीआई कॉल का उपयोग किस प्रकार किया जा रहा है या कहां से! आह। –

2

एरिका सदून वर्तमान में एपीआईकिट को कॉल करने वाली किसी चीज़ पर काम कर रहा है जो एक उपयोगिता है जो आपके कोड को स्कैन करती है और सक्रिय रूप से आपको निजी एपीआई उपयोग के बारे में चेतावनी देती है। http://ericasadun.com/2009/12/apikit-goes-beta/#c2

एकमात्र समस्या यह है कि मुझे कहीं भी इसके साथ कुछ भी नहीं मिल रहा है। यह बीटा में जाहिर है, लेकिन 8 महीने पहले इसकी घोषणा की गई थी।

मुझे इसकी वर्तमान स्थिति पता नहीं है या यह वास्तव में उपलब्ध है या नहीं, लेकिन ऐसा कुछ है जिसे आप देख सकते हैं। शायद खुद से संपर्क करने का प्रयास करें? एरिका ने बार-बार फ्रीनोड पर आईआरसी पर # आईफोन-देव चैनल में लटका दिया, आप उसे वहां पकड़ सकते हैं।

+0

धन्यवाद, मैं इसे देख लूंगा। –

+0

मैं इसे देख रहा हूं, और मुझे लगता है कि उसकी apikit स्क्रिप्ट शायद सभी तरह से काम नहीं किया है, यही कारण है कि यह जारी नहीं किया गया है। विशेष रूप से, 'एनएम',' क्लासडंप 'और दोस्तों को मूल डेटा गतिशील गुण दिखाई नहीं देते हैं, जो स्पष्ट रूप से सेब स्कैनर करता है। कुछ जो वास्तव में सभी उपयोग किए गए चयनकर्ताओं को पाता है, की आवश्यकता होती है। 'स्ट्रिंग्स' नौकरी करता है, लेकिन उन सभी को फ़िल्टर करना ** ** एक चयनकर्ता नहीं है (असंभव?)। :/ –

+0

क्लासडंप 'otool -ov' का एक उन्नत संस्करण है, हालांकि, जब आप निष्पादक चयनकर्ता के साथ एक निजी चयनकर्ता कहते हैं तो यह या एनएम मामले को पकड़ नहीं लेता है:। – ThomasW

1

आर्काइव अपने आवेदन और उसे सत्यापित करने में। यह आपके ऐप के माध्यम से जाता है और आपको बताता है कि क्या गलत है। सच्ची कहानी, मैंने अभी खुद को libxslt/xml पर अनुभव किया है।
+ ऐपस्केनर (बहिष्कृत) और सभी otool -L आदि पर अपना समय बर्बाद न करें (शुरुआत में आपको कोई संकेत नहीं है कि आप किस चयनकर्ता का उपयोग कर रहे हैं वह गलत है)।

संबंधित मुद्दे