【问题标题】:"[App]" Would Like Access to Twitter Accounts alert is not shown in iOS 6“[App]”想要访问 Twitter 帐户警报未在 iOS 6 中显示
【发布时间】:2012-09-19 13:26:35
【问题描述】:

我正在使用 TWTweetComposeViewController 访问用户的 Twitter 帐户,他/她已在“设置”->“Twitter”中添加了该帐户。当应用尝试访问 twitter 帐户时,它应该会显示一条警报,其中包含类似于以下内容的消息:

"[AppName] Would Like Access to Twitter Accounts"

您可以点按“不允许”或“确定”。我想这是操作系统本身显示的警报,因为点击“确定”实际上可以访问 Twitter。

我在 iOS 5.x 设备上测试时会显示上述警报,但在 iOS 6 设备上测试时却不是这样。我希望在我发送以下消息时显示警报,但我尚未在设置中获得我的应用程序对 Twitter 的访问权限:

[TWTweetComposeViewController canSendTweet]

如上所述,它不会发生。有谁知道这是否是 iOS 6 中的一个已知错误?我一直无法在 SO 上找到任何帖子,因为我找不到其他不同行为的原因,我认为这是一个错误。

仅供参考,我正在以下两种设备上进行测试:

  • 装有 iOS 5.1 的 iPhone 4
  • 装有 iOS 6.0 的 iPhone 4

更新

我使用DETweetComposeViewController,它通过以下方式检查iOS 5:

+ (BOOL)de_isIOS5
{
    return (NSClassFromString(@"NSJSONSerialization") != nil);
}

但由于 NSJSONSerialization 类也出现在 iOS 6 中,这不应该是原因。

【问题讨论】:

    标签: twitter ios6


    【解决方案1】:

    我整天都在 iOS 5.1 和 iOS 6.0 上解决同样的问题。

    只要在“设置”中配置了 Twitter 帐户,我的应用程序在 iOS 6.0 中不再要求 Twitter 访问权限只是为了显示 TWTweetComposeViewController。我已经通过在Settings > Privacy > Twitter 中手动关闭我的应用程序的 Twitter 访问来验证这一点。关闭访问后,我被正确地拒绝了使用 TWRequest 创建友谊的能力,但仍然可以弹出TWTweetComposeViewController。在我授予它访问权限之前,我每次都会在 iOS 5.1 中收到提示。

    这对我来说很有意义。 TWTweetComposeViewController 所做的只是启动推文,因此如果用户已经配置了设备范围的 Twitter 帐户,则该权限应该足以从任何地方发送推文。必须为每个应用授予访问权限确实是一个不必要的额外步骤。

    如果尚未配置 Twitter 帐户,TWTweetComposeViewController 将提示此消息:

    No Twitter Accounts
    There are no Twitter accounts
    configured. You can add or create
    a Twitter account in Settings.
    

    带有方便的“设置”和“取消”按钮。

    附注:iOS 6 也仅在应用首次请求访问时提示 "[AppName] Would Like Access to Twitter Accounts" 消息。

    之后,您必须重置 Settings > General > Reset > Reset Location & Privacy 才能恢复询问提示。即使您删除并重新安装/重建应用程序,“已经询问过一次”设置仍然存在。您可以在 Settings > Privacy 中手动启用访问权限,但重置是让提示重新显示的唯一方法(如果这对您的测试很重要)。

    我发现了两件额外的事情。在[ACAccountStore requestAccessToAccountsWithType:options:completion:]的完成块中,如果granted == NO:

    1. 如果[error code] == 6,您的用户没有定义帐户。
    2. 如果error == nil,您的用户拒绝访问您的应用程序,无论是现在还是以前。如果之前发生过,该请求会被静默忽略,屏幕上不会显示任何警报,也不会点击“不允许”按钮。

    【讨论】:

    • 非常感谢您的回答。我最近发现 TWTweetComposeViewController 自 iOS 6 起已弃用,而 Apple 希望我们使用 SLComposeViewController。我将测试它是否与 SLComposeVC 相同并发布结果。
    • 我一直在模拟器中使用 iOS6 进行测试,但从未见过“[AppName] 希望访问 Twitter 帐户”消息 - 它只是在没有提示许可的情况下发送。很奇怪。尚未在设备上试用。
    • 我建议您在设备上尝试一下!
    • 非常有帮助的答案。我只是想知道是否有一些 SDK 标识符而不是使用 '[error code] == 6',因为与硬编码值相比,由于未来的编译,我更喜欢标识符。
    • 枚举位于 中,但出于代码兼容性原因,它们不会更改任何值。
    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2014-01-18
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多