新项目要用到推送,然后语音播报推送里的内容。比如支付宝的推送功能“支付宝到账100元”,这种的。
目前做这个的方法第一个想到的就是Notification Service Extension了,Notification Service Extension是ios10推出的新功能,所以只能在ios10及其以上的手机上有用。
Notification Service Extension的作用就是在苹果服务器在给手机推送消息的中间,进入Notification Service Extension, 我们可以在进Notification Service Extension时对推送的消息 进行一次加工,这就是Notification Service Extension的功能的作用。
首先你要确定你已经接好了推送,可以收到推送了!
现在我们对Notification Service Extension进行创建:
这里说的不准确,Content Extension 是用来自定义推送UI和一些附加功能的 ,这么说比较好理解。
第二步,有自定义需求的可以吧两个都创建出来,不需要的只用创建Notification Service Extension就可以了。
第三步,创建成功之后,就会在项目中出现新创建的文件夹,里面有两个文件,
这里要多说一句,创建成功之后,我们的Notification Service Extension的 Bundle Identifier应该是,原本的项目BundleIdentifier.XXX(Notification Service Extension的id),即原项目的Bundle Identifier.你的项目名,这是一个固定格式 不能出错。
第四部,创建好后,.m文件中 有两个方法,
- (
void
)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(
void
(^)(UNNotificationContent *
_Nonnull
))contentHandler {}
- (
void
)serviceExtensionTimeWillExpire {}
我们在第一个方法里对通知进行处理,第二个方法是紧急方法,即第一个方法处理不完的时候就在第二个方法紧急处理,这个方法我还不是很了解具体的作用。
大家可以用下面这段代码测试一下,这里改变了通知的大标题,小标题,和内容:
- (
void
)didReceiveNotificationRequest:(UNNotificationRequest*)request withContentHandler:(
void
(^)(UNNotificationContent*
_Nonnull
))contentHandler {
self
.contentHandler= contentHandler;
self
.bestAttemptContent= [request.contentmutableCopy];
// Modify the notification content here...
// self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
// 重写一些东西
self.bestAttemptContent.title = @"我是大标题";
self.bestAttemptContent.subtitle = @"我是小标题";
self.bestAttemptContent.body =@"我是内容";
接下来就是简单的语音合成了,
#import <AVFoundation/AVFoundation.h>
@property
(
nonatomic
,
strong
)AVSpeechSynthesizer *synthesizer;
- (
void
)didReceiveNotificationRequest:(UNNotificationRequest*)request withContentHandler:(
void
(^)(UNNotificationContent*
_Nonnull
))contentHandler {
self
.contentHandler= contentHandler;
self
.bestAttemptContent= [request.contentmutableCopy];
// Modify the notification content here...
// self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
// 重写一些东西
NSDictionary*dict =
self
.bestAttemptContent.userInfo;
NSDictionary*notiDict = dict[@"aps"];
NSString*content = [notiDictvalueForKey:@"alert"];
//这里取到我们通知的内容,字段和后台提前沟通好。
NSString*voiceString =
nil
;
voiceString = [NSStringstringWithFormat:@"%@", content];
[
self
syntheticVoice:voiceString];
self
.contentHandler(
self
.bestAttemptContent);
- (
void
)syntheticVoice:(NSString*)string {
// 语音合成
self
.synthesizer = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance*speechUtterance = [AVSpeechUtterancespeechUtteranceWithString:string];
//设置语言类别(不能被识别,返回值为nil)
speechUtterance.voice= [AVSpeechSynthesisVoicevoiceWithLanguage:@"zh-CN"];
//设置语速快慢
speechUtterance.rate=0.5;//0.5是一个
//语音合成器会生成音频
[
self
.synthesizerspeakUtterance:speechUtterance];
这就是最简单的语音合成通知内容并播放了。
最后就是运行了:
3.运行推送扩展你的断点不会起作用。
4.在我连线测试的时候,拦截到推送后就会崩溃,但是不连线测试就没问题,这个我也没找到原因。
5.不论你的调试是release还是debug,只要是连线运行上的项目都只能收到开发状态下的推送, 想收到生产状态下的推送 就需要到appstore,或者打测试包分发出来。
文章转载:
https://www.jianshu.com/p/174b55d5e313
感谢:
我才不傲娇呢
新项目要用到推送,然后语音播报推送里的内容。比如支付宝的推送功能“支付宝到账100元”,这种的。目前做这个的方法第一个想到的就是Notification Service Extension了,Notification Service Extension是ios10推出的新功能,所以只能在ios10及其以上的手机上有用。Notification Service Extension的作用就...
(1)注册通知
首先是在注册远程消息
推送
,需要注意的是
iOS
8及以后的系统中注册方法有所改变(同时证书设置以及push权限也需要开启)。这一步的目的是,允许app接收远程消息
推送
。
(2)绑定deviceToken
deviceToken相当于设备的一个标识,服务器根据这个标识来进行消息
推送
。
①当用户同意app接收远程消息
推送
后,手机会向APNs发起一个请求去获取deviceToken;
②APNs收到请求,根据其相应流程及算法发送对应的device
自
iOS
10 更新以来,Apple 表示这是
iOS
有史以来最大的升级(our biggest release yet),更加智能开放的Siri、强化应用对3DTouch支持、 HomeKit 、电话拦截及全新设计的通知等等。
iOS
10 中将之前繁杂的
推送
通知统一成User
Notifi
cat
ion
s.framework 来集中管理和使用通知功能,还增加一些实用的功能——撤回单条通知、...
作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息
作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息
作者推荐内容 2.相册推 *** 点击即可查看作者要求内容信息
作者推荐内容 3.日历推 *** 点击即可查看作者要求内容信息
作者推荐内容 4.虚拟机安装
简单
*** 点击即可查看作者要求内容信息
作者推荐内容 5.iMessage *** 点击即可查看作者要求
众所周知,苹果的apns
推送
,在我们不点击通知时,app是不会执行任何代码的,且apns
推送
的保活时间是30s左右,如果我们想对
推送
内容进行修改,可以通过
Notifi
cat
ion
Service
Extens
ion
进行动态修改
一、
Notifi
cat
ion
Service
Extens
ion
1、点击 file->new->target
2、选择
iOS
->
Notifi
...
http://www.cocoachina.com/
ios
/20161017/17769.html
如果大家还没有看我的这两篇文章,建议还是先阅读一下,循序渐进么~文章链接如下:
iOS
开发
iOS
10
推送
必看(基础篇)
iOS
开发
iOS
10
推送
必看(高阶1)这次的最后,终于有demo咯~
在这篇文章,我会给大家讲一讲更高级一点的,定制化更高的远程通知。其中会补充我之前没讲的远程
推送
(多...
iOS
10 中添加了很多拓展
extens
ion
,与通知相关的拓展
extens
ion
有两个:
Notifi
cat
ion
Service
Extens
ion
和
Notifi
cat
ion
Content
Extens
ion
。前者可以让我们有机会在收到远程
推送
的通知后,展示之前对通知内容进行修改;后者可以用来自定义通知视图的样式。
Notifi
cat
ion
Service
Extens
ion
现
想要消息
推送
的消息在
Service
Extens
ion
中被处理,需要aps 中包含mutable-content : 1 的内容. 测试消息
推送
的时候,以极光为例,需要记得在高级设置开启mutable-content。
aps = {
alert = {
body = 11;
subtitle = 111;
title = "111...
上一篇介绍了如何用
Notifi
cat
ion
Service
Extens
ion
来实现修改收到的消息内容,这一篇介绍使用
Notifi
cat
ion
Content
Extens
ion
来实现自定义的通知界面。
工程中用到了SDWebImage
1、首先在工程中新增一个通知的内容拓展
2、这个
extens
ion
中有一个必须实现的方法 didReceive
Notifi
cat
ion
(),在系
iOS
10 添加两个通知相关的
Extens
ion
:
Service
Extens
ion
和 Content
Extens
ion
。我们先来
学习
一下看一下
Service
Extens
ion
。
UN
Notifi
cat
ion
Service
Extens
ion
是
iOS
10推出后的一个新特性,看图说话:
从图中可以看出,原来直接从APNS
推送
到用户手机的消息通知,中间添加了
Service
Extens
ion
处理(当然也可以不处理)。通过
Service
Extens
ion
,我们可以把即将呈现给用户的通知内容,做各种修改和
官方将通知单独放在了User
Notifi
cat
ion
s.framework,使用时需要导入框架。
User
Notifi
cat
ion
s.framework主要类文件:
UNCalendar
Notifi
cat
ion
Trigger
UNLo
cat
ion
Notifi
cat
ion
Trigger
UNMutable
Notifi
cat
ion
Content
UN
Notifi
cat
ion
UNNot
1.在
service
Extens
ion
中做附件资源的下载,注意下载资源的保存文件类型需要处理下temporaryFileLo
cat
ion
默认是.tmp的 ,我们需要和服务的约定好字段代表
推送
的类型,用来保存文件的。
2.
推送
的时候需要带"mutable-content": "1"字段,标识
推送
是内容可变的,我们在
推送
弹出来之前有30秒处理,可以用来下载附件,高清图、小视频、音乐。
3.con
如果以上步骤无法解决问题,请尝试运行系统文件检查器(SFC)扫描以修复任何损坏的系统文件。您可以按照以下步骤运行SFC扫描:
1. 按下Win+X键,选择“命令提示符(管理员)”。
2. 在命令提示符窗口中,输入“sfc /scannow”并按下回车键。
3. 等待扫描完成,然后重启计算机。
希望这些步骤可以帮助您解决问题。
微信支付WeChatSDK1.8.6 手动集成
tyh520lifevip:
git pull 提示 hint: You can replace “git config“ with “git config --global“ to set a default
xcode14 Command Swift Driver Compilation Requirements emitted errors but did not ret
Xcode 自定义代码块的存储位置