2010-09-08 36 views
37

tôi đang chơi với mã scifihifi-iphone idandersen cho keychain và đi qua các hành vi sau đây - Tôi đặt mật khẩu sử dụng, nóiCác mặt hàng móc khóa iphone vẫn tồn tại sau khi gỡ cài đặt ứng dụng?

[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123" 
        forServiceName:@"TestService" updateExisting:YES error:&error]; 

Sau đó, xóa ứng dụng thử nghiệm từ thiết bị và cài đặt nó một lần nữa - các thiết lập trước đó mật khẩu dường như vẫn còn trong keychain ...
Đó có phải là hành vi mong đợi không? Và có cách nào để đảm bảo rằng mật khẩu tôi đặt sẽ bị xóa cùng với ứng dụng?

Trả lời

30

Có, đây là hành vi mong đợi và chính xác.

Một số mục keychain có thể được chia sẻ với các ứng dụng khác mà bạn kiểm soát (chia sẻ cùng một nhóm truy cập mục móc khóa).

Bạn chỉ nên để riêng thông tin khi ứng dụng của bạn bị xóa. Bạn không có gọi lại hoặc phương pháp xóa các mục keychain khi xóa ứng dụng của bạn.

+2

Vì vậy, thực tế là tôi không muốn thông tin ở lại trong keychain sau khi gỡ bỏ cài đặt ứng dụng có thể ngụ ý rằng keychain chỉ đơn giản là sai nơi để lưu trữ nó, phải không? – Vladimir

+7

@Mihai Damian items * có thể * được chia sẻ giữa các ứng dụng nhưng không được mặc định; bạn phải đặt các nhóm truy cập. – James

+0

Nó giống như cách thức UIPasteboard được triển khai.Private chưa được chia sẻ –

1

Thật không may, đây không phải là trường hợp nữa. Nó đã được thay đổi kể từ iOS 10.3.

Đây là thay đổi có chủ ý trong iOS 10.3 để bảo vệ quyền riêng tư của người dùng. Thông tin có thể xác định người dùng không được để lại trên thiết bị sau khi ứng dụng tạo ra nó đã bị xóa.

Nó chưa bao giờ là một phần của hợp đồng API mà các mặt hàng keychain được tạo bởi ứng dụng sẽ tồn tại khi ứng dụng bị xóa. Điều này có luôn là chi tiết triển khai.

Xem reference here.

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