该应用程序在id(Facebook SDK iOS)中引用非公共select器

我在使用Application Loader提交应用程序时遇到了此警告。

The app references non-public selector in MyApp : id 

此警告可能会从苹果AppStore的validation中拒绝我的应用程序。

我的应用程序正在使用Facebook SDK的iOS 3.1.1(也试过3.1)

这个问题是由于iOS的Facebook SDK发生的。

Application Loader禁止从任何FBGraphUser相关类中使用variables“id”(也可能是其他variables,没有testing) – 例如:

 id<FBGraphUser> friend id<FBGraphUserExtraFields>user 

截至2013年1月,Facebook被告知这个问题: 错误报告

目前的解决方法是使用这些:

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

而不是像user.idfriend.id那样显示在不同的Facebook样本中。

只是为了更新来自search引擎的人,这已经在最新的Facebook SDK(已经将我们的项目移动到库版本3.7.1并且validation警告消失了)中得到修复。

对于任何新来的人在这里寻找答案。 根据Facebook SDK更改日志,问题似乎已在v3.14.1中得到修复

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

  • typesFBGraphObjectFBGraphPlaceFBOpenGraphActionFBOpenGraphObject的id属性已被弃用,以objectID FBOpenGraphAction ,以避免app store提交警告。

  • FBLinkShareParamsFBOpenGraphObject的描述属性
    已被弃用,以linkDescription和
    objectDescription ,以避免app store提交
    警告。

Facebook的iOS SDK 3.12 FBGraphUser.h中的相同的问题。

更改

 @property (retain, nonatomic) NSString *id; 

 @property (retain, nonatomic) NSString *UserId; 

文件FBGraphUser.h

更改

@属性(保留,非primefaces)NSString * ID;

通过

@属性(保留,非primefaces)NSString * FbUserId;

使用Facebook iOS SDK 3.13。 将不会有任何validation警告。

我通过从Github下载FacebookSDK源代码( 链接 )并使用脚本目录中的“build_framework.sh”脚本解决了这个问题(其中13.1仍会生成警告并在itunesconnect中生成无效的二进制文件)。 然后将生成的框架添加到我的Xcode项目 – 并没有得到更多的警告。

validation警告也出现在v3.13中。 我不知道这是否会为其他人工作,但他是一个快速的解决方法,摆脱了错误。 在第41行的FBGraphUser.h中,我改变了…

@property (retain, nonatomic) NSString *id;

 @property (retain, nonatomic) NSString *FBUserID; 

我也得到了关于setProfileId相同的validation警告,所以我去了FBProfilePictureView.h并将第54&76行上的profileID更改为FBID。

然后我在游戏的ViewController中更新了我的FBLoginView信息,以反映这些变化。 一切FB相关似乎仍然在我的应用程序,它通过了应用程序加载程序validation。