【问题标题】:App crash on using Fabric and TwitterKit使用 Fabric 和 TwitterKit 时应用程序崩溃
【发布时间】:2015-10-11 16:30:21
【问题描述】:

我的应用程序 didFinishLaunchingWithOptions 委托方法中有这行代码,它会导致崩溃:

'[Fabric] Info.plist 键“Fabric”的值必须是 NSDictionary。'

有人可以帮我解决这个问题吗?

这是导致崩溃的代码:

[[Twitter sharedInstance] startWithConsumerKey:@"consumer_key" consumerSecret:@"secret_key"];
[Fabric with:@[[Twitter sharedInstance]]];

【问题讨论】:

  • 这里的所有步骤你都完成了吗:docs.fabric.io/ios/twitter/twitterkit-setup.html#set-up-kit
  • 是的,我已按照文档中的所有这些步骤进行操作。
  • 检查您的实际 Info.plist。在我的项目中,我看到一个“Fabric”条目,它是一个带有 APIKey 和工具包的字典
  • 当我直接按照你提到的文档时似乎没有出现。但是当我使用fabric应用程序时,应用程序崩溃不再发生。但我想使用来自 apps.twitter.com 的消费者密钥和密钥,知道我该怎么做吗?
  • 我不确定我是否理解您的问题。您应该已经通过 Fabric 收到了您的应用程序的密钥/秘密。我认为 Fabric 使用不同的凭据来配置应用程序以登录 Twitter(OAuth 等)。

标签: ios objective-c twitter twitter-fabric


【解决方案1】:

来自 Fabric 的 Alex 在这里。要使用不同的 Twitter API 密钥或在 apps.twitter.com 上生成的 API 密钥,您需要在上面的代码中正确声明它。听起来您可能没有通过 Fabric 应用程序完全载入您的应用程序,并且您的 info.plist 中缺少所需的条目,例如 Fabric APIKey

有关 Fabric Mac 应用和 info.plist 的更多信息:

当您通过 Mac 应用程序载入套件时,Fabric 字典条目将注入您的 info.plist。在Fabric 父项下,将有两个子项:APIKeyKits

您的 Fabric API 密钥,如果由于某种原因未注入(如果您使用 Fabric 应用程序,它应该自动添加)或者您想手动更改它,可以通过访问 https://fabric.io/settings/organizations 找到,点击您的组织并点击组织标题下方的“API Key”。

Kits 数组包含一个 Item X,用于您包含的每个 Fabric 套件。如果您已包含 Twitter Kit,则自动配置的 consumerKey 和 consumerSecret 列在 KitInfo 下。

【讨论】:

  • 这就是我一直在寻找的答案!谢谢您的帮助。另一个问题是,使用apps.twitter.com 给我的密钥后,我还能在Fabric 上看到我的应用吗?
  • 您的意思是在 Fabric 仪表板上?如果是这样,那么是的。只要您通过 Fabric 载入您的应用程序,它就会出现在您的仪表板中。
  • 它确实显示了应用程序,但它不显示我正在使用的 consumer_key 和密钥。另请注意,我们也有这个应用程序的 Android 版本。我们正在共享从 apps.twitter.com 获得的相同密钥
  • 感谢您的澄清。在fabric.io 的Twitter 仪表板上,您将始终看到Fabric 生成的consumerKey 和consumerSecret。我们想让这些可供您使用,因此我们不会用您的 apps.twitter.com 密钥替换它们。您绝对可以在 Android 和 iOS 应用程序之间共享您的 apps.twitter.com 密钥,这完全取决于您。如果您在应用之间共享密钥,则需要考虑速率限制,但这是完全可行的。
  • @Alexizamerican 为什么我们需要将消费者机密放入 info.plist 中?这不等于与任何人以纯文本形式分享秘密吗?您的设置页面明确表示永远不要以明文形式与任何人分享秘密。
【解决方案2】:

我按照上述步骤操作,但仍然收到此错误

未捕获的异常'TWTRInvalidInitializationException',原因: '在调用必需的之前尝试调用 TwitterKit 方法 启动方法;你必须先调用 +[Fabric with:@[Twitter class]] 使用 TwitterKit 上的方法

当我使用多个套件时,我尝试按如下方式初始化不同的调用

[Fabric with:@[[Crashlytics class]]];
[Fabric with:@[[Twitter class]]];

根据 + (instancetype)with:(NSArray *)kitClasses; 的 Fabric 文档;

只有第一次调用这个方法才会被接受。随后的调用是 无操作。 所以只有 Crashlytics 正在初始化,而 Twitter 被忽略了。

解决方案如下初始化;

[Fabric with:@[[Crashlytics class], [Twitter class]]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2018-06-08
    • 2014-04-18
    相关资源
    最近更新 更多