Accediendo al registro de llamadas del iPhone con el SDK de iPhone

Estoy construyendo aplicaciones que requieren algunos datos del registro de llamadas de iPhone (solo lectura). El registro de llamadas es un sqlite db ubicado en ” /User/Library/CallHistory/call_history.db “. Usé un dispositivo jailbroken para extraer el registro. Sin embargo, al tratar de abrir esta ubicación con el comando sqlite_open3 () recibo un error SQLITE_ERROR , que según la documentación de la biblioteca significa “error de SQL o base de datos faltante”. En un bash de depurar el error, he usado NSFileManager para enumerar la carpeta (‘/ User / Library /’). Parece como si estuviera devolviendo un conjunto de resultados “filtrados”, que excluye la carpeta ‘CallHistory’ junto con varias de las otras carpetas.

El sistema de archivos usa una serie de alias para dar la ilusión de la estructura tradicional de archivos de archivo OS X, y no sé si estos tienen un efecto en mis resultados.

El registro de llamadas solo está presente en un dispositivo, y no en el simulador . No he podido hacer que funcione en un iPhone de primera generación que ejecuta fireware 2.1.

Este es un código que utilicé para probar la salida

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); } 

Sospecho que Apple está bloqueando el acceso al directorio como parte de su estrategia de sandboxing, sin embargo, no tengo pruebas en esta etapa. Sin embargo, puedo acceder a la libreta de direcciones sin ningún problema, así que estoy un poco confundido.

Gracias

No hay acceso al registro de llamadas desde Cocoa Touch u otras API de iPhone.

Tenga en cuenta que no he probado nada de esto.

Su lógica parece ser que si puede acceder a la libreta de direcciones db, ¿por qué no el registro de llamadas db? Bueno, la libreta de direcciones está expuesta a través de las API publicadas; el registro de llamadas no lo está. En consecuencia, no creo que sea tan extraño que tampoco puedas acceder a su archivo db.

No puede acceder al registro de llamadas utilizando el SDK y las API aprobadas. Esto es por diseño.

Las aplicaciones no están destinadas a acceder a nada fuera de su recinto. La base de datos de la libreta de direcciones es accesible porque los marcos públicos la acceden. Antes del firmware 2.1, las aplicaciones tenían acceso de solo lectura fuera de su entorno limitado.

Apuesto a que PhoneView extrae los datos de la carpeta de copia de seguridad de iphone en la Mac. Las bases de datos de sqlite están almacenadas allí con nombres predecibles.

con la utilidad de configuración y skd puedes monitorear cuándo se realizan las llamadas, pero no se puede ver a quién, he estado tratando de superar el mismo problema, pero progresando, pero Apple definitivamente lo hizo de modo que su información privada, al menos quién tu llama,

Honestamente, ¿cómo te imaginas que te dejarían acceder a todo el registro de llamadas? ¿Qué tal si lo transmites a través de Internet una vez que lo has buscado y haces un buen uso de esta información?