2010-10-09 3 views
12

멀티 태스킹 지원으로 알람 시계 앱을 만들고 있습니다. 그러나, 나는 SDD의 몇 가지 한계를 고수하고있다.iOS 4 멀티 태스킹 지원 알람 시계 앱

알람 시간이 사용자가 설정 한 일부 속성과 함께 제공 될 때마다 선택한 알람 소리를 재생해야합니다. 다음 속성 : - 알람 소리는 사용자의 iPod 라이브러리에있는 음악 일 수도 있고 응용 프로그램 번들에있는 일부 사운드 파일 일 수도 있습니다. - 알람 사운드가 프로그레시브로 재생되도록 설정할 수 있습니다.

또한 알람 소리는 사용자가 앱을 취소하거나 깨울 때까지 루프로 백그라운드에서 재생해야합니다.

로컬 알림을 사용하는 것이 가장 먼저 논리적 인 일 이었지만 로컬 알림을 사용하면 앱 번들 (iPod 음악이 아님)에만 있고 길이는 최대 30 초인 사운드 파일을 재생할 수 있습니다. 또한 사용자가 알림 경고를 취소 할 때 알림을받지 못하면 iOS에서 소리 재생이 중지됩니다.

이제 백그라운드 오디오 재생 옵션을 사용하고 알람 시간까지 소리를 내지 말고 소리없이 로컬 알림을 표시하면서 알람 소리를 재생할 생각입니다. 그러나 다시 사용자가 지역 알림 경고를 취소하고 오디오 재생을 중지하는지 어떻게 알 수 있습니까? 그러나 Apple의 문서에 따르면 iPod 음악 재생 (및 공유 리소스 사용)은 배경 오디오를 재생하는 앱에는 여전히 허용되지 않습니다.

다른 일부 앱이 이러한 기능 중 일부를 수행하는 방식을 이해할 수 없습니다. 예를 들어 Night Stand HD는 백그라운드에서 iPod 음악을 재생할 수 있으며 "프로그레시브 알람 시계"라는 앱은 백그라운드에서 프로그레시브 사운드를 재생할 수 있습니다.

이러한 문제에 대한 아이디어와 제안이 있으십니까? 귀하의 도움을 크게 주시면 감사하겠습니다.

+0

배경 지식이 없지만 필요한 답변을 제공하지는 않습니다. http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/Backgroundexecurity.html – hol

답변

4

iOS의 현재 제한 사항으로는 원하는 작업을 수행 할 수 없습니다. 즉 프로그레시브 알람 시계의 개발자가 프로그레시브 알람을 재생하는 방법으로 프로그레시브 알람을 가짜로 만들 수 있다고합니다. 많은 지역 알림을 하나씩 예약하여 예약합니다. 그는 알람 소리를 프로그레시브 볼륨 레벨로 각각 10 초씩 나누었습니다. 이것은 진보적 인 경보가 위장 될 수있는 방법을 보여주는 매우 조잡한 예입니다.

UILocalNotification *notif1 = [[UILocalNotification alloc] init]; 
notif1.fireDate = [NSDate dateWithTimeIntervalSinceNow:15]; 
notif1.soundName = UILocalNotificationDefaultSoundName; 
notif1.alertBody = @"Alarm"; 
[[UIApplication sharedApplication] scheduleLocalNotification:notif1]; 
[notif1 release]; 

UILocalNotification *notif2 = [[UILocalNotification alloc] init]; 
notif2.fireDate = [NSDate dateWithTimeIntervalSinceNow:20]; 
notif2.soundName = UILocalNotificationDefaultSoundName; 
[[UIApplication sharedApplication] scheduleLocalNotification:notif2]; 
[notif2 release]; 

알림이 표시되고 15 초 후에 기본 소리가 재생됩니다. 5 초 후에 더 많은 사운드가 다시 재생됩니다. 볼륨이 증가하는 곳에서 많은 사운드 파일을 확보하면 더 많은 지역 알림을 예약하여 프로그레시브 사운드를 위장 할 수 있습니다. 이 과정은 물론 Progressive Alarm Clock의 벨처럼 청크로 쉽게 구분할 수있는 알람 소리가있는 경우에만 작동합니다. 안타깝게도 알림에서 취소를 눌러 알람을 취소 할 수 없습니다. 그렇게하려면 응용 프로그램을 시작해야합니다.

1

프로그레시브 알람 시계 개발자가 무엇을하던간에 로버트 호 룬드 (Robert Höglund)가 설명하는 AFAIK가 아니므로 전화가 조용한 상태에서도 경보가 울리며 UILocalNotification은이를 허용 할 수있는 방법이없는 것 같습니다. . 또한 알람이 보류 중일 때 앱을 수동으로 종료하면 앱에서 다시 시작해야한다는 알림을 보냅니다. 이것은 백그라운드에서 어떻게 든 실행되어야한다고 제안하는 것 같습니다.

+0

FAQ를 보면 UILocalNotification을 사용하지 않고 다른 방법을 사용하고있는 것이 분명합니다. https://insighttimer.com/pac_help를 참조하십시오. – avance

관련 문제