Resultado de Twitter incorrecto después de un bash de envío fallido

Al usar TWTweetComposeViewController en TWTweetComposeViewController para networkingactar y enviar un Tweet, si el Tweet es un duplicado, se muestra una alerta de error que indica que el Tweet está duplicado y no se puede enviar, pero TWTweetComposeViewControllerCompletionHandler sigue obteniendo un valor de resultado de TWTweetComposeViewControllerResultDone lugar de TWTweetComposeViewControllerResultCancelled .

(Esto puede suceder también en otros casos, no solo para tweets duplicates, no he verificado).

Esto hace que sea imposible mostrar un post de confirmación al usuario después de un envío exitoso, porque el controller recibe el mismo resultado "Done" si el envío fue exitoso o no.

¿Hay otra forma de verificar si el envío fue realmente exitoso?

La documentation para completionHandler de TWTweetComposeViewController indica lo siguiente:

El manejador tiene un único parámetro que indica si el usuario finalizó o canceló la composition del tweet.

El manejador de finalización le dice si el usuario realmente terminó o canceló componer el tweet ella misma, independientemente del resultado de publicar el tweet.

Actualizar

He mirado un poco más en esto y parece que TWTweetComposeViewController es una de esas classs de conveniencia que le quita la mayor parte del trabajo al desarrollador a cambio de no permitir que el desarrollador maneje nada por sí mismo. En este caso, el desarrollador no tiene forma de manejar los errores que ocurren al enviar el tweet y debe confiar en los cuadros de dialog de alerta proporcionados por iOS para informar al usuario en su lugar.

Puede piratear esto usando el método de Saleh, aunque no considero que sea lo suficientemente seguro para usar en una aplicación real. Ver los comentarios en su respuesta.

Otro método es implementar su propio controller de vista que maneja la composition y el envío del tweet. Puede hacer esto siguiendo el procedimiento en la siguiente respuesta de stackoverflow .

Verifique el post de alerta, si se muestra el post de alerta, podrá saber que ocurrió el error. Creo que el post de alerta se agrega en la window. Puede verificar el conteo de las subvistas de la window, si se incrementan cuando se llama a la function de delegado, sabrá que ocurrió el error.

¿No es solo un controller de vista? El resultado del controller de vista está bien, ya que indica lo que sucedió con el controller de vista (se acaba de ejecutar).

¿Con qué estás enviando tu tuit? Es probable que esa biblioteca tenga implementadas algunas cosas que puedes utilizar para determinar si tu tweet se envió con éxito o no.

  [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { if([urlResponse statusCode]==200) { //Tweet tweeted successfully.... } } 

esto puede ayudarlo. En respponse, si el código de respuesta de URL es 200, puede decir que el text está tuiteado …