1. 程式人生 > >關於iOS實現前臺,後臺,鎖屏或關閉app語音播報

關於iOS實現前臺,後臺,鎖屏或關閉app語音播報

公司要求像支付寶收款一樣,收到推送後實現語音播報功能,之前沒有做過,特此機會研究一下。

用到的技術點:

1.如果對語音要求不是特別高的情況下,用蘋果系統自帶的AVSpeechUtterance可以實現,也可以用訊飛的sdk。

2.之前公司用的是友盟推送,可以實現基本的彈框形式推送,為了語音播報在鎖屏情況正常,我增加了iOS10 推出的UNNotificationServiceExtension “推送擴充套件”

關於在前臺實現語音播報,很簡單,

xcode 後臺設定

-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler(前臺收到通知的代理方法)中寫語音播報的方法

AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:alterText];

//            utterance.voice  = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-TW"];//設定語言

//            utterance.rate  = 0.4;  //設定語速

//            utterance.volume = 0.0;  //設定音量(0.0~1.0)預設為1.0

//            utterance.pitchMultiplier    = 1.0;  //設定語調 (0.5-2.0)

//            AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];

//            [synth speakUtterance:utterance];

在後臺實現語音播報

謝謝www.jianshu.com/p/c06133d576e4作者的分享,利用作者提供的方法,我也實現了在後臺播放,但是鎖屏或關閉app是無法完成語音播報的。我根據作者提供的UNNotificationServiceExtension,搜尋使用方法完成了鎖屏情況的語音播報。

1.UNNotificationServiceExtension的建立參考www.cocoachina.com/ios/20161017/17769.html建立完成後- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler中語音播報的方法新增進去,這個方法主要是在沒有推出彈框前,給30s的時間處理推送的內容,所以要推送的語音最好不要太長。

注意:如果專案需求是在前臺和後臺播放,就僅需要參考www.jianshu.com/p/c06133d576e4的方法,如果所有情況都需要,僅需要新增UNNotificationServiceExtension,填寫語音播報的程式碼,⚠️,一定要推送的 "aps"字典中,一定要包含 mutable-content 鍵,並且 mutable-content 的值為 1。不然不走推送擴充套件的方法。

支付寶就是利用此方法完成iOS10以後的語音播報,iOS10以前只需要播報一端固定的語音,把固定音訊檔案放在目錄下,後臺的sound 引數寫上音訊檔案的名字。

相關推薦

關於iOS實現前臺後臺關閉app語音播報

公司要求像支付寶收款一樣,收到推送後實現語音播報功能,之前沒有做過,特此機會研究一下。 用到的技術點: 1.如果對語音要求不是特別高的情況下,用蘋果系統自帶的AVSpeechUtterance可以實現,也可以用訊飛的sdk。 2.之前公司用的是友盟推送,可以實現

ios實現程式切入後臺實現後臺任…

1,專案需求,是程式home鍵切入後臺,3分鐘後退出登陸,   首先,iOS 會再持續切入後臺,給我們5秒鐘的時間去處理相關資料,5秒後,程式不會再執行任何程式碼,處於掛起狀態。 - (void)applicationDidEnterBackground:(UIApplication *)app

取消強制關閉顯示器(無管理員權限的小夥伴)

IT active shell 情況下 就是 utf 電腦 windows () 一些公司出於某種原因讓員工的電腦到一定時間強制鎖屏或者關閉顯示器,一般情況下你只要簡單的百度一下你就知道怎麽去解決以上問題。(這是在你有管理員權限的情況下),如果你沒有管理員權限只是按照百度搜

