iOS后台实现推送并语音播报,程序杀死仍获得推送并语音播报

其实网上这种Notification Service Extension的代码很多,大家搜搜就能顺利写出来,下面我只是单纯记录一下,以便以后再次用到:

用Notification Service Extension实现APP在后台能获得推送通知并语音播报,以及程序杀死仍获得推送并语音播报的方法:(当然需要解决iOS12.1的语音播报问题,还要参考我上一篇文章,这篇文章其实是上篇文章iOS12.1之后语音播报问题解决方案总结的补充记录)。

一、为项目添加Notification Service Extension

首先打开你的项目 File ----> New ------> Target

选择Notification Service Extension

进行命名。这里Bundle identifier之类的内容,xcode会自动为你配置好,所以不用担心。其实从这里可以看出来,这个target并不属于你的app里面的一部分,而是另一个全新的程序,但是他是和你的app绑定的,这样,当推送来的时候iphone就知道究竟是谁的推送过来,需不需要进行额外处理。

Finish之后,你就可以在你的工程里看到你app的Notification Service Extension了。需要注意的是,因为是两个完全独立的target所以,你原有项目里的自己写的类,或原有项目里的资源文件,在Notification Service Extension里是完全访问不到的(打包之后也是两个完全独立的bundle)。所以如果你想要使用项目里的资源或者文件,你需要拖到Notification Service Extension目录里面,才可以使用。

扫描二维码关注公众号,回复: 4945942 查看本文章

二、对推送内容进行预处理

接下来就是业务代码了,在生成的NotificationService.m文件里对推送来的payload进行处理,在这里,你可以进行一些操作,例如修改推送的内容。要注意的是,并不是所有的推送都会走这个额外的方法。必须是会弹出alert、并且payload里面要设置"mutable-content"字段的值为1,才会进入这个方法,这都是需要跟你们后台沟通的。
{
"aps": {
"alert": "This is some fancy message.",
"badge": 1,
"sound": "default",
"mutable-content": "1",
}
}

在我们拿到需要播报的字段后,用AVSpeechSynthesis进行播放就可以啦。而且在处理之后,你的app是仍然可以收到该推送,而且得到的数据是你在NotificationService.m里修改过的数据(如果你修改了的话)。所以注意不要处理两遍哦。

调试的时候需要注意一点,如果你想走NotificationService.m里面的断点,需要将你Scheme调成对应的target

好啦,整个功能的简单实现到这里就结束啦,注意这个方法只有在10.0以后才可以用哦。

下面附上原文相关链接:https://www.jianshu.com/p/ef344a294f99
 

猜你喜欢

转载自blog.csdn.net/ZhongLv_HoneyMoon/article/details/85234748