2011-08-26 14 views
6

Invio la mia app all'app store e dopo la revisione è stata rifiutata. ragione da Apple era:confuso su: (2.5) Le app che utilizzano API non pubbliche verranno rifiutate


2,5: Le applicazioni che utilizzano le API non pubbliche saranno respinti

* Abbiamo scoperto che la vostra applicazione utilizza uno o più API non pubbliche, che non è in conformità con le Linee guida per la revisione dell'App Store. L'uso di API non pubbliche non è consentito perché può portare a una scarsa esperienza utente nel caso in cui queste API cambino. Abbiamo trovato i seguenti API non pubbliche nella vostra applicazione:

dateWithCalendarFormat: fuso orario:

hourOfDay

minuteOfHour

secondOfMinute

setNavigationBar:

se si è definito metodi nel codice sorgente con gli stessi nomi delle API sopra menzionate , ti suggeriamo di modificare i nomi dei metodi in modo che non entrino in collisione con le API private di Apple per evitare che la tua applicazione venga contrassegnata in future comunicazioni.

Inoltre, una o più API sopra menzionate possono risiedere in una libreria statica inclusa con l'applicazione. Se non si ha accesso all'origine della libreria, è possibile cercare nel binario compilato utilizzando gli strumenti da riga di comando "stringhe" o "otool". Lo strumento "stringhe" può generare un elenco dei metodi che la libreria chiama e "otool -ov" genererà le strutture della classe Objective-C e i loro metodi definiti. Queste tecniche possono aiutare a restringere in cui risiede il codice problematico. *


Ma, il problema è che non ho dichiarare o definisco uno qualsiasi dei metodi con i nomi come le API di cui sopra. E non ho usato alcuna libreria personalizzata. È un'applicazione abbastanza semplice (planer) e ho usato solo: UIKit, CoreData, AVFoundation, Foundation e EventKit.

Invio messaggio ad Apple ieri, ma ancora nessuna risposta.

Qualche idea?

+0

Inavvertitamente grep il codice sorgente per le istanze di uno di questi (ad esempio 'secondOfMinute'). Arrivano da qualche parte? –

+0

Se non chiami alcun codice Apple che utilizza l'API privata e li hai contattati, attendi una risposta. – Moshe

+0

Metodi dateWithCalendarFormat: timezone :, hourOfDay, minuteOfHour e secondOfMinute ho usato solo una volta nel mio codice: int ora = [[[datepicker data] dateWithCalendarFormat: nil fuso orario: nil] hourOfDay]; int min = [[[Data data data] dataWithCalendarFormat: nil timeZone: nil] minuteOfHour]; int sec = [[[Data data data] dataWithCalendarFormat: nil timeZone: nil] secondOfMinute]; dove datePicker è oggetto dalla classe UIDatePicker: @property (nonatomic, retain) IBOutlet UIDatePicker * datePicker; Stessa cosa nel metodo setNavigationBar. Non ho dichiarato o definito quei metodi. –

risposta

4

È detto nei commenti di cui sopra è stato utilizzato

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

Ora, [datePicker date] restituisce un NSDate, la cui documentation mostra non ci sono metodi pubblici denominati dateWithCalendarFormat:timezone:hourOfDay ecc

Quindi, è possibile non solo usali.

Per quanto riguarda setNavigationBar:, la proprietà navigationBar di UINavigationController è una proprietà di sola lettura, come dice la documentazione. Quindi non puoi impostarlo.

Quando si compila la tua app, il compilatore avrebbe dovuto emettere molti avvertimenti a riguardo, dicendo che il selettore non è stato trovato, ecc. Dovresti sempre considerare quegli avvertimenti come errori ed eliminarli. In questo modo puoi evitare il rifiuto dopo la presentazione.

+0

Sì, l'ho visto solo pochi minuti prima e l'ho cambiato. Ma che dire del metodo setNavigationBar ??? –

+0

dateWithCalendarFormat: fuso orario: non è più consigliato ... ma ciò che è problema con setNavigationBar: UINavigationBar * bar = [[UINavigationBar alloc] init]; bar.barStyle = UIBarStyleBlackOpaque; [opla setNavigationBar: bar]; [opla.navigationBar setTintColor: self.navigationController.navigationBar.tintColor]; [opla.navigationBar setBarStyle: self.navigationController.navigationBar.barStyle]; –

+0

Va bene, guarda il mio aggiornamento. – Yuji

Problemi correlati