【问题标题】:iOS 4 Alarm Clock App with Multitasking Support支持多任务处理的 iOS 4 闹钟应用程序
【发布时间】:2011-04-23 07:32:12
【问题描述】:

我正在制作一个支持多任务处理的闹钟应用。但是,我受困于 sdk 的一些限制。

每当闹钟时间带有用户设置的某些属性时,我都需要播放选定的闹钟声音。 这些属性: - 警报声可以是用户 iPod 库中的音乐,也可以是应用程序包中的一些声音文件。 - 警报声可以设置为渐进式播放。

此外,警报声必须在后台循环播放,直到用户取消或唤醒应用程序。

我想到的第一个合乎逻辑的事情是使用本地通知,但是使用本地通知,您可以播放仅在应用程序包中(不是 iPod 音乐)并且最长 30 秒长的声音文件。此外,当用户取消通知警报时,您不会收到通知,iOS 只是停止播放您的声音。

现在我正在考虑使用背景音频播放选项并在闹钟时间之前播放静音,然后播放闹钟声音同时也显示本地通知而没有声音。但是我又如何知道用户是否取消了本地通知警报并停止播放音频。然而,根据 Apple 的文档,播放背景音频的应用程序仍然不允许播放 iPod 音乐(和使用共享资源)。

我也无法理解其他一些应用程序是如何实现这些功能的。例如,Night Stand HD 可以在后台播放 iPod 音乐,而名为“Progressive Alarm Clock”的应用程序可以在后台播放渐进式声音。

对这些问题有什么想法和建议吗?您的任何帮助将不胜感激

【问题讨论】:

标签: iphone objective-c ios4 multitasking


【解决方案1】:

我想说,在 iOS 的当前限制下,你想做的事情是不可能的。也就是说,您可能可以通过执行 Progressive Alarm Clock 的开发人员来播放渐进式警报来伪造渐进式警报。通过安排许多本地通知,一个接一个。他将警报声分成了 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 秒,声音将再次播放。通过拥有一堆音量增加的声音文件,可以通过安排更多本地通知来伪造渐进式声音。当然,这只有在你有一个可以很容易地分成块的警报声时才有效,就像渐进式闹钟中的钟声一样。不幸的是,您无法通过点击通知中的取消来取消警报。您必须启动应用程序才能执行此操作。

【讨论】:

【解决方案2】:

无论渐进式闹钟开发人员在做什么,这都不是 Robert Höglund 所描述的,AFAIK,因为即使手机处于静音状态,闹钟也会响起,而 UILocalNotification 似乎没有任何方法允许这样做。此外,如果您在警报未决时手动终止该应用程序,该应用程序将通知您它需要重新启动。这似乎表明它必须以某种方式在后台运行。

【讨论】:

  • 查看他们的常见问题解答,很明显他们没有使用 UILocalNotification 而是其他一些方法。见insighttimer.com/pac_help
猜你喜欢
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 2012-03-15
  • 1970-01-01
相关资源
最近更新 更多