iOS-總結(jié)后臺(tái)語(yǔ)音播報(bào)遇到的一些坑

先說下自己做的項(xiàng)目需求:
其實(shí)需求比較簡(jiǎn)單,就是app在收款到賬時(shí)候能夠像支付寶嘹屯、微信一樣能夠有語(yǔ)音提示:支付寶收款到賬XX元
做出這個(gè)功能很簡(jiǎn)單蔼囊,而且方案也比較多漓雅,但是遇到的問題很多,最大的難處就是上架到App Store時(shí)候一直被拒絕

然后是參考文章鏈接
文章1:http://www.reibang.com/p/c06133d576e4
文章2:http://www.cnblogs.com/bigant9527/p/6144292.html?utm_source=tuicool&utm_medium=referral

方案一:按照參考文章1的方式(注意:后臺(tái)推送一定要加以下字段)

"content-available" = 1

在收到推送消息的方法里面使用AVFoundation 中的AVSpeechSynthesizer來合成語(yǔ)音播報(bào)就可以了

問題:
1.功能問題:
這種方式只能在程序運(yùn)行在前臺(tái)耕渴、在后臺(tái)時(shí)候播報(bào)拘悦,程序退出后不會(huì)語(yǔ)音播報(bào)
2.上架問題:
而且必須在Info.plist中的Background Modes中勾選Audio,AirPlay,and Picture in Picture
這樣上架時(shí)候蘋果會(huì)認(rèn)為你的應(yīng)用并不是語(yǔ)音類(如音樂播放器),所以會(huì)被拒絕
【我看到不少項(xiàng)目是已經(jīng)在Info.plist中的Background Modes勾選過Audio相關(guān)橱脸,如果功能也能滿足的話基本可以O(shè)K】

方案二:使用VoIP Push實(shí)現(xiàn)
需要在開發(fā)者賬號(hào)里面去用制作VoIP Push證書础米,VoIP Push與普通的推送證書不同,可以直接百度搜一下

問題:
1.功能問題:
程序運(yùn)行在前臺(tái)添诉、在后臺(tái)時(shí)候播報(bào)屁桑,程序退出后會(huì)不會(huì)語(yǔ)音播報(bào)我還沒有測(cè)試
2.上架問題:
而且必須在Info.plist中的Background Modes中添加VoIP Push
同樣會(huì)在上架時(shí)候被拒

方案三:使用Notification Service Extension實(shí)現(xiàn)
推薦使用,實(shí)現(xiàn)方案可以直接百度搜到很多

但是在此也遇到了一個(gè)坑就是在Notification Service Extension中的方法中打斷點(diǎn)調(diào)試栏赴,在應(yīng)用收到推送消息時(shí)候好像斷點(diǎn)并不生效蘑斧,而實(shí)際上方法是通的,也就是說能夠語(yǔ)音播報(bào)

#import "NotificationService.h"
#import <AVFoundation/AVFoundation.h>

@interface NotificationService ()

@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;

@property (nonatomic, strong) AVSpeechSynthesizer *synth;
@property (nonatomic, strong) AVSpeechUtterance *utterance;

@end

@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];
    
    // Modify the notification content here...
    //self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
    NSString *contentString = self.bestAttemptContent.body;
    if (contentString != nil) {
        [self speechWithString:contentString];
    }
    
    self.contentHandler(self.bestAttemptContent);
}

- (void)serviceExtensionTimeWillExpire {
    // Called just before the extension will be terminated by the system.
    // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
    self.contentHandler(self.bestAttemptContent);
}

// 語(yǔ)音播報(bào)
- (void)speechWithString:(NSString *)contentString {
    
    self.utterance = [AVSpeechUtterance speechUtteranceWithString:contentString];
    self.utterance.volume = 1.0f;    //設(shè)置音量
    self.utterance.rate = AVSpeechUtteranceDefaultSpeechRate;      //設(shè)置語(yǔ)速
    self.utterance.pitchMultiplier = 1;   //設(shè)置語(yǔ)調(diào)
    AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];
    self.utterance.voice = voice;
    self.synth = [[AVSpeechSynthesizer alloc] init];
    [self.synth speakUtterance:self.utterance];
    
}

問題:缺陷就是只能在iOS10才有效须眷。
在做類似功能遇到的問題歡迎一起探討(⊙o⊙)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乌叶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子柒爸,更是在濱河造成了極大的恐慌准浴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捎稚,死亡現(xiàn)場(chǎng)離奇詭異乐横,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)今野,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門葡公,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事〔ぢ。” “怎么了茂浮?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵锋恬,是天一觀的道長(zhǎng)鹏倘。 經(jīng)常有香客問我雪猪,道長(zhǎng)连锯,這世上最難降的妖魔是什么旋圆? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任宠默,我火速辦了婚禮,結(jié)果婚禮上灵巧,老公的妹妹穿的比我還像新娘搀矫。我一直安慰自己,他們只是感情好刻肄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布瓤球。 她就那樣靜靜地躺著,像睡著了一般敏弃。 火紅的嫁衣襯著肌膚如雪冰垄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天权她,我揣著相機(jī)與錄音虹茶,去河邊找鬼。 笑死隅要,一個(gè)胖子當(dāng)著我的面吹牛蝴罪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播步清,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼要门,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了廓啊?” 一聲冷哼從身側(cè)響起欢搜,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谴轮,沒想到半個(gè)月后炒瘟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡第步,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年疮装,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘都。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡廓推,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翩隧,到底是詐尸還是另有隱情樊展,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站专缠,受9級(jí)特大地震影響雷酪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜藤肢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一太闺、第九天 我趴在偏房一處隱蔽的房頂上張望糯景。 院中可真熱鬧嘁圈,春花似錦、人聲如沸蟀淮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怠惶。三九已至涨缚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間策治,已是汗流浹背脓魏。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留通惫,地道東北人茂翔。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像履腋,于是被迫代替她去往敵國(guó)和親珊燎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容