我正在构建一个应用程序,当应用程序在后台(或屏幕关闭)时需要说出数据。说话部分通过AVSpeechSynthesizer完成。
我的Android应用程序启动了一项服务,该服务可以监听数据,无论什么时候需要说些什么,我都说它已经完成了。现在iOS并不允许我阅读这些背景任务。壁橱里的东西被称为“执行有限长度的任务”'看起来有最长10分钟的时间限制。所以这对我不起作用。相反,我看起来需要使用推送通知。
查看Push Notifications的文档,如果我理解正确,如果我的应用程序在Foreground中,那么我的应用程序会立即收到推送通知。如果我的应用程序在后台,则会设置通知(通知中心),一旦用户点击通知,我的应用就会启动有效负载。
这里的问题是,无论如何都要立即发出推送通知唤醒我的应用程序以便我可以说一些信息吗?
或者在这种情况下应该采用哪些其他替代方法?
我的另一个想法是为每个用户实现某种类型的mp3流,这将流式传输我可以在后台播放的音频。但这对我想要完成的事情来说似乎过分了?
答案 0 :(得分:3)
我不确定您是否能够从后台调用语音合成,但是当推送到达时您可以通知应用。诀窍是实现
- (void) application: (RMApp *) application didReceiveRemoteNotification: (NSDictionary *) userInfo fetchCompletionHandler: (void (^)(UIBackgroundFetchResult result)) completionHandler
UIApplicationDelegate
方法(注意completionHandler参数)。
您还必须设置Remote Notifications Background Mode capability。
您必须在推送通知有效负载中设置content-available
。
在这里找到关于这些步骤的体面写作:
http://samwize.com/2015/08/07/how-to-handle-remote-notification-with-background-mode-enabled/