์๋ ํ์ธ์ Foma๐ ์ ๋๋ค!
์ค๋์ ์ ์ ๊ฐ ํธ์ฌ ์๋ฆผ๋ฐ๋ฅผ ํญํ์ ๋ ํน์ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ฒ์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
Preview
AppDelegate
๋จผ์ UserNotifications๋ฅผ import ํด์ค๋๋ค.
import UserNotifications
์๋์ ๊ฐ์ด userNotificationCenter๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์.
let userNotificationCenter = UNUserNotificationCenter.current()
didFinishLaunchingWithOptions ๋ฉ์๋์ ์์์ ๋ง๋ค์ด์ค userNotificationCenter์ ๋๋ฆฌ๊ฒ์ดํธ๋ฅผ self๋ก ํด์ค๋๋ค.
application.registerForRemoteNotifications()๋ ์์ฑํด์ฃผ์ธ์!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
userNotificationCenter.delegate = self
application.registerForRemoteNotifications()
return true
}
UserNotificationCenterDelegate๋ฅผ extension ํด์ฃผ์๊ณ
userNotificationCenter์ didReceive ๋ฉ์๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ํ์ ๋ฐ๋ผ์ ์ด๋ ํ ์ฝ๋๋ฅผ ์คํํ ์ง ์ ํด์ค๋๋ค.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let application = UIApplication.shared
//์ฑ์ด ์ผ์ ธ์๋ ์ํ์์ ํธ์ฌ ์๋ฆผ์ ๋๋ ์ ๋
if application.applicationState == .active {
print("ํธ์ฌ์๋ฆผ ํญ(์ฑ ์ผ์ ธ์์)")
}
//์ฑ์ด ๊บผ์ ธ์๋ ์ํ์์ ํธ์ฌ ์๋ฆผ์ ๋๋ ์ ๋
if application.applicationState == .inactive {
print("ํธ์ฌ์๋ฆผ ํญ(์ฑ ๊บผ์ ธ์์)")
}
}
์ฌ๊ธฐ์ ์ด๋ค ํธ์ฌ ์๋ฆผ์ ๋๋ ๋์ง ํ์ธํด์ผ๊ฒ ์ฃ ?
์ ๋ ํธ์ฌ ์๋ฆผ์ ํ์ดํ์ ํตํด์ ํ์ธํ๋๋ฐ์.
ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฉ์๋์์ response.notification.request.content๋ฅผ ์ด์ฉํด์
ํธ์ฌ ์๋ฆผ์ title,body,identifier ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
if application.applicationState == .inactive {
//ํธ์ฌ ์๋ฆผ ํ์ดํ์ด ์ฑํ
์ผ๋
if response.notification.request.content.title == "์ฑํ
" {
}
}
์ด์ ํน์ ํ์ด์ง๋ก ์ด๋ํ๋ ๋ฒ์ ๋ํด ์์์ผ๊ฒ ์ฃ ?
์ ๋ ํญ๋ฐ์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ทฐ์ปจํธ๋กค๋ฌ๋ก ์ด๋ํ๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์๋ถํฐ๋ NotificationCenter๋ฅผ ์ฌ์ฉํด์ฃผ๋๋ฐ์.
NotificationCenter์ userInfo๋ฅผ ํตํด ํธ์ฌ ์๋ฆผ์ ํ์ดํ์ ํด๋นํ๋ ํญ๋ฐ ์์ดํ ์ index๋ฅผ ์ ๋ฌํด์ค๋๋ค.
if application.applicationState == .inactive {
//ํธ์ฌ ์๋ฆผ ํ์ดํ์ด ์ฑํ
์ผ๋
if response.notification.request.content.title == "์ฑํ
" {
NotificationCenter.default.post(name: Notification.Name("showPage"), object: nil, userInfo: ["index":1])
}
}
TabbarController
ํญ๋ฐ ์ปจํธ๋กค๋ฌ์ ์ NotificationCenter์ ์ต์ ๋ฒ๋ฅผ ๋ฌ์์ค๋๋ค.
NotificationCenter.default.addObserver(self, selector: #selector(showPage(_:)), name: NSNotification.Name("showPage"), object: nil)
๊ทธ๋ฆฌ๊ณค userInfo์ index๋ฅผ ํ์ธํด์ selectedIndex๋ฅผ ํด๋น index๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ํธ์ฌ ์๋ฆผ์ ํญํ์ ๋
์ํ๋ ํ์ด์ง๋ก ์ด๋ํ ์ ์๊ฒ ๋ฉ๋๋ค.
@objc func showPage(_ notification:Notification) {
if let userInfo = notification.userInfo {
if let index = userInfo["index"] as? Int {
self.selectedIndex = index
}
}
}
์ด๋ ๊ฒ ํด์ฃผ๊ณ ํธ์ฌ์๋ฆผ์ ํญํ๋ฉด ํญ๋ฐ์ 1๋ฒ์งธ ์ธ๋ฑ์ค์ธ ์ฑํ ๋ฐฉ ํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค!
์ค๋์ ์ด๋ ๊ฒ ํธ์ฌ์๋ฆผ์ ์ ์ ๊ฐ ํญํ์ ๋ ํน์ ํ์ด์ง๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ค๋ณด์๋๋ฐ์.
ํน์๋ผ๋ ๊ถ๊ธํ์ ์ ์ด ์์ผ๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
'๐ iOS > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] Code Snippet ์ฌ์ฉํด๋ณด๊ธฐ(feat. ์ฝ๋ ์๋์์ฑ) (2) | 2021.08.17 |
---|---|
[iOS] iOS ์ฑ ์ถ์ํ๋ ๋ฒ ์์๋ณด๊ธฐ (0) | 2021.07.29 |
[iOS] TestFlight ํ ์คํธ ์ฌ์ฉ์ ์ด๋ํ๊ธฐ (0) | 2021.07.22 |
[iOS] TestFlight ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ (3) | 2021.07.21 |
[iOS] Unit Test์ ๋ํด์ ๊ฐ๋จํ ์์๋ณด๊ธฐ (2) | 2021.07.19 |
๋๊ธ