首页 > 其他分享 >ios apns推送 离线锁屏语音播报

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

时间:2023-04-25 14:15:01浏览次数:56  
标签:此键 离线 ios 应用程序 APNs 锁屏 通知 推送 设备

一、背景

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

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

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

二、认识APNs

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

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

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

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

三、固定语音的推送方案

四、合成语音的推送方案

4.1 Notification Service Extension 通知服务扩展 介绍

4.2 Notification Service Extension项目中的使用

4.3 iOS12之前的方案

4.4 iOS12之后的方案

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

标签:此键,离线,ios,应用程序,APNs,锁屏,通知,推送,设备
From: https://www.cnblogs.com/reyzhang/p/17352424.html

相关文章

  • 百度APP iOS端包体积50M优化实践(二) 图片优化
    一、前言在上一篇文章,我们介绍了包体积优化的必要性、安装包组成部分和生成过程、国内外大厂APP包体积分析、百度APP包体积优化技术方案及各项收益,本文重点讲述图片优化,解压IPA包后发现,百度APP中asset和bundle里面图片共有94M,这是我们重点优化的对象。本系列文章目录如下:《百度APP......
  • Net6+axios 返回401 axios不能获取 状态码问题解决
    错误使用app.UseAuthentication();//认证 这里要加,位置不能反app.UseAuthorization();//授权 app.UseCors();//启用Cors解决方法app.UseCors();//启用Corsapp.UseAuthentication();//认证 这里要加,位置不能反app.UseAuthorization();//授权  更换前更换后  ......
  • axios传递参数的使用
    今天在学习elasticsearch时,遇到一个问题:项目中前端采用的是Vue2+axios,后端的接口采用Restful风格来接收:关于Resultful风格:1.GET(SELECT):从服务器取出资源(一项或多项);2.POST(CREATE):在服务器新建一个资源;3.PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源);......
  • 记一次排坑:在IOS中播放IronSource的RewardedVideo时,内存泄露导致闪退
    Unity版本:2020.3.6IronSource:7.3.0.1XCode:14.3现象:项目初始化IronSource之后,调用播放广告时内存不断上升。调用代码很简单IronSource.Agent.showRewardedVideo(); 排查步骤:1、使用IronSource的Demo、打包、播放RewardedVideo:不崩溃2、在现有项目中的起始Scene中,直接写......
  • 【c&c++】[Error] iostream.h: No such file or directory的解决办法
    直接上错误代码实例#include<iostream.h>intmain(){print('hello,world\n')return0;}编译通不过,直接出错 这是C语言转C++的两条经典错误C++中是没有iostream.h这个东西的(或者一般不会这么使用),正确用法是:#include<iostream>用了iostream还不......
  • ai问答:使用 Vue3 组合式API 和 TS 配置 axios 拦截器 http错误状态
    通过axios.create()可以创建一个axios实例axiosInstance,参数如下:baseURL:请求前缀timeout:超时时间headers:请求头默认配置:import{defineComponent}from'vue'importaxiosfrom'axios'exportdefaultdefineComponent({setup(){//实例-默认配置......
  • 解决vue移动端 ios页面切换出现闪屏现象(可直接复制张贴)
    在App.vue文件中监听路由//控制左右滑动 watch:{  $route(to,from){   constarr=[    '/warningCenter/warningCenterHome',    '/equInspection/equInspectionHome',    '/ourOrder/ourOrderHome',    '/orderC......
  • axios
    引入axiosnpminstallaxios或者直接引入js文件<scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>使用axios//通过params设置参数:axios.get('/url',{params:{ID:123}}).then(function(response){......
  • OpenAI的离线音频转文本模型 Whisper 的.NET封装项目
    whisper介绍OpenAI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的Whisper神经网络,且它亦支持其它98种语言的自动语音辨识。Whisper系统所提供的自动语音辨识(AutomaticSpeechRecognition,ASR)模型是被训练来运行语音辨识与翻译任务的,它们能将各种语言的语音变成文......
  • 离线询问
    -https://ac.nowcoder.com/acm/contest/54877/D观察题目,以猫猫的友善值为横坐标,与猫猫期望的友善值为纵坐标,则人类的友善值为纵坐标,期待的友善值为横坐标问题就转换为了求猫猫坐标左上角的最左上的人类坐标点对猫猫以坐标形式排个序,遍历每个猫猫,在遍历过程中维护最左上角的人......