์ ๋ํ์ค ๊ฐ๋ฐํ์ ํฉ๋ฅ ํ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ค์ ๋น๋์ ๋ฐฐํฌ๋ฅผ ๋ชฉ์ ์ ๋๊ณ ์์๋ค.
์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ ๊ฒํด๋ณด๊ณ ์๋ ์ฐจ, ์๋ฒ์์ FCM์ ํตํ iOS์ฑ์๊ฒ๋ก์ ํธ์ฌ ์๋ฆผ์ด ์คํจํ๋ค๋ ์ด์๊ฐ ๋ณด๊ณ ๋๋ค.
ํ์ฌ๋ ํด๊ฒฐํ์ผ๋, ์ฌ๋ฐ ๋ฐฉ์ง์ ์ฑ ์ด์ ํ FCM iOS ํธ์ฌ ์๋ฆผ ์ฅ์ ๋ฅผ ๊ฒช๋ ๊ฐ๋ฐ์๋ค์๊ฒ ๊ณต์ ํ๋ ์ฐจ์์์
์์ธ, ๋ถ์, ํด๊ฒฐ๊น์ง์ ๊ธฐ๋ก์ ๋จ๊ฒจ๋ณด๊ณ ์ ํ๋ค.
0. APNs์ FCM์ ๊ฐ๋ ๋ฐ ์ญํ

APNs๋ Apple์์ ์ ๊ณตํ๋ ํธ์ฌ ์๋ฆผ ์ ์ก ์๋ฒ๋ก, ํธ์ฌ์๋ฆผ์ ์ ํ APNs์๋ฒ์ ์์ฒญ, ๋์ ๋๋ฐ์ด์ค์๊ฒ ํธ์ฌ์๋ฆผ์ ์ ์กํ๋ค.
์ฌ์ค์ Push notification capability๋ฅผ ๋ฑ๋กํ์ฌ APNs๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด Apple ํ๋ซํผ ๋จ๋ง์๊ฒ ํธ์ฌ ์๋ฆผ์ ๋ณด๋ผ ์ ์๋ค.
FCM(Firebase Cloud Messaging)์ ๊ตฌ๊ธ์์ ์ ๊ณตํ๋ ํธ์ฌ ์๋ฆผ ์๋น์ค์ด๋ค.
iOS๋ฟ ์๋๋ผ iOS๋ ์น ๋ฑ ์ฌ๋ฌ ํ๋ซํผ์ ๊ฐ์ API๋ก ํธ์ฌ ์๋ฆผ์ ๋ณด๋ผ ์ ์์ผ๋ฉฐ, ์ฑ ์๋ฒ๊ฐ ์ง์ APNs๋ ํต์ ํ์ง ์์๋ ๋๋ค.
FCM์ ๋ด๋ถ์ ์ผ๋ก Appleํ๋ซํผ ๋จ๋ง์๊ฒ APNs๋ฅผ ํตํด ์๋ฆผ์ ์ ๋ฌํ๋ค.
๋ฐ๋ผ์ ์ฑ ์๋ฒ๋ FCM API๋ก ํ๋ซํผ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์๋ฆผ์ ๋ณด๋ผ ์ ์๊ฒ ๋๊ณ , iOS๋ก์ ์ค์ ์๋ฆผ ์ ๋ฌ์ APNs๊ฐ ํด์ฃผ๋ ๊ตฌ์กฐ์ด๋ค.
๋๋ถ์ ๊ฐ๋ฐ์๋ ํ๋ซํผ๋ณ ์ธ๋ถ ์ฒ๋ฆฌ ์์ด๋ ํธ์ฌ ์๋ฆผ์ ๋ณด๋ผ ์ ์์ง๋ง, APNs ๊ด๋ จ ์ค์ ๋ณ๋ ๋ฑ์ ๋ํ ์์
์ ์ ๊ฒฝ์จ์ฃผ์ด์ผ ํ๋ค.
1. ์ด์ ๋ฐ์: Firebase Cloud Messaging๋ฅผ ์ฌ์ฉํ iOS ํธ์ฌ ์๋ฆผ ์ฅ์
์ ๋น๋์ ์ฑ์ ๋ฐฐํฌํ๊ธฐ ์ ํธ์ฌ ์๋ฆผ ์ ๊ฒ์ ์ํด ์๋ฒ์ธก์ ํธ์ฌ ์๋ฆผ์ ์์ฒญํ๋ค. ํ๊ฒฝ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฑ์คํ ์ด๋ฅผ ํตํด ์ค์นํ ํํ ๋ฐฐํฌ ๋น๋์ ์ฑ
- ์ฑ์ Firebase์ SDK๋ฅผ ๋ด์ฅ, ์ฌ์์์ ๋งค๋ฒ AppDelegate๋ด์์ APNsํ ํฐ์ FCM์ ๋ฑ๋ก
- FCM์ ์ฌ์ฉํด ํธ์ฌ ์๋ฆผ์ ๋ณด๋ด๋ ์๋ฒ
์๋ฒ๋ ํน์ ๋๊ธฐ์ด์ ๋์ DeviceID๋ฅผ ๋ฑ๋กํ๊ณ , ๋จ์ผ๋์์ผ๋ก ์ง์ ํธ์ฌ ์๋ฆผ์ ๋ณด๋ด๋ ํ๋ก์ฐ๋ฅผ ์ํํ๋ค.
๊ทธ๋ฌ๋ ํธ์ฌ์๋ฆผ์ด ๋์๊ฒ ๋๋ฌํ์ง ์์๊ณ , ์์ฐจ๋ก ๋ฐ๋ณตํ์์๋ ๋๋ฌํ์ง ์๋๊ฒ์ ํ์ธํ๋ค.
๋ํ ์๋ฒ์ธก์๋ ํธ์ฌ์๋ฆผ ์คํจ ๋ฉ์ธ์ง๋ฅผ ๋ฐํ๋ฐ๊ณ ์๋ค๋ ๋ณด๊ณ ๋ก ํธ์ฌ์๋ฆผ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค๋ ์ฌ์ค์ ํ์ธํ๋ค.
2. ์ด์ ์ฌํ: ํธ์ฌ ์๋ฆผ ํ๋ก์ฐ๋ฅผ ์๋์ผ๋ก ์คํํ์ฌ ์ฅ์ ํ์ธ
์ฅ์ ๊ฐ ๋ฐ์ํ ํธ์ฌ ์๋ฆผ ํ๋ก์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฑ์์ ํน์ ๋๊ธฐ์ด์ ๋๊ธฐ ๋ฑ๋ก (๋๋ฐ์ด์คID๋ฅผ ์๋ฒ ๋ด ์์์ ๋๊ธฐ์ด์ ๋ฑ๋ก)
-> ์ด์์ ์น์์ ๋๊ธฐ์ด ๋ด์ ์ ์ ๋ฅผ ์ ํ (์๋ฒ๊ฐ FCM API๋ก ํธ์ฌ ์ ์ก ์์ฒญ)
-> ์ ํ๋ ์ ์ ๋๋ฐ์ด์คID๋ก FCM์ด APNs์๊ฒ ํธ์ฌ ์ ์ก ์์ฒญ (FCM์ด APNs์๊ฒ ํธ์ฌ ์ ์ก ์์ฒญ)
-> ์ฑ์ด ํธ์ฌ ์๋ฆผ ์์ (APNs๊ฐ ์ฑ์๊ฒ ํธ์ฌ ์๋ฆผ ์ ์ก ๋ฐ ์ฑ์ด ์์ )
์๊ธฐ ํ๋ก์ฐ๋ฅผ ์ง์ ์ํํ๊ณ , iOSํ๋ซํผ ์ธ์ ๋จ๋ง(์๋๋ก์ด๋)๋ ์๋ฆผ์ ์ ์์ ์ผ๋ก ์์ ํ๊ณ ์์์ ํ์ธํ๋ค.
๋ฐ๋ผ์ iOSํ๋ซํผ์ ํํด Push Notification ์ ์ก์ด ์คํจํ๊ณ ์์์ ์ ์ ์์๋ค.

