¿Cómo configurar un post para que no se lea / lea mediante la API de Gmail utilizando el objective-C SDK?

Escribí la siguiente function para modificar el post marcándolo sin leer:

- (void)modifyMessageWithId:(NSString *)gmailMessageId { __block GTLQueryGmail *query; query = [GTLQueryGmail queryForUsersMessagesModify]; query.identifier = gmailMessageId; query.addLabelIds = @[@"UNREAD"]; [self.gmailService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLGmailMessage *result, NSError *error) { // Check result here }]; } 

Luego comprobé el resultado y hay un error que dice que el ID (que creo que significa el query.identifier que establezco) es un nombre de campo desconocido. También intenté establecer query.messageId en query.messageId lugar y obtuve un error similar:

(lldb) po error

Error Domain=com.google.GTLJSONRPCErrorDomain Code=400 "The operation couldn't be completed. (Unknown field name: id)" UserInfo=0xdd37e70 {error=Unknown field name: id, GTLStructunetworkingError=GTLErrorObject 0xdd37cd0: {message:"Unknown field name: id" code:400 data:[1]}, NSLocalizedFailureReason=(Unknown field name: id)}

¿Alguna idea de como hacer esto?

Este fue un error; ahora está arreglado

Ya no es necesario usar la solución estricta = falsa que se menciona aquí .

Hola Fatshu y Andy,

mientras trabajamos para solucionar el problema raíz, hacer esto debería hacer que funcione temporalmente:

 query.urlQueryParameters[@"strict"] = @"false"; 

(justo antes de su llamada para ejecutarQuery).

Saludos y disculpas por las molestias,

Jorge

EDIT: Como el usuario 3377170 señala correctamente, el error ahora se soluciona y la solución ya no es necesaria.

No hay nada malo con la API REST de Gmail. Pude utilizar el APIs Explorer de Google para marcar un correo electrónico como no leído. El problema puede estar en su iOS SDK.

Entonces, hay una manera de hacer esto, pero es posible que tengas que renunciar al SDK de iOS y hacer una request HTTP directa a su API REST. Aquí sabrás como podrás hacerlo:

Autorice su aplicación a través de su flujo de OAuth y luego envíe una request de POST a:

 https://www.googleapis.com/gmail/v1/users/{SOME_EMAIL_ADDRESS}/messages/{MESSAGE_ID}/modify?key={YOUR_API_KEY} 

con el siguiente cuerpo de request POST:

 { "addLabelIds": ["UNREAD"] } 

Consulte la documentation de su API sobre cómo modificar los posts para get más detalles. Sugiero que intentes usar su API Explorer, como lo hice, para ver si te funciona o no.

Parece que hay un error en el API SDK de Gmail.