iOS κΈ°μ΄ μ€μ
νΈμλ©μΈμ§ λ°μ‘μ μν΄ iOS μμ νμλ‘ μ€μ ν΄ μ£Όμ μΌ νλ κ°μ΄λμ λλ€.
APNS μΈμ¦μ λ°κΈ
Firebase μ°λ
λ€μ Firebase consoleμμ νλ‘μ νΈ κ°μ μ€λ₯Έμͺ½μ setting μμ΄μ½μ ν΄λ¦νμ¬ νλ‘μ νΈ μ€μ μΌλ‘ λ€μ΄κ°λλ€.
ν΄λΌμ°λ λ©μμ§ λ©λ΄λ₯Ό ν΄λ¦νμ¬ λ€μκ³Ό κ°μ΄ λ°κΈλ°μ APN μΈμ¦ (.p8) ν€λ₯Ό μ λ‘λ ν©λλ€.
Firebase console ν΄λΌμ°λλ©μμ§ μ€μ νλ©΄μμ APNS Authentication Key (APN μΈμ¦ν€), APNS Certificates(APNμΈμ¦μ) μ λ‘λ 2κ°μ§ μ€μ μ νμΈν μ μμ΅λλ€.
μ¬κΈ°μ Apple μμ λ°κΈλ°μ Key λλ Certificatesλ₯Ό λ£μ΄μΌλ§ μ격 νΈμκ° μ μμ μΌλ‘ μλνλ©°, λ μ€ νλλ§ μ λ‘λ νμ¬λ λ©λλ€.
APNS Key : .p8 ννλ₯Ό λκ³ νλλ§ μ λ‘λ.
APNS Certificates : .p12 ννλ₯Ό λκ³ κ°λ°μ©, λ°°ν¬μ© μΈμ¦μκ° λ°λ‘ μ‘΄μ¬. μΌλ λ§λ€ κ°±μ νμ.
*μμ΄μ¦νΈλ컀 λνλ¨ΌνΈλ .p8 μ λ‘λλ₯Ό κΈ°μ€μΌλ‘ μμ±λμμ΅λλ€.
κ·Έλ¦¬κ³ Firebase κ΅¬μ± νμΌλ Xcode 루νΈμ 볡μ¬ν©λλ€.
λμ보λ μ€μ
μμ΄μ¦νΈλ컀 λμ보λμμ νΈμ μ°λμ μν μ€μ μ μ§νν©λλ€.
μλΉμ€μ€μ > μ΄ν리μΌμ΄μ μ€μ > νΈμμ°λ λ©λ΄λ₯Ό ν΄λ¦ν©λλ€.
μλ μ΄λ―Έμ§μμ νΈμ μλΉμ€ νμ μ Firebase Cloud Messaging μΌλ‘ μ ν ν Android νΈμ μ°λμ μΆκ°ν Firebase Admin SDKμ© "private key" νμΌμ μΆκ° ν΄ μ£ΌμΈμ.
SDK μ€μΉ
Cocoapodμμ SDK λ€μ΄λ‘λ
XCode νλ‘μ νΈ νμΌμ€ Podfile νμΌμ λ€μκ³Ό κ°μ΄ SDKμ FirebaseMessagingμ μΆκ°ν©λλ€.
κΈ°μ‘΄μ SDKλ₯Ό νλ² μ€μΉν κ²½μ°μλ μ€μΉν SDK λ²μ μ νμν΄μΌ νλ κ²½μ°λ μμ΅λλ€. μλμ κ°μ΄ μ€μΉν SDKλ²μ μ λͺ μμ μΌλ‘ νμνλ©΄ λ©λλ€.
Terminal
TerminalPodfile μ ν΄λΉλΌμΈμ μΆκ°ν ν Terminal νλ‘κ·Έλ¨μ μ€ννμ¬ λ€μμ λͺ
λ Ήμ μνν©λλ€.
SDK λ²μ μ λ°μ΄νΈμ κ²½μ° λ€μμ λͺ λ Ήμ μνν©λλ€.
Cocoapod μ¬μ©νμ§ μμ κ²½μ°
SDK νμΌμ URLμμ λ€μ΄λ‘λ ν©λλ€.
λ€μ΄λ νμΌμ μμΆ ν΄μ νλ©΄ λ€μκ³Ό κ°μ νμΌμ΄ νμΈ κ°λ₯νκ³ μ΄μ€ μλμ μ νλ 3κ°μ νμΌμ λΆμ λμ μ± νλ‘μ νΈμ μΆκ°ν©λλ€.
νλ‘μ νΈ μ νν λ§μ°μ€ μ°ν΄λ¦, Add Files to λ©λ΄λ₯Ό μ νν©λλ€.
![]()
μμμ λ€μ΄λ‘λ λ°κ³ , μμΆ ν΄μ ν ν΄λμ λ€μ΄κ°μ μλμ κ°μ΄ μΆκ° λμ νμΌμ μ ννκ³ , νλ©΄ μλμͺ½ μ€μ μ μ‘΄μ¬νλ λͺ¨λ targetμ ν¬ν¨λμλμ§ νμΈν μΆκ° νλ©΄ λ©λλ€.
BuildSetting μ μλμ κ°μ΄ μ€μ μ μΆκ°ν©λλ€.
xcode κ° 12.3 μ΄ν λ²μ μ΄κ³ λΉλ κ³Όμ μμ μλμ μ μ¬ν μ€λ₯κ° λ°μνλ κ²½μ°κ° μμΌλ©°,
μμ κ²½μ°μλ μλμ κ°μ΄ μ€μ μ νκ³ , λΉλλ₯Ό νλ©΄λ©λλ€.
CocoaPodμ μ¬μ©νμ§ μμκ²½μ°, Firebase μλ μ€μ μ μλμ Firebase 곡μ documentλ₯Ό μ°Έκ³ νμ¬ μλμΌλ‘ νλ‘μ νΈμ μΆκ°ν΄ μ£ΌμΈμ.
dotAuthorizationKey λ±λ‘
info.plist νμΌμ Open As Source Code λ°©μμΌλ‘ μ€νν ν, μλ μ½λλ₯Ό μΆκ°ν©λλ€.
μΆκ°ν μ½λ μ€ serviceNumberμ valueλ₯Ό μ¬λ°λ₯Έ κ°μΌλ‘ λ³κ²½ν΄μΌ ν©λλ€.
μμ΄μ¦νΈλ컀 λμ보λμ λ‘κ·ΈμΈνμ¬ μ€μ > μλΉμ€μ€μ λ©λ΄μμ 'μλΉμ€λ²νΈ' νλͺ©μ κΈ°μ¬λ μ«μλ₯Ό νμΈ ν 볡μ¬νμ¬ serviceNumber κ°μ λ³κ²½ ν΄ μ£ΌμΈμ.