3. ์ด์ ๋ถ์: Push Notification Console๋ก ํธ์ฌ ์๋ฆผ ์ฅ์ ์ง์ ๋ถ์
ํธ์ฌ ์๋ฆผ ์์ฒญ์ ๋ค์์ ๊ฒฝ์ ํ๋ค.
- ์๋ฒ
- FCM
- APNs
์ฑ์ APIํธ์ถ์ ์๋ฒ์์๋ ์ ์์ ์ผ๋ก ๋ฐ๊ณ ์์ผ๋ฏ๋ก, FCM, APNs ๋ ์ค ํ๋ ํน์ ์ ๋ถ๊ฐ ๋ฌธ์ ๋ผ๊ณ ํ๋จํ๋ค.
๋ฐ๋ผ์ ์ด๋ ์ง์ ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋์ง ์๊ธฐ APNs ์ฝ์๋ก ์ฑ์ ์ง์ ํธ์ฌ๋ฅผ ์งํํ๊ณ , ํ๊ฒฝ์ ์๋์ ๊ฐ๋ค.
- TestFlight์ ๋ฐฐํฌ ํ๋ก๋น์ ๋์ผ๋ก ์๋ช ํ ๋ฆด๋ฆฌ์ฆ ๋น๋ ์ฑ
- Push notification capability ๋ฐ ์ ํจ์ฑ์ ํ์ธํ APNs ์ฆ๋ช ์, ํ๋กํ์ผ, ๊ฐ์ธ ํค
์ฑ์คํ ์ด ๋ฐฐํฌ ๋ธ๋์น๋ก git checkoutํ ํ
๋จ๋ง์ ํ ํฐ์ ์ถ๋ ฅํ๋๋ก ๊ฐ๋จํ ์์ ํ ๋ค์ Push Notification Console์์ Production ํ๊ฒฝ์์ ์ง์ ํธ์ฌ ์๋์ ๋ณด๋๋ค.

