iOS,APP退到后臺(tái),獲取推送成功的內(nèi)容并且語(yǔ)音播報(bào)內(nèi)容。

各位老鐵們,很抱歉,之前的文章內(nèi)容我已經(jīng)徹底刪除了,畢竟現(xiàn)在iOS 11都有了,現(xiàn)在做推送,想語(yǔ)音報(bào)內(nèi)容,又不想程序被殺死,這是不可能滴哈哈!不過(guò)我確實(shí)有做讓程序一直掛在后臺(tái)運(yùn)行的,堅(jiān)持最高的好像有48個(gè)小時(shí)。 我靠!聽(tīng)完都震精!這不是對(duì)手機(jī)有危害嗎!這種程序上架能過(guò)的都是毒瘤哈哈哈!

好了,不扯別的了,其實(shí)我們沒(méi)必要讓程序一直保持在運(yùn)行當(dāng)中,我們可以給他一個(gè)推送,讓程序喚醒,執(zhí)行里面的推送擴(kuò)展方法就可以。有人說(shuō)支付寶可以播報(bào),哪怕程序被殺死以后也可以,老實(shí)說(shuō),你可以把支付寶的推送給關(guān)閉了,你再試試收付款,你看看能不能播報(bào)了? 測(cè)試完你很快就能得知支付寶利用的也是推送擴(kuò)展。 推送擴(kuò)展哪方面的呢?

iOS 10 UNNotificationServiceExtension ! 這個(gè)具體各位大佬們可以直接百度搜索一下就好。我呢就直接將重要的代碼給各位展示出來(lái)。請(qǐng)看下面:

1.首先后端要給你個(gè)推送測(cè)試內(nèi)容,內(nèi)容模板如下:

( 要記住在aps里一定要有"mutable -content"這個(gè)字段,alert 這個(gè)用字符串就可以,不用字典。當(dāng)然字典也行,后面可以獲取里面字符串也行。)

推送模板
2.選擇創(chuàng)建“NotificationServiceExtension” 

(看仔細(xì)了,不要問(wèn)我為
什么不選左邊的,你可以先百度了解一下推送擴(kuò)展,就了解了。)


image
image.png
image.png

3.NotificationService.m文件內(nèi)的代碼,這就是iOS10的推送擴(kuò)展

//
//  NotificationService.m
//  GYNotificationService
//
//  Created by Sylar on 2018/4/12.
//  Copyright ? 2018年 Sylar. All rights reserved.
//

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

@interface NotificationService ()<AVSpeechSynthesizerDelegate>

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

@property (nonatomic, strong) UNMutableNotificationContent *attemptContent;

@property (nonatomic, strong) AVSpeechSynthesizer *aVSpeechSynthesizer;

@end

@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
   
    self.contentHandler = contentHandler;

    
    self.attemptContent = [request.content mutableCopy];
    self.aVSpeechSynthesizer = [[AVSpeechSynthesizer alloc] init];
    // Modify the notification content here...
    NSString *str = self.attemptContent.userInfo[@"aps"][@"alert"];
    AVSpeechUtterance * aVSpeechUtterance = [[AVSpeechUtterance alloc] initWithString:str];
    
    aVSpeechUtterance.rate = AVSpeechUtteranceDefaultSpeechRate;
    
    aVSpeechUtterance.voice =[AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];
    
    [self.aVSpeechSynthesizer speakUtterance:aVSpeechUtterance];

}

- (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.attemptContent);
}

@end
  1. 配置擴(kuò)展需要的開(kāi)關(guān)


    image.png
image.png

加上:“App Transport Security Settings” “Allow Arbitrary Loads”

5.把擴(kuò)展里的Deployment Target 改成 10.0,畢竟擴(kuò)展10.0以后才能用哈。


image.png

6.到這一步基本已經(jīng)可以了。然后先運(yùn)行一下擴(kuò)展,然后再選擇運(yùn)行一下項(xiàng)目


image.png

之后你就可以感受到推送的快感,你可以將程序殺死。如果你發(fā)現(xiàn)測(cè)試了但沒(méi)聲音,你可能需要換個(gè)手機(jī)試一下,推送是必須要打開(kāi)的,不行的話,卸載APP重新安裝就可以了。其實(shí)推送擴(kuò)展沒(méi)啥代碼的,很容易的,如果你覺(jué)得系統(tǒng)機(jī)器人聲音難聽(tīng),支付寶的好聽(tīng),那是因?yàn)樗麄冊(cè)跀U(kuò)展里加了判斷,聲音是由多個(gè)音頻文件合成的。但是都是收款,需要的話可以加群直接要,群內(nèi)也有示范demo,另外需要注意的是iOS 10以后才支持,10以前是不支持的哦!如果有幫助到您,請(qǐng)點(diǎn)贊+關(guān)注!愛(ài)你么么噠。想進(jìn)群先打賞哈哈~

需要解決iOS12.1不能的問(wèn)題,或者已解決過(guò)的來(lái)加QQ群:622177838
歡迎各位朋友來(lái)分享。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • github排名https://github.com/trending,github搜索:https://gith...
    小米君的demo閱讀 4,946評(píng)論 2 38
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 14,995評(píng)論 4 61
  • 1、靜水流深,滄笙踏歌;三生陰晴圓缺,一朝悲歡離合。 2、人世間有百媚千紅,唯獨(dú)你是我情之所鐘。 3、生能盡歡,死...
    餅干死掉了閱讀 3,455評(píng)論 2 23
  • 給我影響最深刻的一句話是“每天小小的變動(dòng),帶來(lái)很大的改變” 學(xué)習(xí)的路上無(wú)捷徑,只有你每天小小的行動(dòng),持續(xù)的迭代,用...
    廈門整理師張桂華閱讀 400評(píng)論 0 0
  • 參加工作前,我信誓旦旦的對(duì)父親說(shuō):“爸,您放心,我能吃苦”。 直到真正參與其中,我才知道那句話說(shuō)得太早,或者說(shuō)我還...
    鑫無(wú)旁悟閱讀 281評(píng)論 0 0

友情鏈接更多精彩內(nèi)容