使用 Application Loader 提交我的应用程序时出现此警告。
The app references non-public selector in MyApp : id
此警告可能会拒绝我的应用程序通过 Apple AppStore 的验证。
我的应用正在使用 Facebook SDK iOS 3.1.1(也尝试使用 3.1)
使用 Application Loader 提交我的应用程序时出现此警告。
The app references non-public selector in MyApp : id
此警告可能会拒绝我的应用程序通过 Apple AppStore 的验证。
我的应用正在使用 Facebook SDK iOS 3.1.1(也尝试使用 3.1)
发生此问题的原因是 Facebook SDK for iOS。
应用程序加载器禁止使用任何 FBGraphUser 相关类中的变量“id”(可能还有其他变量,未测试) - 例如:
id<FBGraphUser> friend
id<FBGraphUserExtraFields>user
Facebook 于 2013 年 1 月获悉此问题:错误报告
目前的解决方法是使用这些:
[user objectForKey:@"id"]
[friend objectForKey:@"id"]
而不是user.id
和friend.id
不同的 Facebook 示例中所示。
对于任何新来这里寻找答案的人。根据 Facebook SDK 更改日志,该问题似乎已在 v3.14.1 中得到修复
https://developers.facebook.com/docs/ios/change-log-3.x/
FBGraphObject
类型、FBGraphPlace
、
FBOpenGraphAction
和的 id 属性FBOpenGraphObject
已被弃用,objectID
以避免应用商店提交警告。
FBLinkShareParams
和的 description 属性FBOpenGraphObject
已被分别弃用,取而代之的是 linkDescription 和
objectDescription
,以避免应用商店提交
警告。
只是为了更新来自搜索引擎的人,这已在最新的 Facebook SDK 中修复(刚刚将我们的项目移动到库版本 3.7.1 并且验证警告消失了)。
Facebook iOS SDK 3.12 在 FBGraphUser.h 中存在同样的问题。
改变
@property (retain, nonatomic) NSString *id;
至
@property (retain, nonatomic) NSString *UserId;
文件FBGraphUser.h
改变
@property (retain, nonatomic) NSString *id;
经过
@property (retain, nonatomic) NSString *FbUserId;
使用 Facebook iOS SDK 3.13。不会有任何验证警告。
我通过从 Github(链接)下载 FacebookSDK 源并在脚本目录中使用“build_framework.sh”脚本解决了这个问题(13.1 仍然会生成警告并在 itunesconnect 中生成无效的二进制文件) 。然后将生成的框架添加到我的 Xcode 项目中 - 并且不再收到警告。
验证警告也出现在 v3.13 中。我不知道这是否适用于其他人,但他是一个快速的解决方法,可以消除错误。在第 41 行附近的 FBGraphUser.h 中,我更改了...
@property (retain, nonatomic) NSString *id;
至
@property (retain, nonatomic) NSString *FBUserID;
我也收到了关于 setProfileId 的相同验证警告,所以我去了 FBProfilePictureView.h 并将第 54 行和第 76 行的 profileID 更改为 FBID。
然后我在游戏的 ViewController 中更新了我的 FBLoginView 信息以反映这些更改。与 FB 相关的所有内容似乎仍然可以在我的应用程序中运行,并且它通过了 Application Loader 验证。