Расшифровка Gmail API загруженных данных вложения - PullRequest
0 голосов
/ 24 мая 2018

Я могу получить вложение, передавая userId, nessageID и attachmentID (для справки:

Google Developer

Cocoa Docs

Я получаю ответ, как показано ниже.

{ "data": "JVBERi0xLjYKJeTjz9IKMSAwIG9iagpbL1BERi9JbWFnZUIvSW1hZ2VDL0l...." "size": 629163 }

Я хочу декодировать данные, чтобы сохранить их в своем локальном приложении, а позже я отобразлю.

Я могу успешно загрузить и сохранить локально (папка с документами), но не могу увидеть содержимое вложения, пожалуйста, сделайте меня идеальным.

1 Ответ

0 голосов
/ 24 октября 2018

Мне только что удалось (несколько минут назад!) Декодировать полученные данные вложения в Swift (извините, я не могу кодировать target-c), так что вот шаги:

1) Подсчитать количествосимволы в «данных».Строки в кодировке Base64 должны иметь число символов, кратное 4. Если это не так, вам нужно дополнить конец строки таким количеством символов «=», которое необходимо для достижения следующего кратного 4.(Я считаю, что Google отправил данные без необходимости исправления, но вы никогда не знаете ...)

2) Как я обнаружил в этой ссылке SO ( iOS - загрузка вложения из Gmail с использованием messageId и attachmentId), Google заменил некоторые символы для передачи HTTP, поэтому вам необходимо заменить:

  • "-" (минус символ) на "+" (плюс символ)

  • "_" (символ подчеркивания) с помощью "/" (символ косой черты)

3) Затем преобразуйте "подготовленную" строку Base64 в данные, используя этот SwiftМетод инициализации данных: Данные (base64: YourBase64String , параметры: .ignoreUnknownCharacters )

Затем вы можете сохранить эти преобразованные данные в файл с правильным расширением.Мне удалось получить вложения в формате jpeg и pdf.

Надеюсь, это сработает для вас.

...