๐ŸŽ iOS/๊ฐœ๋ฐœ

[iOS] Firebase 7.0.0 ์—…๋ฐ์ดํŠธ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์„ ์ฃผ 2023. 2. 9. 10:41

ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋˜์–ด ์žˆ๋˜ Firebase ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ 6๋ฒ„์ „๋Œ€์—์„œ 7๋ฒ„์ „๋Œ€(7.0.0~)๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ ์ด์Šˆ๋“ค์— ๋Œ€ํ•œ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค. 

 


Error 1

 

๐Ÿ—’ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€

Parameter of 'messaging(_:didReceiveRegistrationToken:)' has different optionality than required by protocol 'MessagingDelegate'

 

 

๐Ÿš€ ์—๋Ÿฌ ์›์ธ

FirebaseMessaging 7.0.0์—์„œ ํ† ํฐ ์‚ญ์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์˜ต์…˜์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ญ์ œ๋œ ํ† ํฐ์— ๋Œ€ํ•ด ์ด ๋ฉ”์„œ๋“œ๋Š” fcmToken๊ฐ’ nil๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿš€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

BEFORE

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(String(describing: fcmToken))")
    let dataDict:[String: String] = ["token": fcmToken]
}

 

AFTER

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
    print("Firebase registration token: \(String(describing: fcmToken))")
    let dataDict:[String: String] = ["token": fcmToken ?? ""]
}

- fcmToken์˜ ํƒ€์ž…์„ String์—์„œ String?์œผ๋กœ ์ˆ˜์ •

- dataDict nil๊ฐ’ ์ฒ˜๋ฆฌ (?? "" ์ถ”๊ฐ€)

 

 


 

 

Error 2

 

๐Ÿ—’ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€

Cannot find type 'MessagingRemoteMessage' in scope

 

 

๐Ÿš€ ์—๋Ÿฌ ์›์ธ

FirebaseMessaging 7.0.0์—์„œ ๋ฉ”์„œ๋“œ ํƒ€์ž…์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿš€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

BEFORE

func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
}

 

AFTER

func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingDelegate) {
    print("Received data message: \(remoteMessage.description)")
}

- remoteMessage์˜ ํƒ€์ž…์„ MessagingRemoteMessage์—์„œ MessagingDelegate๋กœ ์ˆ˜์ •

- appData๋ฅผ description์œผ๋กœ ์ˆ˜์ •

 

 


 

 

Error 3

 

๐Ÿ—’ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€

Framework not found FIRAnalyticsConnector

Framework not found Protobuf

 

 

๐Ÿš€ ์—๋Ÿฌ ์›์ธ

FirebaseAnalytics๊ฐ€ ์˜์กด์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋˜ FIRAnalyticsConnector์™€ FirebaseMessaging์ด ์˜์กด์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋˜ Protobuf๊ฐ€ Firebase7.0.0 ์—…๋ฐ์ดํŠธ์™€ ํ•จ๊ป˜ ์˜์กด์„ฑ์ด ์ œ๊ฑฐ๋˜๋ฉด์„œ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ Linker Flag์—์„œ๋„ ์ œ๊ฑฐ๊ฐ€ ํ•„์š”ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿš€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Target > Build Settings > FIRAnalyticsConnector / Protobuf ๊ฒ€์ƒ‰ > Other Linker Flags์—์„œ ๋‹ค์Œ ๋ผ์ธ ์‚ญ์ œ

-framework
"FIRAnalyticsConnector"
-framework
"Protobuf"

 

 

* Other Linker Flag๋ž€?

Xcode ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ปดํŒŒ์ผ ํŒŒ์ž„์— ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งํฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ -Objc ํ”Œ๋ž˜๊ทธ๋Š” ๋ง์ปค๊ฐ€ Objective-C ํด๋ž˜์Šค๋‚˜ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์ •์˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์†ํ•œ ๊ฐ์ฒด ํŒŒ์ผ๋“ค์„ ๋ชจ๋‘ ์ ์žฌํ•˜๊ฒŒ ํ•ด ์ฃผ๋Š” ํ”Œ๋ž˜๊ทธ๋กœ, ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ”Œ๋ž˜๊ทธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.