“[App]”想要访问Twitter帐户警报未在iOS 6中显示

时间:2012-09-27 17:20:08

标签: twitter ios6

我正在使用TWTweetComposeViewController访问用户的Twitter帐户,他/她已在“设置”中添加了这些帐户>推特。当应用程序尝试访问Twitter帐户时,它应该使用类似以下的消息来提示警报:

"[AppName] Would Like Access to Twitter Accounts"

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

当我在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中表示,这不应该是原因。

1 个答案:

答案 0 :(得分:30)

我整天在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,您的用户就会暂时或之前拒绝您的应用访问权限。如果它以前发生过,则会默默忽略该请求,屏幕上不会显示任何警告,不允许"不允许"点击按钮。