์ฑ ํธ์ฌ์๋ฆผ ์ ์ ์์ ์ ํ์ธํ๊ณ , ์ฆ๋ช
์๋ฑ์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ, ๋ฐ๋ผ์ FCM์ชฝ์ผ๋ก ์ฅ์ ๋ฐ์ ๋ฒ์๋ฅผ ์ขํ ์ ์์๋ค.
์ด์ FCM์ด ์ด๋ป๊ฒ ํธ์ฌ ์๋ฆผ์ ๋ณด๋ด๋ ์ง ์กฐ์ฌ, ๋ํ ์ต๊ทผ์ ์ฑ์ ์ด์ ๋ฐ์์์ ๊ณ ๋ คํด ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ค์ ์ธ์ ๋ค.
์ฑ ์ด์ ์ ์ํด ์ฑ์ APNs๊ด๋ จ ์ธ์ฆํค(๊ฐ์ธํค), ํคID, ํID๊ฐ ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
๋ฐ๋ผ์ FCM์ ๋ฑ๋ก๋ ๊ธฐ์กด์ ๋ฆฌ์์ค๊ฐ ๋์ด์ ์ ํจํ์ง ์์ APNs์ด FCM์ ์์ฒญ์ ๊ฑฐ๋ถํ๊ณ ์์ผ๋ฉฐ
์ด์ Push Notification์ด iOS ํ๋ซํผ์ ํํด ์คํจํ๊ณ ์๋ค.
4. ์ด์ ํด๊ฒฐ: Firebase Cloud Messaging์ APNs ํค ๊ฐฑ์ ๋ฐ ํธ์ฌ ์๋ฆผ ์ ์ ๋์ ํ์ธ
FCM์ ์๋ก ๋ฑ๋กํด์ผ ํ ๋ฆฌ์์ค๋ฅผ ๋ด๊ฐ ๊ฐ๊ณ ์์์ผ๋ฉฐ, ์ด๋๋ ์คํ 11์์ฏค์ ๋ฆ์ ์๊ฐ์ด์๋ค.
๋ฐ๋ผ์ Firebase์ ๊ด๋ฆฌ๊ถํ์ ๋ถ์ฌ๋ฐ์ ๋ค ์ง์ Cloud Messaging์ ์ค์ ๊ฐ์ ์ ๊ฒํ๋ค.
์ฑ ์ด์ ์ ์ ์ ๋ณด๊ฐ ์ค์ ๋ผ ์์์ ํ์ธํ๊ณ , ๊ด๋ จ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ ์
๋ฐ์ดํธ ํ๋ค.

์ดํ ์ฅ์ ๊ฐ ๋ฐ์ํ ํธ์ฌ ์๋ฆผ ํ๋ก์ฐ๋ฅผ ๋ค์ ์ ๊ฒ, ์ ์์ ์ผ๋ก ์ก์ ํ์์ ํ์ธํ๋ค.

์ฑ ์ด์ ์ดํ ํธ์ฌ ์๋ฆผ์ ์ฅ์ ๋ฅผ ๊ฒช๋ ์๋น์ค์ ๊ฐ๋ฐ์๋ค์๊ฒ ๋์์ด ๋์ผ๋ฉด ํ๋ ๋ฐ๋๊ณผ ํจ๊ป ํฌ์คํ ์ ์ค์ธ๋ค.
FCM, APNS ์ฐ๋ ๋ฐฉ๋ฒ
1. APNS 1-1 Apple Developer ์ ์ 2-1 ํด๋ฆญ 2-2 Key ์ถ๊ฐํ๊ธฐ ํด๋ฆญ(์์ด๋๋น 2๊ฐ ์์ฑ ๊ฐ๋ฅ) 2-3 ์ฒดํฌ ํ Continue 2-4 ๋ฑ๋ก ์๋ฃ 2-5 ๋ฑ๋ก ์๋ฃ (p8 ํ์ผ ๋ค์ด๋ก๋ ํ์!) (ํ๋ฒ ๋ค์ด๋ก๋ ์ดํ ์ฌ์๋ ๋ถ๊ฐ) Key ID ๋ณ
vandijk.tistory.com
https://zeddios.tistory.com/1399
Push Notification Console ์จ๋ณด๊ธฐ
์ด๋ฒ์ Push Notification Console ๋์์ ์จ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๊ณผ์ฐ ์ด๋จ์ง.. # ํธ์ ๋ณด๋ด๊ธฐ 1. ํ๋ก์ ํธ ์์ฑ 2. Capabilities > Push Notification ์ถ๊ฐ 3. AppDelegate.swift ์์ func application(_ application: UIApplication, didRegi
zeddios.tistory.com