美文网首页
本地通知(Local Notification)教程

本地通知(Local Notification)教程

作者: sing_crystal | 来源:发表于2017-01-02 22:53 被阅读185次

原文链接
作者:Arthur Knopper
原文日期:2016-10-11
译者:Crystal Sun

本地通知(Local Notification)可以在用户没有使用某 App 的时候将消息推送给用户。iOS 10 里苹果公司介绍了非常多的通知,设置包含不同类型的通知。在本节教程中,我们将创建一个本地通知,可以推送图片消息。本节教程使用的是 Xcode 8 和 iOS 10。

打开 Xcode,创建一个 Single View Application。

点击 Next,product name 一栏填写 IOS10LocalNotificationTutorial,填写好 Organization Name 和 Organization Identifier,Language 选择 Swift,Devices 选择 iPhone。

找到 Storyboard,拖一个 Button 控件到主视图中,将其 title 改为 “Send Local Notification”。选中 Button 控件,点击 Auto Layout 的 Align 按钮,选中 Horizontally in Container,"Update Frame" 的下拉选项中选择 "Item of New Constraints",点击 "Add 1 Constraint"。

接下来,依然选中 Button 控件,点击 Auto Layout 的 Pin 按钮,点击向上的竖线,在 "Update Frame" 的下拉选项中选择 "Item of New Constraints",点击 "Add 1 Constraint"。

在这时候 Storyboard 会是下图这个样子:

打开 Assistant Editor,确保 ViewController.swift 文件可见,按住 Ctrl 键同时拖拽 Button 按钮到 ViewController 类里,创建下图 Action。

找到 ViewController.swift 文件,更改 viewDidLoad 方法如下:

override func viewDidLoad() {
    super.viewDidLoad()  
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) { (success, error) in
        if success {
            print("success")
        } else {
            print("error")
        }
    }
}

UNUserNotificationCenter 管理与通知相关的行为,想要使用通知,必须先获取用户的同意,可使用 requestAuthorization 方法。

我们将一张图片作为通知的附件。下载图片,将其引入工程。接下来实现 sendNotification 方法。

@IBAction func sendNotification(_ sender: AnyObject) {
    // 1
    let content = UNMutableNotificationContent()
    content.title = "Notification Tutorial"
    content.subtitle = "from ioscreator.com"
    content.body = " Notification triggered"
    
    // 2
    let imageName = "applelogo"
    guard let imageURL = Bundle.main.url(forResource: imageName, withExtension: "png") else { return }
        
    let attachment = try! UNNotificationAttachment(identifier: imageName, url: imageURL, options: .none)
        
    content.attachments = [attachment]
    
    // 3
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats: false)
    let request = UNNotificationRequest(identifier: "notification.id.01", content: content, trigger: trigger)
    
    // 4  
    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
    }
  1. UNMutableNotificationContent 对象包含通知的数据。
  2. UNNotificationAttachment 对象包含通知的媒体内容。
  3. UNNotificationRequest 被创建成功,将会在 10 秒内被触发。
  4. 安排传递通知。

运行工程,首先获取用户的同意。

点击 Allow,然后点击 “Send Local Notification”按钮来安排通知,接着点击模拟器 Home 键(Shift + Command + H)回到屏幕主页。十秒之后接收到了本地通知。

在 ioscreator 的 github 上可以下载到本节课程 IOS10LocalNotificaitonTutorial 的源代码。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权。

相关文章

  • 本地通知(Local Notification)教程

    原文链接作者:Arthur Knopper原文日期:2016-10-11译者:Crystal Sun 本地通知(L...

  • 通知及Block传值代码示例

    通知 在IOS中,主要有广播通知(broadcast notification)、本地通知(local notif...

  • iOS-消息推送

    iOS 消息推送包括远程推送通知(Remote Notification)和本地推送通知(Local Notifi...

  • iOS 通知机制总结

    iOS中提供了2种推送通知 本地推送通知(Local Notification) 远程推送通知(Remote No...

  • 26 - 推送

    iOS中提供了2种推送通知: 本地推送通知(Local Notification) 远程推送通知(Remote N...

  • Local Notification(本地通知)

    一、简介 在讲本地通知前,先简单介绍一下推送通知的基本概念,以便对后面的内容有更好的理解。这里说的推送通知和NSN...

  • 本地推送通知

    iOS常用通知 1、本地推送通知:(Local Notification):  不需要联网就可以发出的通知, 常用...

  • UILocalNotification

    iOS提供两种推送机制: 本地推送通知(Local Notification)与远程推送通知(Remote Not...

  • 远程推送(一): iOS 的远程推送

    说在前面 iOS中的推送分为:Local Notification(本地消息通知)和Remote Notifica...

  • ios推送-本地推送

    推送 1、远程推送(Remote Notification) 2、本地推送(Local Notification)...

网友评论

      本文标题:本地通知(Local Notification)教程

      本文链接:https://www.haomeiwen.com/subject/ahthvttx.html