2012-09-27 15 views
11

Estoy usando TWTweetComposeViewController para acceder a las cuentas de twitter de un usuario, que ha agregado en Configuración -> Twitter. Cuando la aplicación intenta acceder a una cuenta de twitter, debe Presente una alerta con un mensaje similar a este:"[App]" Me gustaría que no se muestre la alerta de Acceso a cuentas de Twitter en iOS 6

"[AppName] Would Like Access to Twitter Accounts" 

al que se pueden aprovechar ya sea "No permitir" o "OK". Supongo que esta es una alerta que muestra el sistema operativo en sí, ya que tocar "Aceptar" en realidad permite el acceso a Twitter.

La alerta anterior se muestra cuando la pruebo en un dispositivo iOS 5.x, pero ese no es el caso cuando lo pruebo en un dispositivo iOS 6. Espero que la alerta se presenta cuando envío el siguiente mensaje, y aún no han ganado mi aplicación acceso a Twitter en la configuración:

[TWTweetComposeViewController canSendTweet] 

Como se ha descrito, esto no sucede. ¿Alguien sabe si esto es un error conocido en iOS 6? No he podido encontrar ninguna publicación sobre SO y dado que no puedo encontrar otra razón para el comportamiento diferente, creo que es un error.

FYI, estoy probando esto en los dos dispositivos siguientes:

  • iPhone 4 con iOS 5.1
  • iPhone 4 con iOS 6,0

actualización

utilizo DETweetComposeViewController, que busca iOS 5 de la siguiente manera:

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

Pero dado que la clase de NSJSONSerialization está representada en iOS 6 también, esta no debería ser la razón.

Respuesta

30

He estado ordenando lo mismo en iOS 5.1 frente a iOS 6.0 todo el día.

Siempre que haya una cuenta de Twitter configurada en Configuración, mi aplicación ya no solicita permiso de acceso a Twitter en iOS 6.0 solo para mostrar TWTweetComposeViewController. Lo he verificado al desactivar manualmente el acceso a Twitter para mi aplicación en Settings > Privacy > Twitter. Con el acceso desactivado, se me niega la posibilidad de crear una amistad utilizando TWRequest, pero todavía puedo mostrar el TWTweetComposeViewController. Recibo un aviso en iOS 5.1 todo el tiempo hasta que le concedo acceso.

Esto tiene sentido para mí. Todo TWTweetComposeViewController hace es iniciar el tweet, por lo que si el usuario ya tiene configurada una cuenta de Twitter en todo el dispositivo, ese debería ser el permiso suficiente para enviar tweets desde cualquier lugar. Realmente es un paso adicional innecesario tener que otorgar acceso por aplicación.

Si no hay cuentas de Twitter están configurados sin embargo, TWTweetComposeViewController le pedirá con este mensaje Tho:

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

con prácticos botones "Configuración" y "Cancelar".

Una nota al respecto: iOS 6 también solo solicita el mensaje "[AppName] Would Like Access to Twitter Accounts" la primera vez que una aplicación solicita acceso.

Después de eso, debe restablecer Settings > General > Reset > Reset Location & Privacy para recuperar el mensaje de solicitud.Incluso si elimina y reinstala/reconstruye una aplicación, la configuración "ya pedido una vez" persiste. Puede habilitar el acceso de forma manual en Settings > Privacy, pero ese restablecimiento es la única manera de volver a mostrar el aviso (si eso es importante para su prueba).

Dos cosas extra que descubrí. En el bloque de terminación de [ACAccountStore requestAccessToAccountsWithType:options:completion:], si granted == NO:

  1. Si [error code] == 6, el usuario no tiene cuentas definidas.
  2. Si error == nil, su usuario le negó el acceso a su aplicación, ya sea ahora o anteriormente. Si sucedió anteriormente, la solicitud se ignora silenciosamente sin que se muestre ninguna alerta en la pantalla, sin que aparezca el botón "No permitir".
+0

Muchas gracias por la respuesta. Recientemente descubrí que TWTweetComposeViewController está en desuso a partir de iOS 6 y, en su lugar, Apple quiere que usemos SLComposeViewController. Voy a probar si es el mismo caso con SLComposeVC y publicar los resultados. –

+0

He estado probando con iOS6 en el simulador y nunca he visto el mensaje "[AppName] Me gustaría tener acceso a las cuentas de Twitter", simplemente lo envía sin pedir permiso. Muy raro. Aún no lo he probado en un dispositivo. –

+0

¡Te recomiendo que lo pruebes en un dispositivo! – Ahsan

Cuestiones relacionadas