SwiftUI 消息推送 UserNotifications

iOS具有一个名为UserNotifications的框架,该框架几乎可以完全满足您的期望:让我们为用户创建可以在锁定屏幕上显示的通知。我们有两种类型的通知,并且它们的创建位置不同,它们不同:本地通知是我们在本地调度的通知,而远程通知(通常称为推送通知)是从某处的服务器发送的。

远程通知需要服务器才能正常工作,因为您将消息发送到Apple的推送通知服务(APNS),然后将其转发给用户。但是相比之下,本地通知非常好用,因为只要用户允许,我们就可以随时发送任何消息。

要尝试此操作,请在ContentView.swift顶部附近添加一个额外的导入:

import UserNotifications

如果用户授予许可,那么我们就可以开始安排通知了。即使通知看起来很简单,Apple仍将通知分为三部分,以使其具有最大的灵活性:

  • 内容就是应该显示的内容,可以是标题,副标题,声音,图像等。
  • 触发器确定应该显示通知的时间,可以是从现在起的秒数,将来的日期和时间或位置。
  • 该请求结合了内容和触发器,还添加了唯一的标识符,因此您以后可以编辑或删除特定警报。如果您不想编辑或删除内容,请使用UUID()。uuidString获取随机标识符。

重要的部分是:一旦添加了通知,请在模拟器中按Cmd + L锁定屏幕。几秒钟后,设备应该会发出声音,并显示我们的信息–太好了!

项目完成代码

import SwiftUI
import UserNotifications

struct ContentView: View {
    var body: some View {
        VStack{
            VStack {
                Button("请求权限") {
                    // first
                    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in
                        if success {
                            print("All set!")
                        } else if let error = error {
                            print(error.localizedDescription)
                        }
                    }
                }.padding()

                Button("调度消息") {
                    // second
                    let content = UNMutableNotificationContent()
                    content.title = "消息提示"
                    content.subtitle = "这是副标题"
                    content.sound = UNNotificationSound.default

                    // show this notification five seconds from now
                    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)

                    // choose a random identifier
                    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)

                    // add our notification request
                    UNUserNotificationCenter.current().add(request)
                }
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

推荐

基础文章推荐

  • 《SwiftUI是什么,听听大牛们如何说》

经典教程推荐

  • 更新近百篇SwiftUI教程《SwiftUI2020教程》
  • 帮您突破数据存储难关《SwiftUI vs CoreData数据存储解决方案》

技术源码推荐

推荐文章

CoreData篇

  • SwiftUI数据存储之做个笔记App 新增与查询(CoreData)
  • SwiftUI进阶之存储用户状态实现登录与登出
  • SwiftUI 数据之List显示Sqlite数据库内容(2020年教程)

Combine篇

  • 一篇文章学懂弄通SwiftUI与Combine(含轮播动画App源码)

TextField篇

  • 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
  • 《SwiftUI实战之TextField风格自定义与formatters》
  • 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》
  • 《SwiftUI 当键盘出现时避免TextField被遮挡自动向上移动》
  • 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》

JSON文件篇

  • SwiftUI JSON文件下载、存储、解析和展示(代码大全)

一篇文章系列

  • SwiftUI一篇文章全面掌握List(教程和源码)
  • 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
  • SwiftUI一篇文章全面掌握Picker,解决数据选择(教程和源码)
  • SwiftUI一篇文章全面掌握Form(教程和源码)
  • SwiftUI Color 颜色一篇文章全解决

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

  • 请关注我的专栏icloudend, SwiftUI教程与源码
    https://www.jianshu.com/c/7b3e3b671970

你可能感兴趣的:(SwiftUI 消息推送 UserNotifications)