2012-01-08 24 views
9

Ứng dụng của tôi có yêu cầu nhắc mật khẩu nếu đã hơn 60 phút kể từ lần cuối họ nhập mật khẩu của họ hoặc nếu người dùng nhập ứng dụng sau khi đã khóa thiết bị.Làm thế nào bạn có thể biết nếu iphone bị khóa?

Vấn đề là khi thiết bị bị khóa. Nếu người dùng chỉ chuyển đổi giữa các ứng dụng, ứng dụng không cần phải nhắc mật khẩu trừ khi nó đã được 60 phút kể từ lần nhắc mật khẩu cuối cùng. Nếu họ khóa thiết bị, hãy nhắc lại ngay cả khi thiết bị của bạn dưới 60 phút.

Notifications như applicationWillResignActive không giúp đỡ vì tôi không thể xác định xem các ứng dụng đang hoạt động từ chức do thiết bị bị khóa hoặc chuyển đổi người dùng sang ứng dụng khác.

Trong tìm kiếm, tôi thấy bài viết đó nói rằng tôi có thể đăng ký để quan sát UIApplicationProtectedDataWillBecomeUnavailable thông báo.

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; 
[nc addObserver:self selector:@selector(protectedDataWillBecomeUnavailable:) 
      name:UIApplicationProtectedDataWillBecomeUnavailable object:nil]; 

Khi nhận được thông báo này, tôi đặt cờ để nhắc mật khẩu của người dùng vào lần tiếp theo ứng dụng hoạt động. Nhưng thử nghiệm của tôi cho thấy rằng thông báo này là không phải là được gửi trừ khi thiết bị có thiết lập mật mã.

Tôi đã viết mã kiểm tra để quan sát tất cả các thông báo và tôi không thấy bất kỳ thông báo nào khác cho biết thiết bị đang bị khóa.

Có cách nào khác để biết khi nào thiết bị bị khóa không?

+1

bản sao có thể có của [Sự kiện mở khóa khóa iphone] (http: // stackoverflow.com/questions/706344/lock-unlock-events-iphone) –

+0

Có lẽ lý do, bạn không nhận được thông báo đã nói là vì những điều sau: "Những điều này chỉ được thực thi khi người dùng đã bảo vệ Mật khẩu thiết bị của họ, Bảo vệ dữ liệu là không có trong Trình mô phỏng. " –

Trả lời

2

Câu hỏi này hấp dẫn tôi, vì vậy tôi nhìn xung quanh một chút tò mò. Trong khi nó không xuất hiện có một thông báo tiện dụng được gửi đi, có vẻ như là một hack thông minh bằng cách sử dụng gia tốc kế. Dưới đây là một liên kết đến rằng:

Lock Unlock events iphone

+0

Cảm ơn! Đó là một kỹ thuật thông minh. Tuy nhiên, các ứng dụng sẽ phải ở lại còn sống trong nền, mà tôi muốn tránh. – jimmyg

+0

Đúng, lý tưởng là một thông báo tương tự như UIApplicationProtectedDataWillBecomeUnavailable sẽ được gửi đi. –

0

Có đơn giản hơn cách - chỉ bắt UIApplicationDidBecomeActiveNotification thông báo và đo thời gian trôi qua kể từ bắt ngoái. Nhưng nó đòi hỏi phải thiết lập lại bộ đếm thời gian khi người dùng chạm vào ứng dụng. Nó có thể được thực hiện bắt tất cả các sự kiện tap vào cửa sổ ứng dụng. Thời gian giữa lần nhấn cuối cùng và UIApplicationDidBecomeActiveNotification sẽ cho bạn thời gian chờ thực. Cũng cần phải kiểm tra thời gian giữa hiện tại và gần đây UIApplicationDidBecomeActiveNotification - nó có thể ít hơn giữa tap cuối cùng và UIApplicationDidBecomeActiveNotification.

UIApplicationDidBecomeActiveNotification phát sinh khi:

  1. App ra mắt
  2. App khôi phục từ nền
  3. App được mở khóa
  4. cuộc gọi điện thoại kết thúc

Tức là mọi lúc khi ứng dụng xuất hiện trên màn hình sau một số hành động.

+0

Cảm ơn. Điều đó sẽ hữu ích nếu chỉ có nó nói với tôi cho dù thiết bị đã bị khóa kể từ lần cuối cùng ứng dụng chạy. Ứng dụng cần nhắc mật khẩu nếu thiết bị bị khóa. Nếu nó không bị khóa, nó cần phải xem nếu nó đã được 60 phút kể từ khi nó cuối cùng nhắc nhở cho một mật khẩu. Tôi có thể kiểm tra trong 60 phút. Tôi chỉ không biết nếu điện thoại đã bị khóa trước đó. – jimmyg

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