2012-08-17 19 views
13

Trong iOS, tôi cần biết thời gian thực tế (UTC), không phải thời gian của thiết bị. Nói cách khác, người dùng không nên giả mạo thời gian hoặc ngày.Có cách nào để xác định thời gian và ngày thực tế trong iOS (không phải thời gian của thiết bị)

Bất kỳ thứ gì yêu cầu kết nối mạng đều không tốt (vì vậy việc truy cập máy chủ thời gian không phải là một tùy chọn).

AFAIK, có 2 cách lý thuyết đạt được điều này:

  • Sử dụng dấu thời gian từ tín hiệu vệ tinh GPS
  • Lấy thời gian hiện tại từ tàu sân bay

Vấn đề là thông tin này không được tiếp xúc bởi bất kỳ API nào trong iOS.

Có cách nào khác không?

+0

Chỉ cần ra khỏi tò mò tại sao thời gian chính xác này rất quan trọng cho dự án của bạn? Nếu bạn không nhớ yêu cầu của tôi. –

+0

Đăng ký thời gian. Nó phải là giả mạo. –

+0

Không có vấn đề gì tùy chọn bạn tìm thấy, nếu điện thoại bị bẻ khóa thì tất cả mọi phiên cược đều bị tắt. –

Trả lời

1

Bạn có thể xem giâyFromGMTForDate: và secondsFromGMT trong NSTimeZone. Nếu bù đắp GMT tăng/giảm khi thời gian của thiết bị được thay đổi, chúng cung cấp một cách để sửa dấu thời gian của bạn thành GMT (và có thể chuyển đổi thành UTC).

+1

API đó vẫn sử dụng đồng hồ của thiết bị (như được thiết lập bởi người dùng). Nó không cung cấp một cách để xác định thời gian UTC thực tế. –

2

Hầu hết các giải pháp bạn có thể tìm thấy (bao gồm việc nhận dữ liệu GPS từ CoreLocation để truy cập thông tin thời gian) đều thiếu sót vì chúng phụ thuộc vào thiết bị thực tế để truy cập thời gian. Bạn sẽ cần phải kết nối với một máy chủ thời gian (tôi sẽ đề nghị kiểm tra máy chủ NTP). Tôi đã nhìn vào khung điện thoại cốt lõi và không thể tìm thấy bất cứ thứ gì có thể cung cấp thời gian mạng. Bạn có thể muốn điền vào một báo cáo lỗi và yêu cầu táo để mở rộng một trong các lớp học để bao gồm thời gian.

0

Bạn không thể có được các dữ liệu GPS thô và tài sản timestamp của CLLocation trong locationManager:didUpdateLocations: được thiết lập với đồng hồ hệ thống

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