2013-01-21 3 views
43

Avevo questo avviso quando inviavo la mia app con Application Loader.L'app fa riferimento a selettore non pubblico nell'ID (Facebook SDK iOS)

The app references non-public selector in MyApp : id 

Questo avviso può potenzialmente respingere la mia app dalla validazione di Apple AppStore.

La mia applicazione sta utilizzando Facebook SDK iOS 3.1.1 (provato anche con 3.1)

+3

L'avvertimento è riapparso in Facebook iOS SDK 3.8 (Non c'era un tale avvertimento in un numero di versioni precedenti.) –

risposta

65

Questo problema si verifica a causa del Facebook SDK per iOS.

Application Loader vieta l'uso della variabile "id" da qualsiasi classe correlata a FBGraphUser (anche altre variabili, non testate) - ad es. :

id<FBGraphUser> friend 
id<FBGraphUserExtraFields>user 

Facebook è informata su questo problema come di gennaio 2013: Bug Report

La soluzione per il momento è quello di utilizzare questi:

[user objectForKey:@"id"] 
[friend objectForKey:@"id"] 

invece di user.id e friend.id come mostrato in diversi campioni di Facebook.

+3

Sarebbe l'applicazione essere respinta da App Store a causa di questo? –

+0

Inoltre sto usando lo stesso modo descritto da BabyAzerty, ma sto ancora ricevendo questo avviso. Puoi farmi sapere quale altro potrebbe essere la causa. Ho usato KVC ovunque. Grazie. –

+1

Nel mio caso, l'applicazione è stata rifiutata direttamente e chiaramente dai validatori automatici di robot, non ho potuto spingerlo all'App Store. Forse oggi è diverso (ma non ci credo)? Sfortunatamente, questo era il mio unico problema. Ti consiglio di ricontrollare che OGNI variabili/array di Facebook sono utilizzati con la funzione ForKey. In bocca al lupo ! – Kalzem

3

Solo per l'aggiornamento per le persone che arrivano qui dai motori di ricerca, questo è stato risolto nell'ultimo SDK di Facebook (abbiamo appena spostato il nostro progetto nella versione 3.7.1 della biblioteca e gli avvisi di convalida sono andati via).

+7

Ho ancora questo con 3.8: S –

+0

Lo vedo con 3.9, ma il mio stato è "Inviato con avvisi di convalida", in attesa di revisione. Forse Apple farà la cosa giusta? – JLundell

+0

@ JLundell: la tua app è accettata da Apple? Sto affrontando lo stesso problema e sto pensando di presentare gli avvertimenti? –

0

File FBGraphUser.h

cambiamento

@property (trattenere, atomici) NSString * id;

da

@property (trattenere, atomici) NSString * FbUserId;

2

Facebook iOS SDK 3.12 lo stesso problema in FBGraphUser.h.

Change

@property (retain, nonatomic) NSString *id; 

a

@property (retain, nonatomic) NSString *UserId; 
0

Usa Facebook per iOS SDK 3.13. non ci saranno avvisi di convalida.

+1

Non vero. Il problema persiste con 3.13.1 – Nicolinux

+0

Ho usato la v3.13, non ho ricevuto errori di validazione. – Nookaraju

0

Ho risolto questo problema (dove 13.1 sarebbe ancora generare avvisi e produrre un binario non valida in iTunesConnect) scaricando la fonte FacebookSDK da Github (link) e usando lo script "build_framework.sh" negli script dir. Quindi ho aggiunto il framework generato al mio progetto Xcode e non ho ricevuto altri avvisi.

0

Gli avvisi di convalida sono anche presenti nella v3.13. Non so se questo funzionerà per altre persone, ma è una soluzione rapida che elimina l'errore. In FBGraphUser.h intorno alla riga 41 ho cambiato ...

@property (retain, nonatomic) NSString *id;

a

@property (retain, nonatomic) NSString *FBUserID; 

mi è stato anche sempre lo stesso avviso di convalida su setProfileId così sono andato a FBProfilePictureView.h e ha cambiato ProfileId on line 54 & 76 a FBID.

Ho quindi aggiornato le mie informazioni su FBLoginView nel ViewController del mio gioco per riflettere le modifiche. Tutto ciò che riguarda FB sembra funzionare ancora nella mia app e ha superato la convalida del Loader dell'applicazione.

+0

Non consiglierei di cambiare in interni di FB poiché le modifiche si interromperanno quando aggiornerai l'SDK. – Kalzem

3

Per tutti i nuovi venuti qui in cerca di una risposta. Il problema sembra essere stato risolto in v3.14.1 secondo il Facebook SDK registro delle modifiche

https://developers.facebook.com/docs/ios/change-log-3.x/

  • la proprietà ID sui tipi FBGraphObject, FBGraphPlace, FBOpenGraphAction, e FBOpenGraphObject sono stati deprecati in favore di objectID per evitare avvisi di invio di app store.

  • La descrizione di proprietà di FBLinkShareParams e FBOpenGraphObject
    è stato deprecato in favore di linkDescription e
    objectDescription rispettivamente, per evitare di app store presentazione
    avvertimenti.