Swift Practice # 126 本地推播 Local Notifications 初探

上一篇完成了第二個產品的上架,也找到一些Bug,是未來要處理的小方向。

而這篇想要先探討關於自己還沒接觸到卻很常出現的功能,推播。

推播是個貼心又擾亂人心的功能,對於需要被提醒的人來說相當方便,但是在需要專心的時刻又很容易被這個影響。所以這篇想要理解背後的程式碼是如何完成的。

學習資源:

1取得許可:

在AppDelegate的didFinishLaunchingWithOptions內 或是 在初始的viewController的viewDidLoad內 import UserNotifications 後 輸入上面的頁面,目前看到兩邊都可以執行,雖然還不太理解原因是什麼。

輸入完成後執行Simulator就會看到詢問視窗是否允許。

不允許可以到Setting內改成允許,不允許就什麼都不用玩了。

2建立推播內容並發送:

建立一個推播的Func並在viewDidLoad執行

嘗試執行

從上面來看推播的基礎功能已經可以實踐了。

App內推播:

不過目前這樣的設定只能再離開App後才跳出,正常我們在使用line的時候查看一個視窗其他視窗有訊息也會跳推播,所以正常模式應該是要在自己的App內跳出自己的推播。

首先先到AppDelegate內建立delegate

UNUserNotificationCenter.current().delegate = self

接著再新增

接著可以測試看看了

可以看到也是沒有問題。

推播內附件圖片:

從上面的資源看到可以在推播內放上圖片,所以嘗試來實踐看看。

首先先找到免費的圖片放在左側,發現放在assets內會無法實踐。

接著在剛剛的createNotificationContent的自定義Function內新增下面的程式碼

嘗試執行看看

測試也沒問題。

點擊推播執行指定內容:

在上面的資源發現點擊推播可以直接開啟網頁,但我單純的想要改變 label的內容,因為涉及到delegate,所以在原本的appleDelegate的相關notifications的程式碼我就搬家到viewController內來設置。

接著在剛剛的createNotificationContent的自定義Function內新增下面程式碼

content.userInfo = ["changeLabel" : "我被改變了"]

接著引用didReceive的內容改變畫面上label的值。

嘗試測試看看

看來也沒問題。

大致上就是透過上面資源學習到的一些實際操作,下一篇應該可以來研究關於遠端推播(透過firebase)來跳出推播的操作。 持續加油!!

--

--