Доступ к журналу вызовов iPhone с помощью iPhone SDK

Я создаю приложение, которое требует некоторые данные из журнала вызовов iPhone (только для чтения). Журнал вызовов представляет собой базу данных sqlite, расположенную по адресу " /User/Library/CallHistory/call_history.db ". Я использовал взломанное устройство для извлечения журнала. Однако, пытаясь открыть это местоположение с помощью команды sqlite_open3(), я получаю ошибку SQLITE_ERROR, которая в соответствии с документацией библиотеки означает "ошибка SQL или отсутствующая база данных". В попытке отладить ошибку, я использовал NSFileManager для перечисления папки ('/User/Library/'). Казалось бы, как будто он возвращает "отфильтрованный" набор результатов, который исключает папку "CallHistory" вместе с несколькими другими папками.

Файловая система использует серию псевдонимов, чтобы создать иллюзию традиционной файловой структуры OS X, и я не знаю, влияют ли они на мои результаты.

Журнал вызовов присутствует только на устройстве, а не на симуляторе. Мне не удалось заставить его работать на iPhone 1-го поколения с установленным Fireware 2.1.

Это код, который я использовал, чтобы проверить вывод

NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/var/mobile/Library/"];

while( bar = [dirnum nextObject])
{
    //Uncomment if you don't want to log sub folders
    //[dirnum skipDescendents];

    NSLog(bar);
}

У меня есть подозрение, что Apple блокирует доступ к каталогу как часть своей стратегии песочницы, однако на данном этапе у меня нет никаких доказательств. Тем не менее, я могу получить доступ к адресной книге без каких-либо проблем, поэтому я немного запутался.

Спасибо

8 ответов

Решение

Нет доступа к журналу вызовов из Cocoa Touch или других API-интерфейсов iPhone.

Вы не можете получить доступ к журналу вызовов, используя SDK и утвержденные API. Это по замыслу.

Да, это возможно. Этот учебник работает: http://iosstuff.wordpress.com/2011/08/19/accessing-iphone-call-history/

Имейте в виду, я не пробовал ничего из этого.

Похоже, ваша логика такова: если вы можете получить доступ к БД адресной книги, то почему бы не вести журнал вызовов? Что ж, адресная книга предоставляется через опубликованные API-интерфейсы, а журнал вызовов - нет. Следовательно, я не думаю, что это так странно, что вы также не можете получить доступ к его файлу БД.

Могу поспорить, что PhoneView извлекает данные из папки резервного копирования iphone на Mac... базы данных sqlite хранятся там с предсказуемыми именами.

Приложения не предназначены для доступа к чему-либо из их песочницы. База данных адресной книги доступна, потому что она доступна из общедоступных структур. До прошивки 2.1 приложения имели доступ только для чтения из своей песочницы.

С помощью утилиты config и skd вы можете отслеживать, когда выполняются звонки, но не можете видеть, кому, я пытался обойти ту же проблему, добиваясь прогресса, но Apple определенно сделала это своей личной информацией, по крайней мере, кто ваш звонок,

Честно говоря, как вы можете представить, что они позволят вам получить доступ ко всему журналу вызовов? Как насчет того, чтобы передать его через Интернет после того, как вы его получили и эффективно используете эту информацию?

Другие вопросы по тегам