---
# System prepended metadata

title: iOS NotificationCenter
tags: [' NotificationCenter', iOS]

---

---
title: iOS NotificationCenter
tags: iOS, NotificationCenter
description: iOS NotificationCenter
---

# iOS NotificationCenter
---
## 情境:
- 因設計了帳密自動登入造成ＡＰＰ版本更新時，無法正常跳出更新提示
## 解法:
- 運用iOS或Android的訊息廣播通知ViewController或是Activity做對應的動作
## 實作方法
### 
- Step 1. 註冊為觀察者
```typescript=
// 註冊為觀察者
NotificationCenter.default.addObserver(觀察者, selector: #selector(觀察者用來處理通知的方法), name: 通知的名稱, object: 要觀察的對象物件)

// 下面這段是範例code
NotificationCenter.default.addObserver(
    self,
    selector: #selector(Login.updateDone),
    name: NSNotification.Name(rawValue: "updateDone"),
    object: nil
)
```
- Step2. 發送廣播訊息
```typescript=
// 發送廣播訊息
NotificationCenter.default.post(name: 通知的名稱, object: 送出通知的物件, userInfo: 要包含在通知裡的資訊)

// 下面這段是範例code
NotificationCenter.default.post(NSNotification(name: NSNotification.Name(rawValue: "updateDone"), object: nil) as Notification)
```
- Step 3. 收到廣播後做對應的動作
```typescript=
@objc func 觀察者用來處理通知的方法()
{
    // do Your Job
}

// 下面這段是範例code
@objc func updateDone()
{
    // do Your Job
}
```
- Step 4. 如果之後不會再使用，記得ViewController或Activity要刪掉綁定廣播事件
```typescript=
deinit
{
    NotificationCenter.default.removeObserver(
        self,
        name: 通知的名稱,
        object: nil)
}

// 下面這段是範例code
deinit
{
    NotificationCenter.default.removeObserver(
        self,
        name: NSNotification.Name(rawValue: "updateDone"),
        object: nil)
}
```
## 參考資料
- iOS, https://www.appcoda.com.tw/notificationcenter/
- Android, http://www.aaronlife.com/v1/teaching/android_broadcast.html