Блог Ходакова

#golang #macos #linux #overwatch и стопицот других тегов
Как импортировать SMS-ки с iOS на Android бесплатно и без скама

Так уж получилось, что я сейчас вхожу в фазу «детокса от Apple» — приобрел себе Honor 10 (отличный аппарат, ещё расскажу о нём), перевожу все данные с айфона на него.

Так уж получилось (х2), что и Google, и Huawei (приложение Phone Clone) умеют импортировать с iOS на Android многое — но не историю звонков и SMS. В интернете по этому поводу почти ничего толкового не гуглится — первые пару страниц поиска занимают приложения разной степени дерзости, которые предлагают импортировать данные «for free», но неизменно после запуска перед самим импортом просят немалые деньги за свою работу. Нет, я, конечно, понимаю, что людям надо за работу платить — но вы можете цену до загрузки сказать, а не уже когда ты скачал полгигабайта плагина для этого приложения?

Существует ровно одна программа, которая действительно импортирует SMS и список звонков с iOS на Android. Это iSMS2Droid, она условно-бесплатная (в приложении есть реклама, но функциональность не ограничена. Для импорта нужно совершить достаточно много телодвижений, и я почти сутки промучался с ним — но мне в итоге удалось сохранить всю историю SMS и звонков за последние пару лет.

Алгоритм следующий:

  • Перед началом работы следует отправить одну SMS и сделать один любой звонок. Кроме того, нужно отключить выгрузку сообщений в iCloud и загрузить из облака сообщения на устройство. Есть ещё одно обязательное условие — для бекапа списка звонков в iPhone должна стоять сим-карта (любая) — без неё iTunes не сохраняет лог звонков на компьютер.
  • Первым к компьютеру подключается iPhone. В iTunes идём и создаём резервную копию — внимание, нешифрованную. Если уже делали резервную копию — удаляем её и делаем заново. Ждём, пока копия создастся.
  • Открываем Terminal.app. Набираем open ~/Library/Application\ Support/MobileSync.
  • В открывшемся окне Finder открываем папку Backup. В ней может быть одна или несколько папок с неудобочитаемым именем. Заходим в ту, дата изменения которой наиболее близка к текущему моменту.
  • Переходим в папку 3d и копируем оттуда куда-нибудь файл 3d0d7e5fb2ce288813306e4d4636395e047a3d28 (да, вот так длинно). Выходим на уровень выше и заходим в папку 5a — оттуда копируем файл 5a4935c78a5255723f707230a451d79c540d2741. Первый файл — это база данных с SMS, второй — база данных звонков. Имена файлов, на самом деле — строки, от которых взяли SHA-1:
HomeDomain-Library/SMS/sms.db
HomeDomain-Library/CallHistoryDB/CallHistory.storedata
  • iPhone можно отключать, выкидывать в окно, дарить бомжу вместо сяоми. Подключаем Android-телефон, и с помощью Android File Transfer в папку Download на внутреннем накопителе устройства закидываем оба файла.
  • Устанавливаем iSMS2Droid. Приложение, хоть и на английском, крайне простое для понимания. Вверху две кнопки — Restore messages и Restore calls. Они-то нам и нужны.
  • По нажатию кнопки Restore calls у нас запрашивается подтверждение, что мы хотим восстановить информацию об N записях в журнале звонков. Соглашаемся — и спустя несколько мгновений все звонки у нас.
  • По нажатию кнопки Restore messages процесс несколько сложнее. Для того, чтобы записать данные об SMS во внутреннюю БД Android, iSMS2Droid необходимо временно стать приложением по умолчанию для приёма SMS. Соглашаемся с предложением, после чего нам даётся выбор — восстановить все сообщения, или же только переписку с некоторыми адресатами. Вне зависимости от выбора результат тот же — SMS загружаются в память устройства. После окончания работы iSMS2Droid вернёт приложение для SMS по умолчанию — то, чо стояло до запуска импорта.

После успешного импорта приложение и файлы из бекапа iPhone можно удалить. Всё — история SMS и звонков теперь под нашим контролем. Осталось выключить iMessage, и можно начинать наслаждаться счастливой или не очень жизнью на Android.

← Apple Watch Series 4 Исправление ошибки 500 при загрузке образов в Gitlab Registry →