Android狀態下快速按兩次音量下鍵實現抓拍功能(1.1Framework層使用廣播形式實現

實現思路:     WindowManagerService迴圈讀取下面按鍵訊息並分發給視窗,在訊息分發前會在PhoneWindowManager.interceptKeyBeforeQueueing方法中進行訊息的過濾。因此該實現方式為在訊息分發前的interceptKe

Android狀態下快速按兩次音量下鍵實現抓拍功能(一Framework層實現

    WindowManagerService迴圈讀取下面按鍵訊息並分發給視窗,在訊息分發前會在PhoneWindowManager.interceptKeyBeforeQueueing方法中進行訊息的過濾。因此該實現方式為在訊息分發前的interceptKeyBeforeQueueing方法中監聽當前按

android 判斷App程序是否存在處在前臺後臺前後臺切換service是否執行設定為系統app

1.判斷程序是否存在 //判斷是否在主程序,這個方法判斷程序名或者pid都可以,如果程序名一樣那pid肯定也一樣 //true:當前程序是主程序 false:當前程序不是主程序 public boolean isUIProcess() { ActivityManager

tomcat亂碼tomcat中文亂碼 前臺後臺傳參中文亂碼問題 中文從前臺傳遞到後臺接受後是亂碼

tomcat亂碼,tomcat中文亂碼前臺到後臺,傳參中文亂碼問題中文從前臺傳遞到後臺,接受後是亂碼,解決辦法:找到Tomcat下disableUploadTimeout="true"    URIEncoding="UTF-8" useBodyEncodingForURI=

windows程式雙擊dlock.vbs

----------將下面的程式碼複製儲存為.vbs檔案 Dim WSHShell Set WSHShell=WScript.CreateObject(“WScript.Shell”) WSHShell.Run “Rundll32.exe user32.dll,LockWorkSta

iOS 實現webview不滾動顯示所有內容

self.first_webview 為:web view   height1 為:web view內容高度  self.scrollSuperView  為:滾動式圖scrollview 1. 首先我們要在底部放一個scrollview,在上面放置一個webview,接

[Android] 仿IOS實現自定義Dialog底部彈窗和中間彈窗工具

用過Android的預設對話方塊的都懂,不管是哪個版本的對話方塊,都醜到爆!就算是Google推崇的Material Design風格的彈窗一樣不好看,基本每款APP都不會去使用預設的對話方塊樣式,他們都有自己的風格,怎樣去改變預設的對話方塊樣式呢?只能自定義了,將系統對話方

iOS 實現單個頁面支持橫豎,其他頁面只能豎

eth duration amp pro 如果 oid span uiwindow obj 最近在自己的項目裏面 有需要做一個需求 : app中某一個頁面支持橫豎屏, 而其他頁面只能豎屏。 1 2 實現方法如下: 1 首先需要Xcode中選中支持的屏幕方向 2

Ext分頁實現(前臺後臺)Spring+Mybatis

Ext分頁實現(前臺與後臺)Spring+Mybatis 一、專案背景   關於Ext的分頁網上有很多部落格都有提到,但是作為Ext新手來說,並不能很容易的在自己的專案中得以應用。因為,大多數教程以及部落格基本都是隻寫了前端的東西,而關於分頁演算法更多的應該是後臺。並且大多數資料庫的sql基

angular js 實現前臺後臺資料對接(Service $http)

一、service服務是什麼? 自我理解:服務是提供了一個應用整個生命週期中保持資料的方法。能在控制器中傳遞值,保持資料的一致性。服務是單利的,在專案中是被例項化一次,並且是用到的時候才被例項化。服務建立資料、儲存資料,與控制器之間緊密通訊。 $http

使用appcompat_v7定義activity全無標題欄

       我剛開始使用Google新推出的appcompat_v7的時候,發現當專案引用這個相容專案並且Activity繼承ActionBarActivity後,就必須使用Theme.Appcompat系列的Style才行,不然程式執行會報錯的。        換個主

按Home鍵後繼續播放音樂

參考 一般聽音樂的app在鎖屏狀態和按home鍵後都能繼續播放音樂,有些強大的甚至在來簡訊後能夠繼續播放,不被中斷,比如:百度ting。本文主要介紹鎖屏和按home鍵後仍播放音樂實現。 主要依靠“音訊會話”(AVAudioSession)來實現。詳細關於AVAudio

解決cocos2d-x 安卓再解OPenGL報錯;後臺前臺異常問題解決辦法

最近幾天解決遊戲中安卓遇到一個讓人蛋碎的問題,先具體描述一下問題: 遊戲在安卓手機上執行正常,按HOME鍵轉後臺以後 ,再點桌面圖示遊戲無法正常執行,顯示黑框;無法正常從後臺轉到前臺;鎖屏以後再解鎖,如果是在遊戲執行狀態時鎖屏再解鎖螢幕,無法執行。如果遊戲轉入後臺,鎖屏再解

不會吧這也行?iOS後臺監聽搖一搖

[toc] # 背景介紹 一般情況下,出於省電、許可權、合理性等因素考慮,給人的感覺是很多奇怪的需求安卓可以實現,但是iOS就無法實現!今天要介紹的需求也有這種感覺,就是“**當 APP 處於後臺或鎖屏狀態時,依舊可以監聽到搖一搖**,進而觸發某些功能,比如:語音播報”。 在產品經理提出此需求的一瞬間,

實現:編輯短信按power鍵再點亮進入的還是編輯短信界面按返回鍵才會進入解界面。

亮屏 ram flags you creat att msu con sim 描寫敘述:在編輯短信界面按電源鍵鎖屏後,又一次按電源鍵點亮屏幕。並沒有進入到鎖屏界面而是在編輯短信界面。此時短信界面懸浮與鎖屏界面之上。這時按返回鍵關閉編輯短信界面。回到鎖屏界面,是怎樣實

iPhone不住個人信息iOS安全性真的很高嗎?

IOS iPhone 漏洞 聽說你iOS安全性高?網絡安全通成員用實驗來發現你的漏洞。 第一步 查看一下當前系統的版本號 第二步 給目標iphone手機撥打電話 第三步 選擇信息,然後點擊自定義 第四步 隨意選擇三個表情,註意一定要三個 第五步 長按home鍵喚醒siri並且告訴siri打開設置

js前臺頁面顯示中文後臺存對應的value值實現

Matter 類型 top highlight wid red score sortable form field: ‘rightType‘, title: ‘權益類型‘,