Приложение ссылается на закрытый селектор в 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)


person Kalzem    schedule 21.01.2013    source источник
comment
Предупреждение снова появилось в Facebook iOS SDK 3.8 (в ряде предыдущих версий такого предупреждения не было).   -  person Alexander Poleschuk    schedule 22.09.2013


Ответы (8)


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

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

id<FBGraphUser> friend
id<FBGraphUserExtraFields>user

Facebook проинформирован об этой проблеме по состоянию на январь 2013 г.: отчет об ошибке.

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

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

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

person Kalzem    schedule 21.01.2013
comment
Будет ли из-за этого отклонено приложение из магазина приложений? - person Rahul Singh; 17.06.2013
comment
Кроме того, я использую тот же способ, что и BabyAzerty, но я все еще получаю это предупреждение. Не могли бы вы сообщить мне, что еще может быть причиной этого. Я использовал KVC везде. Спасибо. - person Rahul Singh; 17.06.2013
comment
В моем случае приложение было прямо и однозначно отклонено автоматическими роботами-валидаторами, я не смог протолкнуть его в AppStore. Может быть, сегодня по-другому (но я с трудом в это верю)? К сожалению, это была моя единственная проблема. Я рекомендую вам дважды проверить, что КАЖДЫЕ переменные/массивы facebook используются с функцией ForKey. Удачи ! - person Kalzem; 18.06.2013
comment
Теперь я дважды проверил его на наличие проблемы с функцией Facebook ForKey. Я использую функцию Forkey везде в своем коде. Я также читал, что эта проблема также может возникать из-за реализации какой-либо сторонней библиотеки, которых в моем случае 3- 4 сторонние библиотеки, а именно ParseSDK, MixpanelSDK, Reachability, BugsenseSDK, FacebookSDK. Может ли какая-либо из них быть проблемой для этой проблемы? - person Rahul Singh; 18.06.2013
comment
Насколько я понимаю, Reachability вообще не проблема. Я столкнулся с этой проблемой ForKey только с FacebookSDK. Я не полностью тестировал этот SDK, но их OpenGraph не должен вызывать никаких проблем. Что касается Parse, Bugsens и Mixpanel, то я их никогда не пробовал. Вы всегда можете попробовать загрузить свое приложение через валидатор и не публиковать его (чтобы вы могли видеть разные ошибки). - person Kalzem; 18.06.2013
comment
Они взяли переменную NSString с именем id ex: NSString *id, хотя ее не следует брать, поскольку она уже является классом. - person TheTiger; 02.08.2013
comment
Похоже, это возвращающаяся проблема. Я не получал его до iOS7. Использование последней версии FB SDK. Замена точечной нотации избавила от ошибки. - person WCByrne; 24.09.2013
comment
Проблема в SDK 3.8. Использование user[@"id"] вместо user.id помогает избавиться от предупреждений. - person Gabriele Petronella; 25.09.2013
comment
@WCByrne Я получаю то же предупреждение, но провел поиск по всему проекту user.id / friend.id безрезультатно. Пожалуйста, где-нибудь еще нужно удалить точечную нотацию? - person RunLoop; 03.10.2013
comment
мда.. Я использую phonegap, лол, стоит мне продолжить и взломать плагин. - person Jay Mayu; 09.10.2013
comment
Я столкнулся с этой проблемой в iOS 7 и FB SDK 3.9, и этот ответ снял предупреждение. Спасибо! Интересно, что в ответе на отчет об ошибке от 24 июня 2013 г. говорится: «Теперь это должно быть решено в SDK 3.5.3. Спасибо за терпеливость. Второе предложение точно в цель. - person JohnK; 28.10.2013
comment
Это все еще не исправлено в 3.14 - person Andy; 06.05.2014

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

person Iain Barclay    schedule 16.09.2013
comment
У меня все еще есть это с 3.8 :S - person João Nunes; 24.09.2013
comment
Я вижу это с 3.9, но мой статус «Отправлено с предупреждениями проверки, ожидание проверки». Может быть, Apple поступит правильно? - person JLundell; 06.11.2013
comment
@JLundell: ваше приложение принято Apple? Я столкнулся с той же проблемой и думаю отправить с предупреждениями? - person Akshay Aher; 15.11.2013
comment
Для справки, в 3.13.1 от 4 апреля 2014 года это до сих пор не исправлено! - person Nicolinux; 30.04.2014

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

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

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

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

person Out of Orbit    schedule 26.05.2014

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

Изменять

@property (retain, nonatomic) NSString *id;

to

@property (retain, nonatomic) NSString *UserId;
person gabemorales    schedule 14.02.2014

Файл FBGraphUser.h

изменять

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

by

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

person Carlos Avalos    schedule 30.01.2014

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

person Nookaraju    schedule 11.03.2014
comment
Не правда. Проблема сохраняется с 3.13.1 - person Nicolinux; 30.04.2014
comment
Я использовал v3.13, у меня не было ошибок проверки. - person Nookaraju; 01.05.2014

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

person Nicolinux    schedule 30.04.2014

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

@property (retain, nonatomic) NSString *id;

to

@property (retain, nonatomic) NSString *FBUserID; 

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

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

person ASHISHT    schedule 06.05.2014
comment
Я бы не советовал менять внутренности FB, так как ваши изменения сломаются, когда вы обновите SDK. - person Kalzem; 06.05.2014