thể trùng lặp:
UIDevice uniqueIdentifier Deprecated - What To Do Now?UUID cho ứng dụng trên iOS5
Như tôi hy vọng bạn nhận thức được, các uniqueIdentifier
trong bị phản đối trong iOS5. Những gì tôi đang tìm kiếm về cơ bản các chức năng tương tự cho iOS5.
Những gì tôi hiểu từ tài liệu này là mong muốn rằng chúng tôi (nhà phát triển) tạo UUID của riêng mình (sử dụng CFUUIDCreate
Tôi đoán) và lưu trữ nó trong NSUserDefaults
. Điều này, tuy nhiên, làm cho tôi rùng mình một chút và không hề cảm thấy tiết kiệm. Cảm thấy hơi vô nghĩa khi có UUID trong trường hợp này.
Lý do tôi cần UUID là vì tôi gửi thông tin bó bao gồm UUID tới máy chủ của tôi trong quá trình xác thực và muốn bỏ qua một số bước nếu máy chủ có thể "đoán" người dùng tiếp theo ứng dụng được khởi chạy hoặc cài đặt lại hoặc một ứng dụng khác triển khai thư viện của tôi. CFUUIDCreate
dường như không giúp tôi với điều này.
Tôi cũng xem nhanh gekitz, nhưng khi tôi hiểu nó, nó chỉ dựa trên địa chỉ MAC của thẻ "Ethernet" trong điện thoại. Điều này không phù hợp vì tôi có cảm giác mơ hồ rằng địa chỉ MAC có thể thay đổi. Các uniqueIdentifier
trong là
Một chuỗi chữ và số duy nhất cho mỗi thiết bị dựa trên các chi tiết phần cứng khác nhau.
Tôi đã viết mã này để truy xuất UUID. Nhưng ngay sau khi tôi làm sạch trong XCode và cài đặt lại ứng dụng trên điện thoại, tôi nhận được một UUID mới.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *UUID = @"";
if (![defaults valueForKey:@"UUID"])
{
CFUUIDRef UUIDRef = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef UUIDSRef = CFUUIDCreateString(kCFAllocatorDefault, UUIDRef);
UUID = [NSString stringWithFormat:@"%@", UUIDSRef];
[defaults setObject:UUID forKey:@"UUID"];
}
else {
UUID = [defaults valueForKey:@"UUID"];
}
[deviceInformation setObject:UUID forKey:@"UUID"];
Nói tóm lại, câu hỏi của tôi là như sau:
Có một số cách vững chắc của việc tạo ra một UUID được dựa trên các thiết bị đó là "cứng" để làm xáo trộn và mang lại cho tôi như nhận một chút một cái gì đó để phụ thuộc và tin tưởng vào? Điều này không cần phải dựa trên thiết bị, có thể dựa trên ứng dụng dưới dạng UUID ứng dụng miễn là ứng dụng này giống nhau sau khi cài đặt lại.
Tại sao UUID từ 'CFUUIDCreate' được lưu trữ bằng' NSUserDefaults', không thỏa mãn trường hợp sử dụng xác thực của bạn? Mỗi lần cài đặt sẽ luôn gửi cùng một giá trị (cho đến khi nó bị xóa và cài đặt lại). Nó có thể gây phiền nhiễu trong khi phát triển, nhưng người dùng không thường xuyên xóa ứng dụng của anh ấy, phải không? – DarkDust
Ngoài ra, tại sao MAC thay đổi? Nó có thể thay đổi trên PC, nơi bạn có thể chỉnh sửa nó bằng một số công cụ, nhưng miễn là bạn không làm điều đó thì MAC không bao giờ thay đổi. – DarkDust
@DarkDust Nó không phải là một bản sao có thể. Tôi đã đọc bài đăng đó trước khi tôi đăng bài của riêng mình. Bạn đã trả lời nhận xét thứ hai của mình trong chính nhận xét đó. Lần sau khi ứng dụng được cài đặt, tôi cần cùng một UUID, không phải là UUID mới cho cài đặt đó. Tôi xóa các ứng dụng khá reguarlly, và tôi cũng là một người dùng. Tuy nhiên, câu hỏi SO này không phải là về thói quen của người dùng, bất kể họ là gì. Yêu cầu của tôi là UUID là duy nhất nhưng cũng giống như mọi lần cài đặt. –