iOS后台任务/推送通知

问题描述:

我正在构建一个应用程序,当应用程序在后台(或屏幕关闭)时需要说出数据。发言部分通过AVSpeechSynthesizer完成。iOS后台任务/推送通知

我的Android应用程序启动了一个服务,用于监听数据,并且每当需要说出什么时,我都会说出来并完成它。现在iOS不允许我阅读这些类型的后台任务。这个衣柜被称为“执行有限长度任务”,看起来有10分钟的最大时间限制。所以这对我不起作用。相反,它看起来像我需要使用推送通知。

查看推送通知的文档,如果我的理解正确,如果我的应用程序位于前台,则我的应用程序立即收到推送通知。而如果我的应用程序位于后台,则会设置通知(通知中心),一旦用户点击通知,我的应用程序就会启动有效内容。

这里的问题是,是否有任何推送通知立即唤醒我的应用程序,所以我可以说一些信息?

或者在这种情况下应该使用哪些其他替代方法?

我的另一个想法是为每个用户实现某种类型的mp3流,这将流式传输我可以在后台播放的音频。但是这对于我想要完成的事情似乎过分了?

我不确定您是否能够从后台调用语音合成,但您可以在推送到达时通知您应用程序。关键是要落实

- (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/