iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
Mobile Development

小菜逼學習IOS系列 第 14

swift 推播通知(2)-倒數17天

  • 分享至 

  • xImage
  •  

首先,要記得引入 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])
    }

在回到要觸發推播的 View Controller

先設一個 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)

上一篇
swift 推播通知(1)-倒數18天
下一篇
如何使用Swift將Json保存/寫入文件-倒數16天
系列文
小菜逼學習IOS30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言