2013-03-07 2 views
1

내 앱에서 30 분마다 로컬 푸시 알림을 보내려고합니다. 한 가지 방법은 local push notification을 구성하고 실행하는 것입니다. 그러나 사용자가 시간을 변경하고 30 분 앞으로 이동할 수있는 가능성이 있습니다. 이런 식으로 속임수를 쓸 수 있습니다.시간 변경 후 로컬 푸시 알림 피하기

알림이 30 분 후에 만 ​​발생하도록 앱을 구성하고 싶습니다. 어떻게해야합니까? 내 응용 프로그램은 서버와 통신하여 타임 스탬프를 얻을 수 있지만 많은 서버 자원을 사용하지 않는 작업을 수행하려고합니다. 다음과 같이 시스템 클럭을 변경하는 사용자를 감지하는 내가 생각할 수있는

+0

알림을 취소하고 일정을 변경할 수 있습니다 .. – Rajneesh071

+0

@ Rajneesh071 그게 뭔가요? –

답변

0

유일한 방법은 다음과 같습니다 응용 프로그램의 출시는, 서버의 시간을 물어 그와 [NSDate date]의 차이를주의

  1. . [NSNumber numberWithFloat:serverOffset];
  2. - (BOOL)deviceClockChanged과 같은 방법을 구현하여 서버에 다시 요청하고 지속 된 값과 비교합니다. 차이가 동기화 요청에 대한 클록 드리프트 + 대기 시간에 대한 약간의 허용 오차보다 크면 시계가 변경되었다고 결론 내릴 수 있습니다. 이 모든 작업을 UTC로 수행하여 표준 시간대 사이의 사용자 이동과 독립적으로 작동합니다.
  3. 이것을 고려하십시오 : 사용자가 알림을 지연시키기 위해 시간에 대해 앱을 속일만큼 심하게 원하는 경우 전화기의 나머지 부분을 엉망으로 만들면 어쩌면 알림 일정을 수정하도록 할 수 있습니다.

원하는 경우 포인트 1과 2에 대한 코드 예제를 제공 할 수 있으며 원하는 경우 사용자가 포인트 3에 대해 @ "경고 텍스트"를 제공하여 사용자가 자신의 통지를 편집하는 것에 대해 정말로 죄책감을 느끼게 할 수 있습니다.

내 원래 대답은 여기에 있습니다. 당신이 사용자 편집 알림을 수 있도록 선택하는 경우, 이러한 방법 열쇠가 될 것입니다 ... UIApplication은 속성이 있습니다

NSArray *scheduledLocalNotifications; 

및 구현 :

- (void)cancelLocalNotification:(UILocalNotification *)notification 

그럼, 취소, 하나를 변경을 다시 예약 .

+0

그 사람이 타이머를 속이고 현지 알림을 수신 할 시간 내에 앞으로 나아갈 것임을 어떻게 알 수 있습니까? –

+0

아, 사용자가 휴대 전화 시계를 변경한다는 의미입니까? 이를 탐지하는 유일한 방법은 기계가 아닌 시계와 비교하는 것입니다. 시간을 확인하여 서버에 부담을 주어야합니다. (사용자가 '기기 시간 변경'이라고 말하기 위해 질문을 편집 할 수 있습니다). – danh

+0

그게 내가 원하는거야, 내가 사용할 수있는 서버 머신을 가지고있다. 그러나 나는 전략을 이해할 수 없다. –