該功能需要用到 蘋(píng)果的?Notification Service Extension 這個(gè)是iOS10.0推出的系瓢。https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension
實(shí)現(xiàn)該功能致扯,一阀捅,添加?Notification Service Extension 類(lèi)
創(chuàng)建之后 程序內(nèi)會(huì)出現(xiàn)?NotificationService.h 寂玲,NotificationService.m 文件
二蘑险,然后就是發(fā)送推送消息 萨螺,以極光推送為例
(iOS 10 新增的 Notification Service Extension 功能,用 mutable-content 字段來(lái)控制吃衅。 若使用極光的 Web 控制臺(tái)往踢,需勾選 “可選設(shè)置”中 mutable-content 選項(xiàng);若使用 RESTFul API 需設(shè)置 mutable-content 字段為 true徘层。)
三峻呕、使用 語(yǔ)音合成 功能 AVSpeechUtterance,將文字轉(zhuǎn)化成語(yǔ)音播報(bào)(機(jī)械語(yǔ)音比較聲音趣效,要求不高的可以這么做)在 NotificationService.m 中的 "- (void)didReceiveNotificationRequest:(UNNotificationRequest*)request withContentHandler:(void(^)(UNNotificationContent*_Nonnull))contentHandler" 方法中代碼
/** @"voice":是 自己自定義上傳的字段瘦癌,可以與后臺(tái)商量
? self.aVSpeechSynthesizer = [[AVSpeechSynthesizer alloc] init];
? ? ? ? // Modify the notification content here...
? ? ? ? NSString*str =self.bestAttemptContent.userInfo[@"voice"];
? ? ? ? AVSpeechUtterance * aVSpeechUtterance = [[AVSpeechUtterance alloc] initWithString:str];
? ? ? ? aVSpeechUtterance.rate = AVSpeechUtteranceDefaultSpeechRate;
? ? ? ? aVSpeechUtterance.voice =[AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];
? ? ? ? [self.aVSpeechSynthesizerspeakUtterance:aVSpeechUtterance];
*/
四跷敬、配置
1讯私、項(xiàng)目的target
2、擴(kuò)展的target
五、如果不想用系統(tǒng) 去合成語(yǔ)音斤寇,可以在本地 導(dǎo)入自定義語(yǔ)音文件?
1桶癣、導(dǎo)入 語(yǔ)音文件 到項(xiàng)目 ?,項(xiàng)目和擴(kuò)展的 target都要勾選
2抡驼、播放語(yǔ)音 ?//可以查考--?http://www.reibang.com/p/d79bd8e6570e
? SystemSoundID soundID;
? ? ? ? NSString *path = [[NSBundle mainBundle] pathForResource:@"testVoice.m4a" ofType:nil];
? ? ? ? AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);
? ? ? ? AudioServicesPlaySystemSound(soundID);
? ? ? ? /*AudioServicesPlaySystemSoundWithCompletion*/
? ? ? ? AudioServicesPlayAlertSoundWithCompletion(soundID, ^{
? ? ? ? ? ? self.contentHandler(self.bestAttemptContent);
? ? ? ? });
至此鬼廓,功能就能實(shí)現(xiàn)自定義語(yǔ)音播報(bào)了
六、最終的代碼體現(xiàn)
整體導(dǎo)入流程可以參考鏈接 :
http://www.reibang.com/p/ef344a294f99
iOS致盟,推送+后臺(tái)語(yǔ)音播報(bào),推送+程序殺死仍語(yǔ)音播報(bào)尤慰,看這一篇就夠啦馏锡! - 簡(jiǎn)書(shū)
http://www.reibang.com/p/c06133d576e4
iOS,APP退到后臺(tái)伟端,獲取推送成功的內(nèi)容并且語(yǔ)音播報(bào)內(nèi)容杯道。 - 簡(jiǎn)書(shū)