在iOS上具有应答禁用功能的闹钟

时间:2013-01-11 04:14:19

标签: iphone ios cordova

Apple资源包含很多信息,但有一件事我无法清楚地理解有关音频和通知的阅读。

是否可以制作一个应用程序,在后台运行产生声音(即使手机被锁定和/或静音),当它发生时,用户必须解决,例如。方程式将其关闭?

P.S。目前我主要使用Cordova框架,但Obj-C技巧也不错。

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。 您可以使用UILocalNotification

Apple还允许在后台播放音乐的应用。

请检查这些链接以了解后台任务功能:

  1. ManagingYourApplicationsFlow
  2. ios multitasking background tasks
  3. How to handle background audio playing while ios device is locked or on another

答案 1 :(得分:0)

您可以更改NSTimers的本地通知(使用https://github.com/mruegenberg/MMPDeepSleepPreventer保持它们处于非活动模式)并计算每个警报的时间间隔。这样你就可以播放音频,即使屏幕被锁定,声音也会在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中粘贴:

// Let the sound run with the screen blocked
NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

但是你会遇到一些问题:

  • 应用程序必须每10秒播放一次音频文件,因此无法深度睡眠并杀死所有NSTimers。
  • Apple可以拒绝您的应用。
  • 您无法使用主页按钮关闭应用,否则无法使用。
  • 每次需要使用闹钟时都必须打开应用程序(无法安排和忘记)。
  • 当闹钟触发时,您只有iPhone的锁定屏幕,需要先将其解锁,然后在应用程序内停止闹钟。

在Apple,他们不希望竞争对手使用他们的闹钟应用程序,这是肯定的!您在App Store中看到的几乎所有闹钟应用程序都使用这种糟糕的方法。