热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS紧急通知

一般通知关于通知的各种配置和开发

一般通知

关于通知的各种配置和开发,可以参考推送通知教程:入门 – Kodeco,具有详细步骤。

紧急通知表现


  1. 紧急通知不受免打扰模式和静音模式约束。
  2. 当紧急通知到达时,会有短暂提示音量和抖动(约2s)。
  3. 未锁屏状态,通知banner会持续展示,锁边状态,紧急通知不会被收集到组内。
  4. 可以自定义声音,且声音可以超过30s,播放最长时长限制未知(已测试4分钟自定义音频可以完整播放)。

紧急通知在 iOS16.2 上的效果图如下:

紧急通知效果

紧急通知申请和配置

紧急通知并不是面向所有应用,如果 APP 需要发送紧急通知,需要向苹果申请,申请通过才能是使用。

Request Critical Alert Notifications Entitlement

申请界面如下:

截屏2023-03-21 15.43.19

一般理由合适,在两三个工作日即可申请下来,这时候在苹果开发者证书配置中可以勾选Critical Alerts,如下图

截屏2023-03-21 17.11.15

Xcode 端更新证书,可以通过查看证书的 Entitlements查看

0*98XhXqDjN1hHczYS

通知设置的紧急通知开关如下图

紧急通知开关

紧急通知开发

var authOptions: UNAuthorizationOptions?
if #available(iOS 12.0, *) {authOptions = [.alert, .badge, .sound, .criticalAlert]
} else {authOptions = [.alert, .badge, .sound]
}
UNUserNotificationCenter.current().requestAuthorization(options: authOptions!) { (granted, error) inif !granted {print(“紧急通知权限被拒绝”)}
}

请求紧急通知后,会弹出如下弹窗:

截屏2023-03-21 16.48.57

如何测试紧急通知

可以借助onmyway133/PushNotifications: 🐉 A macOS, Linux, Windows app to test push notifications on iOS and Android (github.com)来发送通知,进行测试。

apns json如下:

{ "aps":{ "alert":"This is a Critical Alert!","badge": 1,"sound": { "critical": 1,"name":"your_custom_sound.aiff","volume": 1.0}}
}

其中

  • critical:用于触发紧急通知

  • name:自定义声音

  • volume:声音大小,如果不传,默认为1.0

其他参数参考苹果对于APNs字典定义。Generating a remote notification

或者你也可以使用命令行发送通知Sending push notifications using command-line tools | Apple Developer Documentation

自定义紧急通知声音

由于自定义通知声音还是由 iOS 系统来播放的,所以对音频数据格式有限制,可以是如下四种之一:

  1. Linear PCM
  2. MA4 (IMA/ADPCM)
  3. µLaw
  4. aLaw

对应音频文件格式是 aiff,wav,caf 文件,文件也必须放到 app 的 mainBundle 目录中。

自定义普通通知声音的播放时间必须在 30s 内,如果超过这个限制,则将用系统默认通知声音替代。

可以使用 afconvert 工具来处理音频文件格式,转换命令如下:

afconvert xxx.mp3 criticalAlert.caf -d ima4 -f caff -v

转换完成后就可以将 criticalAlert.caf 这个文件拖入 Xcode 工程中,注意一定要选择 Add to targets 。

普通通知 apns json

{"xxx":"xxx""sound":"xxx.caf"
}

紧急通知 apns json

{ "aps":{ "alert":"This is a Critical Alert!","badge": 1,"sound": { "critical": 1,"name":"criticalAlert.caf","volume": 1.0}}
}

参考

What’s New in User Notifications - WWDC18 - Videos - Apple Developer

推送通知教程:入门 – Kodeco

如何实施 iOS 关键警报 – medium.com

如何实施关键警报 –- tapcode.co

[Implementing iOS Critical Alerts. iOS 12 has added the critical alerts… | by Shashidhar Yamsani | Medium](https://medium.com/@shashidharyamsani/implementing-ios-critical-alerts-7d82b4bb5026#:~:text=iOS 12 has the critical,allowed to send critical alerts)


推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了一道网络流题目hdu4888 Redraw Beautiful Drawings的解题思路。题目要求以行和列作为结点建图,并通过最大流算法判断是否有解以及是否唯一。文章详细介绍了建图和算法的过程,并强调在dfs过程中要进行回溯。 ... [详细]
author-avatar
捕鱼达人2602890295
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有