有很多需要推送通知的情况,但是关于SwiftUI的通知推送说的人却不多,这里就说一些相关内容。一方面是为了自己能以后再查阅,另外一方面也是想能帮到有需要的人。

本文将讲述:

  1. 基础款推送(最常见的通知)
  2. 定时型推送(例如闹铃,纪念日等)

在讲述具体操作之前,需要注意一点:通知不能出现在app打开的时候。测试的时候使用模拟器或者实机测试,按完按钮要退出app一下。

基础款推送

首先来讲述一下最基础的推送,也是最常用的。样式如下:

代码如下:

import SwiftUI
import UserNotifications//询问用户是否允许该app推送通知
//由于推送系统中类型蛮多的,可以自己去“设置”中研究一下。这里的.alert表示是否允许弹窗; .sound表示是否允许提示音;.badge表示通知弹窗中的那个小图。
func setNotification(){UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]){ (granted, _) inif granted {//用户同意我们推送通知print("用户同意我们推送通知")}else{//用户不同意print("用户不同意")}}
}//推送通知
func makeNotification(){//设置通知的触发器:5秒后触发推送(这种通知推送不能重复)let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)//通知的内容let content = UNMutableNotificationContent()content.title = "通知的标题"content.body = "通知的内容"/* 通知提示音,default是“叮~”,就是短信的提示音。还有个defaultCritical,就是一般app推送通知的声音 */content.sound = UNNotificationSound.default //完成通知的设置let request = UNNotificationRequest(identifier: "通知名称", content: content, trigger: trigger)//添加我们的通知到UNUserNotificationCenter推送的队列里UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}struct ContentView: View {var body: some View {VStack {Button(action: {setNotification()}) {Text("获取推送权限").padding()}Button(action: {makeNotification()}) {Text("推送通知").padding()}}}
}

定时推送通知

有时候闹钟或者To-Do类型的软件需要定时推送通知,样式和实现基础款差不多,只是触发器和提示音部分有点区别(需要注意这个自定义的提示音不能超过30秒,不然系统会播放默认声音),代码如下:

import SwiftUI
import UserNotificationsfunc setNotification(){UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]){ (granted, _) inif granted {//用户同意我们推送通知print("用户同意我们推送通知")}else{//用户不同意print("用户不同意")}}
}//推送通知
func makeNotification(){//设置通知的时间:推送时间为6点30分var dateComponents = DateComponents()dateComponents.hour = 6dateComponents.minute = 30//这里最后让repeats为true表示每天的6点30分都会推送通知let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)//通知的内容let content = UNMutableNotificationContent()content.title = "通知的标题"content.body = "通知的内容"/* 需要注意这个自定义的提示音不能超过30秒,不然系统会播放默认声音 */content.sound = UNNotificationSound.init(named: UNNotificationSoundName("ring.m4a"))//完成通知的设置let request = UNNotificationRequest(identifier: "通知名称", content: content, trigger: trigger)//添加我们的通知到UNUserNotificationCenter推送的队列里UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}struct ContentView: View {var body: some View {VStack {Button(action: {setNotification()}) {Text("获取推送权限").padding()}Button(action: {makeNotification()}) {Text("推送通知").padding()}}}
}

我们还可以调整通知音量等等属性,自己可以看看哦~

SwiftUI——推送通知(Notifications)二三事相关推荐

  1. 推送通知(二)远程通知

    远程通知 从远程服务器推送给客户端的通知(需要联网),远程推送服务,又称为APNs(Apple Push Notification Services) 为什么需要远程推送通知? 1. 传统获取数据的局 ...

  2. iOS 推送通知及推送扩展

    概述 iOS中的通知包括本地推送通知和远程推送通知,两者在iOS系统中都可以通过弹出横幅的形式来提醒用户,点击横幅会打开应用.在iOS 10及之后版本的系统中,还支持通知扩展功能(UNNotifica ...

  3. 苹果推送通知办事教程 Apple Pushnb

    原文地址:(转)苹果推送通知办事教程 Apple Push Notification Services Tutorial 作者:浪友dans 苹果推送通知办事教程 Apple Push Notific ...

  4. go gorilla_使用gorilla websocket构建浏览器推送通知服务的低级设计

    go gorilla Singhania AdityaSinghania Aditya Follow跟随 Aug 31 8月31 gopher leaving everyone awestruck w ...

  5. 推送通知/传感器/UIDynamic仿真(推送通知已适配iOS10)

    推送通知/传感器/UIDynamic 一.推送通知 1.推送通知简介 什么是推送通知 此处的推送通知与NSNotification没有任何关系 可以理解为,向用户推送一条信息来通知用户某件事情 作用: ...

  6. swift通知栏推送_如何使用Swift和Laravel使用推送通知创建iOS加密跟踪应用

    swift通知栏推送 by Neo Ighodaro 由新Ighodaro 如何使用Swift和Laravel使用推送通知创建iOS加密跟踪应用 (How to create an iOS crypt ...

  7. firebase 推送_如何使用Firebase向Web应用程序添加推送通知?

    firebase 推送 by Leonardo Cardoso 由莱昂纳多·卡多佐(Leonardo Cardoso) 如何使用Firebase向Web应用程序添加推送通知? (How to add ...

  8. iOS10 推送通知 UserNotifications

    简介 新框架 获取权限 获取用户设置 注册APNS,获取deviceToken 本地推送流程 远程推送流程 通知策略(Category+Action) 附件通知 代理回调 简介 iOS10新增了Use ...

  9. 推送通知服务【WP7学习札记之十三】

    为什么使用推送通知服务 Windows Phone执行模型决定只有一个第三方的应用程序可以在前台运行,应用程序不能再后台运行,不断的往Cloud拉数据.微软提供推送通知服务(Push Notifica ...

最新文章

  1. 腾讯微视AI新技术曝光:斩获VCR榜单第一
  2. SAP System Copy Guide, ECC 6.0, Oracle
  3. mysql二维转一维_二维数组转为一维数组
  4. 1785: 数字游戏(贪心/bfs--定义全局数组变量遇到编译错误的问题)
  5. 二叉搜索树的最小绝对差
  6. SharePoint Framework 企业向导(九)
  7. 【Linux_Fedora_系统管理系列】_1_用户登录和系统初始配置
  8. java work stealing_Java线程池之WorkStealingPool,任务窃取算法
  9. java写一个服务定时采集数据_java实现定时任务解决方案
  10. 在Sun Java System Web Server上使用Quercus运行PHP
  11. php 如何滑动,php 滑动门切换代码示例
  12. WCDMA 基本信令流程
  13. 怎么彻底卸载cad2017_彻底卸载CAD的方法图解步骤
  14. c 语言编程字谜,C语言猜字谜游戏
  15. 论人类不平等起源读后感
  16. sht30 linux示例代码,SHT30 Linux标准 i2c-dev 读取程序
  17. 逻辑与() 逻辑或(||)
  18. 毕业论文文献引用方法
  19. Vue(总结完毕)2021.1.1 新年快乐
  20. 计算机语言三分钟怎么写,普通话测试话题范文30篇万能语句全国普通话测试三分钟说话万能模板.doc...

热门文章

  1. Unity 3D 制作传送门 传送门视觉效果 传送物体
  2. Go语言下载网络图片或文件
  3. python pygame小游戏素材图片_pygame 打飞机(小游戏)
  4. 慕课 简书项目 个人笔记
  5. 365天英语口语学习_14,接电话
  6. VTK 多平面重建(MPR)及三维切片显示
  7. View的透明度,设置view透明度setAlpha 及 Alpha透明度渐变动画
  8. 【论文笔记】Image Inpainting for Irregular Holes Using Partial Convolutions
  9. 哆点显示在其他服务器接入,哆点(com.drcom.DuoDian) - 2.6.3 - 应用 - 酷安
  10. 数据结构与算法题目集(中文) - 7-32 哥尼斯堡的“七桥问题”(25 分)