Tôi hiện đang lưu trữ tên người dùng (email) và một hàm băm nhỏ của email và mật khẩu trong iOS KeyChain. Tôi đang sử dụng phiên bản ARC'ified được tìm thấy ở đây .
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
[wrapper setObject:APP_NAME forKey:(__bridge id)kSecAttrService];
[wrapper setObject:email forKey:(__bridge id)kSecAttrAccount];
[wrapper setObject:token forKey:(__bridge id)kSecValueData];
Tất cả điều này đều hoạt động tốt khi tôi cần rút mã thông báo cho các cuộc gọi mạng của mình trong khi ứng dụng đang hoạt động. Nó hoạt động để đăng nhập từ một khởi động sạch, cũng như tất cả các cuộc gọi mạng trong suốt. Rắc rối bắt đầu khi ứng dụng ở chế độ nền.
Hãy nhớ rằng điều này chỉ xảy ra thường xuyên và tôi vẫn chưa ghim nó vào một phiên bản hoặc thiết bị iOS cụ thể.
Người dùng đi đến một vị trí (giám sát khu vực) và tôi muốn cập nhật trạng thái của máy chủ. Tôi cố gắng rút mã thông báo ra khỏi chuỗi khóa, giống như cách tôi làm đối với mọi cuộc gọi mạng khác và cập nhật trạng thái. Nhưng đối với một số người dùng, giá trị là con số không. Không có nó, tôi không thể cập nhật nội dung mạng. Tại sao điều này sẽ hiệu quả với hầu hết, nhưng không phải với một tỷ lệ nhỏ?
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
NSString *token = [wrapper objectForKey:(__bridge id)kSecValueData];
Tôi đã quay lại phiên bản không phải ARC của keychainwrapper, nhưng tôi vẫn nhận được kết quả tương tự. Tôi sẽ đánh giá cao bất kỳ phản hồi nào về điều này. Đó chỉ là một phần nhỏ người dùng của tôi, nhưng đó là vấn đề tôi muốn khắc phục và không lo lắng. Cảm ơn trước.
Ngoài ra, tất cả công việc nền của tôi được thiết lập trong backgroundTask để ngăn mọi thứ quá thời gian. Tôi không gặp bất kỳ vấn đề nào với công việc xung quanh chuỗi khóa, nhưng tôi không để mọi thứ tiếp tục cho đến khi mã thông báo của tôi được lấp đầy.
CHỈNH SỬA Tôi đã tìm ra vấn đề của mình với việc họ không truy xuất các giá trị từ nền. Tôi sẽ đăng câu trả lời bên dưới và chấp nhận nó vì tôi cảm thấy câu hỏi này có thể trở nên có giá trị đối với những người khác sau này.