2008-12-04 41 views
5

Tôi đang xây dựng ứng dụng yêu cầu một số dữ liệu từ Nhật ký cuộc gọi của iPhone (chỉ đọc). Nhật ký cuộc gọi là một db sqlite có tại "/User/Library/CallHistory/call_history.db". Tôi đã sử dụng một thiết bị bẻ khóa để trích xuất nhật ký. Tuy nhiên, cố gắng mở vị trí này bằng cách sử dụng lệnh sqlite_open3() Tôi nhận được lỗi SQLITE_ERROR, theo tài liệu thư viện có nghĩa là "lỗi SQL hoặc cơ sở dữ liệu bị thiếu". Trong một nỗ lực để gỡ lỗi, tôi đã sử dụng NSFileManager để liệt kê thư mục ('/ User/Library /'). Nó sẽ xuất hiện như thể nó trở về một bộ lọc "kết quả", loại trừ thư mục 'CallHistory' cùng với một vài thư mục khác.Truy cập nhật ký Cuộc gọi của iPhone bằng iPhone SDK

Hệ thống tệp sử dụng một loạt bí danh để tạo ảo giác về cấu trúc tệp OS X truyền thống và tôi không biết liệu chúng có ảnh hưởng đến kết quả của tôi hay không.

Nhật ký cuộc gọi chỉ hiển thị trên thiết bị chứ không phải trình mô phỏng. Tôi đã không thể làm cho nó hoạt động trên iPhone thế hệ thứ nhất chạy phần mềm chống cháy 2.1.

Đây là một số mã tôi đã sử dụng để kiểm tra đầu ra

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

Tôi có một nghi ngờ rằng Apple đang chặn truy cập vào các thư mục như là một phần của chiến lược sandboxing của nó, tuy nhiên tôi không có bằng chứng ở giai đoạn này. Tuy nhiên, tôi có thể truy cập sổ địa chỉ mà không gặp bất kỳ vấn đề gì, vì vậy tôi hơi bối rối.

Cảm ơn

Trả lời

14

Không có quyền truy cập vào nhật ký cuộc gọi từ Cocoa Touch hoặc các API iPhone khác.

+4

trừ khi bạn bẻ khóa. –

+0

cách ứng dụng này hoạt động? bạn có biết gì về điều này không - http://itunes.apple.com/us/app/callog/id327883585?mt=8 – Saurabh

+0

Tôi tự hỏi làm cách nào CalLog cũng làm như vậy – Zebs

-1

Thành thật mà nói, làm sao bạn có thể tưởng tượng họ sẽ cho phép bạn truy cập toàn bộ Nhật ký cuộc gọi? Làm thế nào về bạn truyền tải nó qua Internet một khi bạn đã lấy nó và tận dụng tốt các thông tin này?

+1

Vâng, đó không phải là điều an toàn nhất tôi đồng ý, nhưng tôi tin rằng bạn có thể truy cập vào sổ địa chỉ, vì vậy nó không phải là nếu nó vượt quá niềm tin. – Jonathan

+1

Đó là (một trong nhiều lý do) tại sao chúng quá hạn chế về kho ứng dụng. Bạn có thể trong lý thuyết viết một ứng dụng mà sẽ gửi sổ địa chỉ của bạn hoặc danh sách cuộc gọi ra mạng, nhưng họ muốn (hy vọng) ngăn chặn ứng dụng đó đi vào cửa hàng –

+4

Đừng ngớ ngẩn. Có rất nhiều chương trình trên máy tính của bạn sẽ hoàn toàn có khả năng gửi thông tin liên hệ, email và các nội dung khác cho thần biết nơi bạn không biết về nó. Và bây giờ nó trên một chiếc điện thoại nó đột nhiên là một vấn đề? – Rolf

3

Hãy nhớ rằng tôi chưa thử bất kỳ điều nào trong số này.

Logic của bạn dường như là nếu bạn có thể truy cập vào Sổ địa chỉ db, tại sao không phải nhật ký cuộc gọi db? Vâng, sổ địa chỉ được hiển thị thông qua các API đã xuất bản - nhật ký cuộc gọi không được hiển thị. Do đó, tôi không nghĩ nó lạ đến mức bạn không thể truy cập tệp db của nó.

2

Ứng dụng không có nghĩa là truy cập bất kỳ thứ gì trong hộp cát của chúng. Cơ sở dữ liệu Sổ Địa chỉ có thể truy cập được vì nó được truy cập bởi các khung công cộng. Trước firmware 2.1, các ứng dụng đã có quyền truy cập chỉ đọc ra khỏi sandbox của chúng.

3

Bạn không thể truy cập nhật ký cuộc gọi bằng SDK và API được chấp thuận. Điều này là do thiết kế.

0

với tiện ích cấu hình và skd bạn có thể theo dõi khi cuộc gọi được đặt, nhưng không thể xem ai đã cố gắng vượt qua cùng một vấn đề, thực hiện tiến bộ nhưng táo đã làm cho nó trở nên riêng tư. ,

2

Tôi sẽ đặt cược rằng PhoneView trích xuất dữ liệu từ thư mục sao lưu iPhone trên Mac .. cơ sở dữ liệu sqlite được lưu trữ ở đó với tên có thể dự đoán được.

Các vấn đề liên quan