2011-08-26 3 views
6

मैं ऐप स्टोर में अपना ऐप सबमिट कर दूंगा, और समीक्षा के बाद इसे अस्वीकार कर दिया गया था। एप्पल से कारण था:इस बारे में उलझन में: (2.5) गैर-सार्वजनिक एपीआई का उपयोग करने वाले ऐप्स को


2,5: ऐसे ऐप्स जो गैर सार्वजनिक API का उपयोग

अस्वीकार कर दिया जाएगा * हमने देखा कि आपका ऐप एक या अधिक गैर सरकारी एपीआई, जो में नहीं है का उपयोग करता है ऐप स्टोर समीक्षा दिशानिर्देशों का अनुपालन। गैर-सार्वजनिक एपीआई का उपयोग अनुमत नहीं है क्योंकि इससे इन एपीआई में बदलाव होने पर खराब उपयोगकर्ता अनुभव हो सकता है। हम आपके एप्लिकेशन में निम्न गैर सरकारी एपीआई पाया:

dateWithCalendarFormat: समय-क्षेत्र:

HOUROFDAY

minuteOfHour

secondOfMinute

setNavigationBar:

आप निर्धारित किया है तो उपरोक्त उल्लिखित एपीआई के समान नामों के साथ आपके स्रोत कोड में विधियां , हम आपके विधि नामों को बदलने का सुझाव देते हैं ताकि भविष्य में सबमिशन में आपके एप्लिकेशन को ध्वजांकित करने से बचने के लिए वे अब ऐप्पल के निजी एपीआई से टकरा सकें।

इसके अतिरिक्त, उपरोक्त उल्लिखित एपीआई में से एक या अधिक आपके आवेदन के साथ एक स्थिर पुस्तकालय में रह सकते हैं। यदि आपके पास लाइब्रेरी के स्रोत तक पहुंच नहीं है, तो आप "स्ट्रिंग्स" या "ओटोल" कमांड लाइन टूल्स का उपयोग करके संकलित बाइनरी खोज सकते हैं। "स्ट्रिंग्स" टूल लाइब्रेरी कॉल और "otool -ov" विधियों की एक सूची आउटपुट कर सकता है जो उद्देश्य-सी वर्ग संरचनाओं और उनके परिभाषित तरीकों को आउटपुट करेगा। इन तकनीकों में आप को सीमित करने में जहां समस्याग्रस्त कोड रहता है कर सकते हैं। *


लेकिन, समस्या यह है कि मैं घोषणा या उपर्युक्त एपीआई के रूप में नाम के साथ किसी भी विधि का परिभाषित नहीं किया है। और मैंने किसी भी कस्टम लाइब्रेरी का उपयोग नहीं किया। यह काफी सरल एप्लीकेशन (प्लानर) है और मैंने केवल यूआईकिट, कोरडाटा, एवीफाउंडेशन, फाउंडेशन और इवेंटकिट का उपयोग किया था।

मैं कल ऐप्पल को संदेश भेजता हूं, लेकिन अभी भी कोई जवाब नहीं है।

कोई विचार?

+0

इनमें से किसी एक के उदाहरण के लिए अपने स्रोत कोड को त्वरित रूप से grep (उदा। 'SecondOfMinute')। क्या वे कहीं भी बदल जाते हैं? –

+0

यदि आप ऐप्पल के किसी भी कोड को कॉल नहीं करते हैं जो निजी एपीआई का उपयोग करता है, और आपने उनसे संपर्क किया है, तो प्रतिक्रिया के लिए प्रतीक्षा करें। – Moshe

+0

तरीके dateWithCalendarFormat: पूर्णांक घंटे =: समयक्षेत्र :, HOUROFDAY, minuteOfHour और secondOfMinute मैं अपने कोड में केवल एक बार इस्तेमाल [[[datepicker तारीख] dateWithCalendarFormat: शून्य समय-क्षेत्र: शून्य] HOUROFDAY]; int min = [[[datepicker date] dateWithCalendarFormat: nil timeZone: nil] minuteOfHour]; int sec = [[[datePicker date] dateWithCalendarFormat: nil timeZone: nil] secondOfMinute]; जहां दिनांक पिकर UIDatePicker वर्ग से ऑब्जेक्ट है: @property (nonatomic, retain) IBOutlet UIDatePicker * datePicker; setNavigationBar विधि में वही बात। मैंने उन तरीकों की घोषणा या परिभाषित नहीं किया था। –

उत्तर

4

आप टिप्पणी में ऊपर आप

[[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] hourOfDay] 
अब

इस्तेमाल किया बस नहीं कहा, [datePicker date] रिटर्न एक NSDate, जिसका documentation वहाँ dateWithCalendarFormat:timezone: है और न ही hourOfDay आदि नामित

तो कोई सार्वजनिक तरीकों से पता चलता है, तो आप कर सकते हैं उन्हें इस्तेमाल करें।

setNavigationBar: के लिए, navigationBarUINavigationController की एक पाठक संपत्ति है, जैसा कि प्रलेखन कहता है। इसलिए आप इसे सेट नहीं कर सकते हैं।

जब आप अपना ऐप संकलित करते हैं, तो संकलक को इसके बारे में बहुत सारी चेतावनी जारी करनी चाहिए थी, यह कहकर कि चयनकर्ता नहीं मिला था, आदि। आपको हमेशा उन चेतावनियों को त्रुटियों के रूप में मानना ​​चाहिए, और उन्हें खत्म करना चाहिए। इस तरह आप जमा करने के बाद अस्वीकृति से बच सकते हैं।

+0

हां हां, मैंने देखा कि कुछ ही मिनट पहले, और मैंने इसे बदल दिया। लेकिन setNavigationBar विधि के बारे में क्या ??? –

+0

दिनांकविथ कैलेंडरफॉर्मैट: टाइमज़ोन: अब और अनुशंसित नहीं है ... लेकिन सेट नविगेशनबार के साथ समस्या क्या है: यूआईएनविगेशनबार * बार = [[यूएनएविगेशनबार आवंटन] init]; बार.बार स्टाइल = UIBarStyleBlackOpaque; [ओप्ला सेट नेविगेशनबार: बार]; [opla.navigationBar setTintColor: self.navigationController.navigationBar.tintColor]; [opla.navigationBar setBarStyle: self.navigationController.navigationBar.bar स्टाइल]; –

+0

ठीक है, मेरा अपडेट देखें। – Yuji

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