【问题标题】:Alarm clock with answer-to-disable on iOSiOS 上带有禁用应答功能的闹钟
【发布时间】:2012-12-25 15:29:29
【问题描述】:

Apple 资源包含大量信息,但有一点我在阅读有关音频和通知时无法清楚理解。

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

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

【问题讨论】:

  • 是的,在 obj-c 中是可能的......
  • 它看起来如何?如果我使用标准通知,它将被例如 DND 静音。
  • 检查此link 可能会有所帮助。这几乎是同一个问题。

标签: iphone ios cordova


【解决方案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

【讨论】:

  • UILocalNotification 不是我认为的解决方案(声音限制为 30 秒)。我也知道背景音乐播放,但我的问题是我可以在应用程序处于后台时在指定时间启动它吗?如果可以在需要的时间从后台开始播放音乐,我可以将它与通知结合起来(音乐开始,通知弹出窗口并将用户引导到可以在回答问题后关闭音乐的应用)。
  • @kiler129:我想你可以使用后台任务功能来做这件事。
  • 在阅读了大量的 SO 帖子和 Apple 文档后,我认为几乎不可能制作出在后台运行的可靠闹钟。
【解决方案2】:

您可以更改 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 秒播放一次音频文件,这样它就不会进入深度睡眠状态并杀死所有 NSTimer。
  • Apple 可能会因此拒绝您的应用。
  • 您不能使用主页按钮关闭应用程序,否则将无法正常工作。
  • 您必须在每次需要使用闹钟时打开应用程序(您不能安排和忘记)。
  • 闹钟响起时,您只有 iPhone 的锁屏,需要先解锁,然后在应用内停止闹钟。

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

【讨论】:

    猜你喜欢
    • 2016-10-05
    • 2012-03-15
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多