Приложение ссылается на непубличный селектор в 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.