首先,要記得引入 UserNotifications 的框架
import UserNotifications
既然是推播通知,那請一定要記得取得使用著的權限,才不會怎麼都跑不知通知,讓你很想砸了電腦
取得使用者權限的程式碼,我是直接寫在 AppDelegate.swift裡的
首先先在 application:didFinishLaunchingWithOptions 裡加入,是為了讓使用者在開啟程式後就能選擇是否授權。
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.sound,.badge], completionHandler: {(grand , error)in
if grand{
print("允許")
}else{
print("拒絕")
}
})
在通知的類別: Types的方面,總共有四種,分別是:alert 、 sound 、 badge 、 carPlay。
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert , .badge , .sound])
}
先設一個 content 變數來儲存要通知的內容。
titie:通知的主標題。
subtitle:通知的副標題。
body:通知的內文。
badge:收到通知後,AppIcon右上角會出現數字。
sound:通知的聲音,這裡使用系統預設的聲音
let conten = UNMutableNotificationContent()
conten.title = "進來吧"
conten.body = "大喔"
conten.sound = .default
trigger:觸發通知的方式
request:安排一個通知
UNUserNotificationCenter.current().add:將先前安排好的通知加入。
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let request = UNNotificationRequest(identifier: "big", content: conten, trigger: nil)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
UNUserNotificationCenter.current().add(request ,withCompletionHandler: nil)