2011-11-15 35 views
7

Tôi đang mã hóa ứng dụng iPad và tôi phải thay đổi đồ họa khi ngày thay đổi thành Chủ Nhật.Cách xử lý sự kiện thời gian trên iOS?

Giải pháp đơn giản của tôi là kiểm tra ngày trong các phương pháp - (void)applicationDidBecomeActive:(UIApplication *)application hoặc -(void)viewWillAppear:(BOOL)animated và đặt bộ hẹn giờ cứ 10 phút một lần để kiểm tra xem ngày có thay đổi thành Chủ Nhật hay không khi ứng dụng đang hoạt động.

Có cách nào khác, có lẽ hiệu quả hơn, cách xử lý này?

Trả lời

13

Trong đại biểu appliciation của bạn, thực hiện các phương pháp sau đây: -(void)applicationSignificantTimeChange:(UIApplication *)application

Phương pháp này được gọi khi những thay đổi trong ngày, hoặc nếu thời gian của thiết bị đã được thay đổi trong nền vì lý do gì (ví dụ như thay đổi múi giờ).

1

Có thông báo cho thời điểm ngày thay đổi. Bạn có thể nghe nó và kiểm tra xem nó là chủ nhật khi nó cháy.

Bạn cũng nên kiểm tra xem có phải chủ nhật lúc khởi chạy hay không.

+0

Bạn có biết thông báo đó được gọi như thế nào, tôi không thể tìm thấy nó ở bất cứ đâu ... – Ecarrion

1

Có vấn đề gì với giải pháp đó? Nó có trở thành chủ nhật thường xuyên hơn 10 phút một lần ở một số nơi không?

Một điều bạn có thể muốn xem xét: trong phương pháp hẹn giờ, nếu thời gian sau 23:50, hãy lên lịch hẹn giờ sớm hơn (tức là khoảng 00:00), vì vậy bạn có khả năng bắt chính xác nửa đêm.

+1

Tôi không thích ý tưởng có hẹn giờ yêu cầu ngày tháng một khoảng thời gian nào đó, tôi cảm thấy bẩn thỉu;) – Ecarrion

1

Chương này có thể hữu ích, sử dụng một số loại thông báo để cập nhật:

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1

Mặc dù bản thân tôi đã kết thúc với cùng một giải pháp bạn đang sử dụng, nó chỉ là dễ dàng hơn và đáng tin cậy hơn tôi tìm thấy.

+0

Tại sao bạn cho là đáng tin cậy hơn? – Ecarrion

+0

Có vẻ như có vấn đề khi thiết bị đi vào giấc ngủ sâu. Tôi nghĩ rằng bạn có thể cần phải đăng ký các thông báo từ xa để có được điều này để làm việc một cách chính xác ... lạ rằng Apple dường như không có một giải pháp thích hợp cho việc này, Android có hỗ trợ tuyệt vời cho loại điều này. –

4

Một tùy chọn khác là sử dụng cùng hai phương pháp mà bạn đã đề cập, "viewWillAppear:" và "applicationDidBecomeActive:" và thay vì đặt hẹn giờ cho mỗi 10 phút, chỉ cần tính khoảng thời gian giữa thời gian hiện tại và tiếp theo Chủ nhật. Hãy dành khoảng thời gian đó và sử dụng nó để đặt hẹn giờ sẽ kích hoạt chính xác vào lúc nửa đêm vào Chủ Nhật.

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