iOS 后台 Task/Push 通知
iOS Background Task/Push Notification
我正在构建一个需要在应用程序处于后台(或屏幕关闭)时说出数据的应用程序。口语部分是通过 AVSpeechSynthesizer 完成的。
我的 Android 应用程序启动了一项服务,用于侦听数据,每当它需要说些什么时,我说了就做。现在 iOS 不允许我阅读的这些后台任务。壁橱里的东西叫做 'Executing Finite-Length Tasks',看起来最多有 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/
我正在构建一个需要在应用程序处于后台(或屏幕关闭)时说出数据的应用程序。口语部分是通过 AVSpeechSynthesizer 完成的。
我的 Android 应用程序启动了一项服务,用于侦听数据,每当它需要说些什么时,我说了就做。现在 iOS 不允许我阅读的这些后台任务。壁橱里的东西叫做 'Executing Finite-Length Tasks',看起来最多有 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/