HTTP ν΅μ νμ©
μ΄ λ΄μ©μ Wisetracker κΈ°λ³Έ SDKκ° μ΄λ―Έ μ μ©λ κ²½μ°μλ μλ‘ μ μ©ν νμκ° μμ΅λλ€. λ©μμ§ μλΉμ€λ§ μ΄μ©νλ κ²½μ° μ°Έμ‘°ν΄μ£ΌμΈμ.
httpν΅μ μ νμ©νκΈ° μν΄ NSAppTransportSecurity λ₯Ό μλμ κ°μ΄ μΆκ°ν©λλ€.
μ΄μ κ³Ό λ§μ°¬κ°μ§λ‘ info.plist νμΌμ Open As Source Code λ°©μμΌλ‘ μ€νν ν, μλ μ½λλ₯Ό μΆκ°ν©λλ€.
"Push Notification" Capability μΆκ°
μ±μ νΈμκΈ°λ₯μ μΆκ°ν©λλ€.
"Signing & Capabilities" νμ μ νν ν νλ©΄ μΌμͺ½μ "+ Capability"λ₯Ό λλ¬μ£ΌμΈμ.
"Capability"νλ©΄μμ "Push Notification"κΈ°λ₯μ κ²μνμ¬ μ νν©λλ€.
Background Modesλ μμ κ°μ λ°©λ²μΌλ‘ κ²μ ν μΆκ° ν΄ μ€λλ€.
μ΄κΈ°ν
μ΄κΈ°ν λ°©λ²μ SceneDelegate κ° μ€μ λ κ²½μ°μ μ€μ λμ§ μμ κ²½μ°μ λ°λΌ λ¬λΌμ§λλ€.
SceneDelegateλ₯Ό μ¬μ©νμ§ μμΌλ©΄ AppDelegateμμ μ΄κΈ°νμμ μ νκ³ , κ·Έλ μ§ μκ³ SceneDelegateλ₯Ό μ¬μ©νλ©΄ SceneDelegateμμ μ΄ μμ μ ν΄μΌ ν©λλ€.
1. iOS13 λ―Έλ§ (SceneDelegate μμ)
SceneDelegate μμ)AppDelegateμ didFinishLaunchingWithOptions ν¨μμ SDKλ₯Ό InitializationνκΈ° μν μ½λλ₯Ό λ€μκ³Ό κ°μ΄ μ μ©ν©λλ€. SDKκ° μ μμ μΌλ‘ μ΄κΈ°ν λμμ λ μλμ κ°μ κΈ°λ³Έ λΆμμ΄ κ°λ₯ν©λλ€.
μ± μ€ν λ° λ°©λ¬Έμ, μΌ/μ£Ό/μμμλ°©λ¬Έμ λ± λ°©λ¬Έκ³Ό κ΄λ ¨λ μ§ν
ν΅μ μ¬, λ¨λ§κΈ°, κ΅κ° λ± λ°©λ¬Έμμ λ¨λ§κΈ° νκ²½μΌλ‘ λΆν° μΆμΆλ μ μλ μ§ν
DOTκ° μ¬μ©λλ κ³³μμλ import DOTμ ν΅ν΄ importκ° νμν©λλ€.
2. iOS13 μ΄μ (SceneDelegate μ¬μ©)
SceneDelegate μ¬μ©)π iOS13 μ΄μμ΄μ΄λ SceneDelegateλ₯Ό μ¬μ©νμ§ μμ μλ μμ΄μ, μ΄ λμλ μμ SceneDelegateλ₯Ό μ¬μ©νμ§ μλ κ²½μ°λ₯Ό μ°Έμ‘°νμΈμ.
SceneDelegateμ sceneDidBecomeActiveν¨μμ SDKλ₯Ό InitializationνκΈ° μν μ½λλ₯Ό λ€μκ³Ό κ°μ΄ μ μ©ν©λλ€. SDKκ° μ μμ μΌλ‘ μ΄κΈ°ν λμμ λ μλμ κ°μ κΈ°λ³Έ λΆμμ΄ κ°λ₯ν©λλ€.
μ± μ€ν λ° λ°©λ¬Έμ, μΌ/μ£Ό/μμμλ°©λ¬Έμ λ± λ°©λ¬Έκ³Ό κ΄λ ¨λ μ§ν
ν΅μ μ¬, λ¨λ§κΈ°, κ΅κ° λ± λ°©λ¬Έμμ λ¨λ§κΈ° νκ²½μΌλ‘ λΆν° μΆμΆλ μ μλ μ§ν
μ΄λ―Έμ§ νΈμλ©μμ§ μ μ© (μ νμ¬ν)
Notification Service Extension Target μΆκ°
μ΄λ―Έμ§λ₯Ό ν¬ν¨ν νΈμλ©μΈλ₯Ό μμ λ°κΈ° μν΄ νμν©λλ€.
File - New - Target λ©λ΄μμ "Notification Service Extension"μ μ νν©λλ€.
Product Nameμ νκ²λͺ μ μ λ ₯ν©λλ€. (μλμμ Podfileμ targetμ μΆκ°ν λ μ¬μ©ν νκ²λͺ μ λλ€)
μΆκ° μλ£ ν NotificationServiceExtension ν΄λκ° μμ±λ©λλ€.

