2017-01-16 115 views
0

我正在構建一個應用程序,當應用程序在後臺(或屏幕關閉)時需要說出數據。發言部分通過AVSpeechSynthesizer完成。iOS後臺任務/推送通知

我的Android應用程序啓動了一個服務,用於監聽數據,並且每當需要說出什麼時,我都會說出來並完成它。現在iOS不允許我閱讀這些類型的後臺任務。這個衣櫃被稱爲「執行有限長度任務」,看起來有10分鐘的最大時間限制。所以這對我不起作用。相反,它看起來像我需要使用推送通知。

查看推送通知的文檔,如果我的理解正確,如果我的應用程序位於前臺,則我的應用程序立即收到推送通知。而如果我的應用程序位於後臺,則會設置通知(通知中心),一旦用戶點擊通知,我的應用程序就會啓動有效內容。

這裏的問題是,是否有任何推送通知立即喚醒我的應用程序,所以我可以說一些信息?

或者在這種情況下應該使用哪些其他替代方法?

我的另一個想法是爲每個用戶實現某種類型的mp3流,這將流式傳輸我可以在後臺播放的音頻。但是這對於我想要完成的事情似乎過分了?

回答

2

我不確定您是否能夠從後臺調用語音合成,但您可以在推送到達時通知您應用程序。關鍵是要落實

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