ios apns推送 离线锁屏语音播报

ReyZhang ReyZhang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

一、背景

公司正在研发的一款App,需要在进行消息推送时支持语音播报。 具体要求:

  • 离线:App在用户未打开时,可收到消息推送
  • 锁屏:用户在设备锁屏状态下,仍可收到消息推送
  • 语音播报:收到消息推送时可同时进行语音播放

苹果的APNs消息推送, 支持在应用未打开及设备锁屏状态下收到推送。 而同时进行语音播报,则需要做一些特殊处理。 目前语音播报的场景有两种: 一种是固定音频的播放, 一种是需要动态合成后的音频播放。如支付宝或微信收款的消息提醒: “支付宝/微信成功收款100元” 。 基于以上两种场景,接下来会逐一分析。在分析之前,需要先对APNs做一个简单的了解。

二、认识APNs

APNs(英文全称:Apple Push Notification service),中文翻译为:苹果推送通知服务。

通知是由两个主要部分组成的数据:设备令牌deviceToken 和 payload消息。

  • 设备令牌deviceToken: 是类似于一个电话号码。它包含的信息,使的APN定位到设备上安装的客户端应用程序。APN还用它来验证通知的路由。
  • payload消息:是一个JSON定义的属性列表中指定的设备上的应用程序的用户将被提醒。

2.1 工作步骤

  • 首先,APNs会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书以确定其为苹果设备);
  • 然后,将服务器的信息接收并且保存在APNs当中,APNs从其中注册的列表中查找该IOS设备并将信息发送到该设备;
  • 最后,设备接收到数据信息给相应的APP,并按照设定弹出Push信息。

参考如下顺序图,会更易理解:
在这里插入图片描述

2.2 payload 消息JSON结构

{
    "aps" : {
        "alert" : {
            "title" : "Game Request", // 标题
            "body" : "Bob wants to play poker", //内容
        },
        "badge" : 5, //角标
        "sound" : "binggo.caf", //声音
        "content-available" : 1,
        "mutable-content" : 1, //可变内容
    },
}

注意: payload 最大不能超过256字节

aps字典包含苹果用来向用户设备发送通知的keys。key指定了您希望系统在提醒用户时使用的交互类型。
下表列出了包含在该字典中的keys以及每个key的信息类型。注意:非苹果给定的key会被忽略。

键值的类型描述
alertDictionary or String当您希望系统显示标准警报或横幅时,请包含此键。用户设备上应用程序的通知设置决定是否显示警报或横幅。该key的首选值是字典 。字典的更多关键字请参阅 Table 9-2。 如果指定字符串作为该键的值,则该字符串将显示为警报或横幅的消息文本。
badgeNumber当您希望系统修改应用程序图标的角标时,请包含此键。如果字典中没有包含此键,则Badge角标不会更改。若要删除角标,请将此键的值设置为0。
soundString当您希望系统播放声音时,请包含此键。此键的值是应用程序main bundle 或应用程序数据容器的Library/Sounds文件夹中声音文件的名称。如果找不到声音文件,或者为该值指定了default,系统将播放默认警报声音。有关为通知提供声音文件的详细信息;请参阅自定义警报声音。
content-availableNumber设置此键的值为1,以配置后台更新通知。当此key存在时,系统会在后台唤醒您的应用程序,并将通知发送给其应用程序代理。有关配置和处理后台更新通知的信息,请参阅配置后台更新通知。
categoryString为该键提供一个表示通知类型的字符串值。此值对应于应用程序的某个注册类别的identifier属性中的值。要了解有关使用自定义操作的更多信息,请参阅配置类别和可操作通知。

三、固定语音的推送方案

四、合成语音的推送方案

 更多内容,详见:https://blog.csdn.net/zhanglei5415/article/details/130316253

...全文

相关推荐

java调用apns推送的实现

自己用java实现苹果的apns推送,调用压缩包的text文件里面的方法即可

chen2991101

iOS app处于后台/被杀死的状态仍可进行语言播报(iOS12.1以上在后台或者被杀死无法语音播报的解决方案)【适配iOS15的本地通知功能,实现ios 金额播报】

前言 想要消息推送的消息在Service Extension中被处理,需要aps 中包含mutable-content : 1 的内容. 测试消息推送的时候,以极光为例,需要记得在高级设置开启mutable-content。 aps = { alert = { body = 11; subtitle = 111; title = "111...

java、iOS、Vue

iOS15语音播报推送实战:PushKit+CallKit实现被杀死也能响

在移动应用开发中,推送通知是触达用户的重要手段,但普通APNs在App被杀死后无法执行代码,静默推送也不可靠。基于VoIP的PushKit技术能由系统直接拉起进程,配合CallKit上报来电,从而在锁屏甚至被杀状态下启动语音播报。通过AVSpeechSynthesizer合成中文语音,结合AVAudioSession正确配置,即可实现类似门铃、紧急提醒等场景的免解锁播报。本文以iOS15为基准,详细拆解PushKit注册、CallKit来电上报、音频会话设置及被杀后的验证流程,帮助开发者构建一套稳定可靠的语

我说老李你说黑

解决ios下后台运行与锁屏时倒计时停止问题

ios里在后台或者锁屏时js会停止运行,倒计时之类的场景会停止执行,这个就是解决这样的问题

丨毒公子丨

iOS苹果推送apns测试工具.zip

iOS苹果推送apns测试工具

天王盖地虎2
评论
收藏 已收藏
分享
返回顶部
ReyZhang
ReyZhang 新星创作者: 移动开发技术领域 新星创作者: 移动开发技术领域
Rey的移动开发社区 420 成员 23 内容