Acessando o registro de chamadas do iPhone com o iPhone SDK

Eu estou construindo a aplicação que exigia alguns dados do log de chamadas do iPhone (somente leitura). O registro de chamadas é um database sqlite localizado em ” /User/Library/CallHistory/call_history.db “. Eu usei um dispositivo com jailbreak para extrair o log. No entanto tentando abrir este local usando o comando sqlite_open3 () recebo um erro SQLITE_ERROR , que de acordo com a documentação da biblioteca significa “erro SQL ou database ausente”. Em uma tentativa de depurar o erro, usei o NSFileManager para enumerar a pasta (‘/ User / Library /’). Parece que está retornando um conjunto “filtrado” de resultados, que exclui a pasta “CallHistory” junto com várias outras pastas.

O sistema de arquivos usa uma série de alias para dar a ilusão de tradição na estrutura de arquivos do OS X, e não sei se isso está afetando meus resultados.

O registro de chamadas está presente apenas em um dispositivo e não no simulador . Eu tenho sido incapaz de fazê-lo funcionar em um iPhone 1st gen executando fireware 2.1.

Este é um código que usei para testar a saída

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

Eu tenho uma suspeita de que a Apple está bloqueando o access ao diretório como parte de sua estratégia de sandboxing, no entanto, não tenho nenhuma prova neste estágio. No entanto, posso acessar o catálogo de endereços sem problemas, por isso estou um pouco confuso.

obrigado

Não há access ao registro de chamadas do Cocoa Touch ou de outras APIs do iPhone.

Tenha em mente que eu não tentei nada disso.

Sua lógica parece ser que, se você pode acessar o database do catálogo de endereços, por que não o registro de chamadas db? Bem, o Catálogo de Endereços é exposto por meio de APIs publicadas – o registro de chamadas não é. Conseqüentemente, eu não acho tão estranho que você não possa acessar seu arquivo db também.

Você não pode acessar o registro de chamadas usando o SDK e as APIs aprovadas. Isso é por design.

Os aplicativos não são destinados a acessar nada de sua sandbox. O database do Catálogo de Endereços está acessível porque é acessado pelas estruturas públicas. Antes do firmware 2.1, os aplicativos tinham access somente leitura fora de sua sandbox.

Eu apostaria que o PhoneView extrai os dados da pasta de backup do iphone no Mac. Os bancos de dados sqlite são armazenados lá com nomes previsíveis.

com o utilitário config e skd você pode monitorar quando as chamadas são feitas, mas não consegue ver para quem, ive tentando passar pelo mesmo problema, progredindo, mas a apple definitivamente fez com que fosse sua informação privada, pelo menos para quem você chama,

Honestamente, como você pode imaginar que eles permitiriam que você acessasse todo o registro de chamadas? Que tal você transmiti-lo pela Internet depois de ter buscado e fazer bom uso desta informação?