iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
0
自我挑戰組

Swift - 來吧!鐵人三十項系列 第 25

Day25:本地推播通知 - Local UserNotification(1)

前前言

嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第二五篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。


前言

今天要來學習的東西,是讓大家又愛又恨的 - 「推播通知」


每天早上起床打開手機,你可能都會看到如上圖這樣爆量的通知
你恨不得將它們通通刪掉再也不顯示,但有的通知卻又很實用(例如:限時下殺特賣)

現在就讓我們來學習這個 -「推播通知」的製作方式吧!

推播通知的種類

iOS上能使用的推播有兩種,分別為:

  1. 本地推播(Local UserNotification)
  2. 遠端推播(Remote UserNotification)- 需透過網路

由於iOS的遠端推播較為麻煩(需透過蘋果的APNS)
故本篇以本地推播學習為主,遠端推播放在以後學習

本地推播通知的觸發條件

本地推播通知使用的觸發條件,主要有三種:

  1. UNTimeIntervalNotificationTrigger

    間隔多久,發送一次通知。 例如:六十秒一次、三小時一次

  2. UNCalendarNotificationTrigger

    指定時間點,發送一次通知。 例如:每週一早上8:00、每年9月11日中午12:00

  3. UNLocationNotificationTrigger

    進入某個範圍或離開某個範圍,發送一次通知。 例如:進入某賣場、離開某賣場

實作 - 請求的重要性

在iOS中,得到「允許」這件事相當重要,沒做這件事,程式鳥都不會鳥你
故我們會先在 AppDelegate.swift 中撰寫以下程式碼:

import UserNotifications 這個框架

在 didFinishLaunchingWithOptions 中撰寫以下程式碼

在第一次開啓App時,便會收到請求(是否要讓這個App傳送給你通知、聲音、Icon標示)

實作 - 推播通知

之後我們回到 ViewController.swift 中撰寫以下程式碼:

import UserNotifications 這個框架

先設一個 content 變數來儲存要通知的內容。
titie:通知的主標題。
subtitle:通知的副標題。
body:通知的內文。
badge:收到通知後,AppIcon右上角會出現數字。
sound:通知的聲音,這裡使用系統預設的聲音。

trigger:觸發通知的方式。這裡先以間隔多久來示範:10秒後發送、不重複
request:安排一個通知。identifier:識別碼,自行輸入用以管理通知
UNUserNotificationCenter.current().add:將先前安排好的通知加入。

在 viewDidLoad 中 call createNotification

實作 - Demo

開啟App後,切換到桌面,十秒內即會收到推播通知

下集預告

目前這篇介紹的部分,需切換回桌面才能接收到通知。
下一篇將會實作在 App 內亦能收到通知的設定、指定時間點發送、插入圖片等

程式碼參考:GitHub


上一篇
Day24:當天的鐵人當天寫 - 畫面版本號碼自動更新
下一篇
Day26:當天的鐵人當天寫 - Higher-Order Functions & Closure(2)
系列文
Swift - 來吧!鐵人三十項30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言