2011-10-11 6 views
11

나는 로컬 알림이라는 개념을 구현하여 사용자에게 약을 복용했음을 알리는 iPhone 응용 프로그램을 만들고 있습니다.로컬 알림 일정 번호

하지만 iOS에서는 한 번에 64 개가 넘는 알림을 예약 할 수 없습니다. 하지만 데이터베이스에 날짜 - 시간 항목 수가 많습니다. 64 개 이상의 알림을 예약하려면 어떻게해야합니까?

답변

3

로컬 알림으로 앱을 만들었으며이 경우 사용자는 주어진 시간 간격 (예 : 8 : 00-20 : 00)마다 20/40/60 분마다 알림을 받았습니다. 해결책은 하루 종일 최대 64 개의 알림을 생성하고 repeatInterval of UILocalNotification을 NSCalendarUnitDay로 설정하는 것이 었습니다. 물론 더 정교한 알림 패턴을 사용해야하는 경우이 방법을 사용할 수 없습니다.

또한 iOS7 이후로 클라이언트 요구 사항으로 인해 백그라운드 앱 새로 고침에서 알림 일정을 다시 잡아야한다는 점을 언급 할 가치가 있습니다.

4

기본 해결 방법은 특정 간격으로 발생하는 알림에 대해 repeatInterval을 사용하는 것입니다. 중복 된 알림 수가 줄어 듭니다. 그러나 숫자가 64를 초과하는 경우 userInfo 사전을 사용하고 다음 알림의 시간과 메시지를 전달하고 - (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification 메서드가 호출 될 때 일정을 계획하는 한 가지 전략을 사용할 수 있습니다. 이것은 약간 까다로울 수 있으므로 적절한 데이터가 userInfo 사전에 전달되고 알림이 정확하게 설정됨을주의해야합니다. 도움이되기를 바랍니다.

+2

앱이 백그라운드 또는 비활성 상태 일 때 알림이 실행되고 'didReceiveLocalNotification' 메소드가 호출되지 않을 경우 사용자가'취소 '버튼을 클릭하면 문제가 발생합니다. 이 경우에는 더 나은 전략입니다. 더 나은 것을 찾으면 말해줘. –

13

이미 알고 계시 겠지만 앱 당 최대 64 개의 알림을 예약 할 수 있습니다. 그 이상을 추가하면 시스템은 가장 빨리 발포하는 64 개의 알림을 유지하고 다른 알림은 무시합니다.

모든 알림이 예약되도록하는 한 가지 방법은 먼저 처음 64 개의 알림을 예약 한 다음 정기적 인 시간 간격으로 (앱을 시작할 때마다 또는 알림이 실행될 때마다) 알림 수를 확인합니다 예약되어 있고 알림이 있으면 n 알림을 말한 다음 다음 (64 - n) 알림을 예약하십시오. 알림 수는 64보다 적어도 경우이 경우 내가 발사, 배경 처리 및 통지의 발사에 다음, 먼저 첫번째 (64) 알림을 예약하는 것보다 다른 방법을 모르는

int n = [[[UIApplication sharedApplication] scheduledLocalNotifications] count]; 
int x = 64 - n; 
// Schedule the next 'x' notifications 
+1

이것은 기기 당 앱당 64 개의 알림을 의미하거나 앱 당 64 개의 알림을 의미한다고 가정합니다. 예를 들어 두 개의 다른 전화기를 사용하는 경우 각각의 전화기에 64 개의 알림을 사용할 수 있습니까? – Squirrl

+1

장치 당 앱당 64 개의 알림을 의미합니다. –

2

는 확인 그런 다음 알림을 다시 예약하십시오.

나는 애플의 통지 구현이 왜 절름발이인지 모르겠다. 누구든지 나를 알게되면 더 좋은 방법을 알 수 있습니다.

0

Apple Doc는 말한다 :

앱은 예정 통지의 수를 제한 할 수 있습니다; 시스템은 가장 빨리 발포하는 64 통보를 유지하고 (자동 통보 된 통보는 단일 통보로 계산 됨) 나머지를 폐기합니다.