Podfile μμ
Podfileμ μλμ κ°μ΄ μ±μ νκ² μμ μ΄λ―Έμ§ νΈμλ₯Ό μν νκ²μ μΆκ°ν ν pod install λͺ
λ Ήμ΄λ₯Ό μ€νμμΌ μ€λλ€.
Podfile
PodfileβοΈνλ μμν¬ μΆκ°μ μ±μ νλ μμν¬ λ°©μκ³Ό λμΌνκ² μμ±λ μ μλλ‘ νλ² λ μ²΄ν¬ ν΄ μ£ΌμΈμ. (λμ or μ μ )
βοΈWisetracker SDK λ²μ μ΄ λͺ μλμ΄ μλ€λ©΄, λμΌνκ² λ²μ μ΄ λͺ μλμ΄ μλ ννλ‘ μΆκ°νλμ§ μ²΄ν¬ ν΄ μ£ΌμΈμ.
μμ "NotificationServiceExtension"μ κ³ κ°μ¬μμ λ§λ νμΌλͺ μΌλ‘ ν΄μ£Όμ μΌ ν©λλ€.
μμλ νκ²λͺ μ΄ "NotificationServiceExtension"μΈ κ²½μ°μ λλ€.
π΄ Podfileμ μ΄λ―Έμ§ νΈμλ₯Ό μΆκ°νμμΌλ μλμ κ°μ μλ¬κ° λ°μλλ€λ©΄ μλμ μ± νμ₯ μ½λλ₯Ό μΆκ° ν΄ μ£ΌμΈμ.
'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.
NotificationService μμ
NotificationServiceνμΌμ μ΄μ΄ μλμ λ΄μ©μΌλ‘ λμ²΄ν΄ μ£ΌμΈμ. * κΈ°μ‘΄ λ΄μ©μ λͺ¨λ μμ νκ³ μλ λ΄μ©μΌλ‘ λ체νλκ²μ΄λ©°, μΆκ°κ° μλμ μ μ ν΄ μ£ΌμΈμ.
NotificationService
π΄ NotificationService νμΌμμFirebaseMessaging λͺ¨λμ΄ μλ€λ μλ¬ λ°μμ Notification Service Extension νκ²μ λΉλ μ€μ μμ "Header Search Paths" νλͺ©μ νμΈνκ³ Firebase Messaging ν€λ νμΌμ΄ ν¬ν¨λ λλ ν λ¦¬κ° μλμ§ νμΈνμΈμ.
![]()
iOS κΈ°μ΄μ€μ μ μλ£νμ ¨μ΅λλ€ π
λ€μμΌλ‘ νΈμλ©μΈμ§ μ€μ μ μν λ¨κ³λ₯Ό μ§ν ν΄ μ£ΌμΈμ ππ»
Last updated
Was this helpful?