【问题标题】:The app references non-public selector in id (Facebook SDK iOS)该应用程序在 id 中引用了非公共选择器(Facebook SDK iOS)
【发布时间】:2013-01-05 01:31:33
【问题描述】:

我在使用 Application Loader 提交我的应用时收到此警告。

The app references non-public selector in MyApp : id

此警告可能会拒绝我的应用通过 Apple AppStore 的验证。

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

【问题讨论】:

  • 该警告在 Facebook iOS SDK 3.8 中再次出现(之前的许多版本中都没有这样的警告。)

标签: ios facebook facebook-ios-sdk application-loader


【解决方案1】:

由于 iOS 版 Facebook SDK 会出现此问题。

Application Loader 禁止使用任何 FBGraphUser 相关类中的变量“id”(可能还有其他变量,未测试) - 例如:

id<FBGraphUser> friend
id<FBGraphUserExtraFields>user

Facebook 于 2013 年 1 月获悉此问题:Bug Report

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

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

而不是 user.idfriend.id,如不同 Facebook 示例中所示。

【讨论】:

  • 应用商店是否会因此被拒绝?
  • 此外,我使用的方式与 BabyAzerty 描述的方式相同,但我仍然收到此警告。您能否让我知道其他可能的原因。我在任何地方都使用过 KVC。谢谢。
  • 在我的情况下,应用程序被自动机器人验证器直接明确拒绝,我无法将其推送到 AppStore。也许今天不一样了(但我几乎不相信)?不幸的是,这是我唯一的问题。我建议您仔细检查每个 facebook 变量/数组是否与 ForKey 函数一起使用。祝你好运!
  • 听起来这是一个回归问题。在iOS7之前我没有得到它。使用最新的 FB SDK。换掉点符号消除了错误。
  • 问题出在 SDK 3.8 中。使用 user[@"id"] 而不是 user.id 可以消除警告。
【解决方案2】:

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

【讨论】:

  • 我在 3.8 中还有这个:S
  • 我在 3.9 中看到它,但我的状态是“提交并带有验证警告”,等待审核。也许苹果会做正确的事?
  • @JLundell:您的应用程序被 Apple 接受了吗?我面临同样的问题并考虑提交警告?
  • 仅作记录,2014年4月4日起的3.13.1还没有修复!
【解决方案3】:

文件FBGraphUser.h

改变

@property (retain, nonatomic) NSString *id;

通过

@property (retain, nonatomic) NSString *FbUserId;

【讨论】:

    【解决方案4】:

    Facebook iOS SDK 3.12 在 FBGraphUser.h 中存在同样的问题。

    改变

    @property (retain, nonatomic) NSString *id;
    

    @property (retain, nonatomic) NSString *UserId;
    

    【讨论】:

      【解决方案5】:

      使用 Facebook iOS SDK 3.13。不会有任何验证警告。

      【讨论】:

      • 不正确。 3.13.1 问题仍然存在
      • 我使用的是 v3.13,我没有收到任何验证错误。
      【解决方案6】:

      我通过从 Github (link) 下载 FacebookSDK 源并在脚本目录中使用“build_framework.sh”脚本解决了这个问题(13.1 仍会生成警告并在 itunesconnect 中生成无效的二进制文件)。然后将生成的框架添加到我的 Xcode 项目中 - 不再收到警告。

      【讨论】:

        【解决方案7】:

        验证警告也出现在 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 验证。

        【讨论】:

        • 我不建议在 FB 内部进行更改,因为当您更新 SDK 时,您的更改会中断。
        【解决方案8】:

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

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

        • FBGraphObjectFBGraphPlaceFBGraphPlace 类型的 id 属性 FBOpenGraphActionFBOpenGraphObject 已在 支持objectID 以避免应用商店提交警告。

        • FBLinkShareParamsFBOpenGraphObject的description属性
          已弃用,分别支持 linkDescription 和
          objectDescription,以避免应用商店提交
          警告。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          相关资源
          最近更新 更多