相关疑难解决方法(0)

如何在静音模式下开始播放音频并在iOS 6中锁定?

最终用户流程

  1. 打开应用
  2. 打开"静音模式".
  3. 按"锁定按钮"
  4. 应用程序仍然可以在数小时后播放声音,而不是在过渡期间播放任何音频.

执行此操作的应用

许多报警应用程序都设法做到这一点我不认为他们正在使用静音音频来保持应用程序运行,因为如果你真的退出家用应用程序它们不会发出声音.

  • 闹钟专业版
  • 我的时钟
  • 波浪报警
  • 惊慌
  • 的iHome
  • ...

...他们是否在锁定某些通知(无法以静音播放声音)之后保持循环运行,启动应用程序备份以播放音频或其他方法?

实施的当前方法

AVAudioPlayer使用:

AudioSessionInitialize(nil, nil, nil, nil);
AudioSessionSetActive(YES);

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(sessionCategory),&sessionCategory);
Run Code Online (Sandbox Code Playgroud)

并将Info.plist设置为:

所需的后台模式(UIBackGroundModes) - 应用播放音频(音频)

现在

即使在应用程序运行和屏幕上的静音中,我也可以播放音频.如果音频已在运行,则可以使用主页按钮关闭应用程序并运行音频.但是,如果应用程序没有播放音频,并且屏幕被锁定,则所有线程都将被终止并且音频永远不会播放.这些应用程序如何解决这个问题?

迄今为止找到的可能方法

A.使用'beginBackgroundTaskWithExpirationHandler:'使用无限循环来保持应用程序无限期运行.

优点:

  • 看起来你可以在很多情况下使这项工作,即使用户按下回家.

缺点:

  • 据我所知,这违反了苹果的政策.
  • 将使用更多的资源

评论:

我几乎已经开始工作了,可能需要一些调整.这似乎不是所有这些其他警报正在做的事情,因为如果你按回家BTN他们不会继续运行.这表明他们使用了一些方法,允许他们在锁定时运行但不在BG中运行.(这就是我需要的)

此外,当你问你剩下多少时间跑步时,你会得到大约10分钟.通过在那里放置一个无限循环,数字实际上会降低到0,然后进入负数几个小时.(测试)我不确定这将在现实世界中或在应用程序接受方面如何表现.

B.使用静音音频循环构成连续音频播放媒体中心

优点:

  • 锁定后工作,并在大多数情况下继续运行.

缺点:

  • 如果被其他媒体中心和其他一些场合打断,可能会失败.
  • 也可以再去苹果政策.

评论:

这可以在很多情况下起作用,但到目前为止还不理想.而且就像我再说一遍,必须有另一种没有记录的方法.

迄今为止的结论

使用列出的APP进行测试表明他们没有使用我刚才描述的两种方法中的任何一种.方法'A'似乎更接近,但如果实施则不会表现出这些应用程序的行为方式.

我使用苹果开发者票来获取更多信息,我也会发布任何新的发现.

谢谢

我们非常感谢您的参与,并感谢您的参与.

iphone background silent avaudioplayer ios

46
推荐指数
2
解决办法
2万
查看次数

标签 统计

avaudioplayer ×1

background ×1

ios ×1

iphone ×1

silent ×1