Приложение ссылается на непубличный селектор в id (Facebook SDK iOS)

У меня возникло это предупреждение при отправке моего приложения с помощью Application Loader.

The app references non-public selector in MyApp : id

Это предупреждение может потенциально отклонить мое приложение от проверки Apple AppStore.

Мое приложение использует Facebook SDK iOS 3.1.1 (также пробовали с 3.1)

Ответ 1

Эта проблема возникает из-за Facebook SDK для iOS.

Application Loader запрещает использование переменной "id" из любого класса, связанного с FBGraphUser (возможно, другие переменные тоже не тестировались) - например.:

id<FBGraphUser> friend
id<FBGraphUserExtraFields>user

Сообщается об этой проблеме Facebook по состоянию на январь 2013 года: Отчет об ошибках

Обходной путь на данный момент состоит в том, чтобы использовать эти функции:

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

вместо user.id и friend.id, как показано в разных образцах Facebook.

Ответ 2

Просто для обновления для людей, приезжающих сюда из поисковых систем, это исправлено в последнем пакете Facebook SDK (просто перенесли наш проект в библиотеку версии 3.7.1, и предупреждения по проверке исчезли).

Ответ 3

Для всех, кто придет сюда, ищет ответ на это. Проблема, по-видимому, была исправлена ​​в v3.14.1 в соответствии с журналом изменений SDK в Facebook

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

  • Свойство id для типов FBGraphObject, FBGraphPlace, FBOpenGraphAction и FBOpenGraphObject устарели в пользу objectID, чтобы избежать предупреждений о представлении хранилища приложений.

  • Свойство описания FBLinkShareParams и FBOpenGraphObject
    устарел в пользу linkDescription и
    objectDescription, соответственно, чтобы избежать представления магазина приложений
    предупреждения.

Ответ 4

Facebook iOS SDK 3.12 такая же проблема в FBGraphUser.h.

Изменить

@property (retain, nonatomic) NSString *id;

к

@property (retain, nonatomic) NSString *UserId;

Ответ 5

Файл FBGraphUser.h

изменить

@property (сохранение, неатомное) NSString * id;

по

@property (сохранить, неатомно) NSString * FbUserId;

Ответ 6

Используйте Facebook iOS SDK 3.13. не будет никаких предупреждений о валидации.

Ответ 7

Я решил эту проблему (где 13.1 все равно будет генерировать предупреждения и создать недопустимый двоичный файл в itunesconnect), загрузив источник FacebookSDK из Github (ссылка) и используя "build_framework.sh" script в директории скриптов. Затем добавили созданный фреймворк в мой проект Xcode и не получили больше предупреждений.

Ответ 8

Предупреждения о валидации также содержатся в версии 3.3. Я не знаю, будет ли это работать для других людей, но он быстро обходной путь, который избавился от ошибки. В FBGraphUser.h вокруг строки 41 я изменил...

@property (retain, nonatomic) NSString *id;

to

@property (retain, nonatomic) NSString *FBUserID; 

Я также получал такое же предупреждение о настройке setProfileId, поэтому перешел в FBProfilePictureView.h и изменил идентификатор профиля в строке 54 и 76 на FBID.

Затем я обновил свою информацию FBLoginView в своей игре ViewController, чтобы отразить изменения. Все, что связано с FB, похоже, работает в моем приложении, и оно прошло проверку Application Loader.