Я создаю приложение, которое требует некоторых данных из журнала вызовов iPhone (только для чтения). Журнал вызовов представляет собой базу данных sqlite, расположенную в "/User/Library/CallHistory/call_history.db". Я использовал взломанное устройство для извлечения журнала. Однако, пытаясь открыть это место с помощью команды sqlite_open3 (), я получаю ошибку SQLITE_ERROR, которая, согласно документации библиотеки, означает «Ошибка SQL или отсутствующая база данных». В попытке отладить ошибку я использовал NSFileManager для перечисления папки ('/ User / Library /'). Похоже, что он возвращает «отфильтрованный» набор результатов, который исключает папку «CallHistory» вместе с несколькими другими папками.
Файловая система использует серию псевдонимов, чтобы создать иллюзию традиционной файловой структуры OS X, и я не знаю, влияют ли они на мои результаты.
Журнал вызовов присутствует только на устройстве, но не на симуляторе. Мне не удалось заставить его работать на iPhone 1-го поколения с брандмауэром 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 блокирует доступ к каталогу в рамках своей стратегии «песочницы», однако на данном этапе у меня нет доказательств. Однако я могу получить доступ к адресной книге без каких-либо проблем, поэтому я немного запутался.
Спасибо