๊ธฐ์ :
React-native 0.60์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ฌ๊ธฐ์ ํ์๋ ๋๋ก onesignal ์ค์น ๋จ๊ณ๋ฅผ ๋ฐ๋์ต๋๋ค. https://documentation.onesignal.com/docs/react-native-sdk-setup
xcode ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด OnesignalNotificationExtension๊ณผ ๊ด๋ จ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ : ld: library not found for -lPods-OneSignalNotificationServiceExtension
OneSignalNotificationServiceExtension ๋์์๋ ๋ค์ ์ค์ ์ด ์์ต๋๋ค.
"${PODS_ROOT}/Headers/Public/react-native-onesignal"
"${PODS_ROOT}/OneSignal/iOS_SDK/OneSignalSDK/Framework"
ํ๊ฒฝ
๋ฌธ์ ์ฌํ ๋จ๊ณ :
ld: library not found for -lPods-OneSignalNotificationServiceExtension
์๋
,
์ด์ ์ ๋ฒ์ ์ ์ถ์ํ์ต๋๋ค. ์
๋ฐ์ดํธํ๊ณ ๋ค์ ์๋ํด ์ฃผ์๊ฒ ์ต๋๊น? ๋ํ /Users/์ ์๋ DerivedData ํด๋๋ฅผ ์ง์ฐ์ญ์์ค.
๋ง์ง๋ง์ผ๋ก ์๋ ํ ๊ฒ์ ios
๋๋ ํฐ๋ฆฌ์์ ํฌ๋๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒ์
๋๋ค.
@jamesone ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ์ต๋๊น? @rgomezp ์ ๋ต๋ณ์ ๋์์ด ๋์ง ์์ต๋๋ค.
@rgomezp ์ต์ ๋ฆด๋ฆฌ์ค 3.4.1์ ์ฌ์ฉํ์ฌ ์์ ์ ์ ์ค ์ด๋ ๊ฒ๋
ํ๋ก์ฐ +1!
์๋
,
ํ๋ก์ ํธ์ ios ๋๋ ํ ๋ฆฌ์์ pod deintegrate && pod install
๋ฅผ ์คํํด ๋ณด์ญ์์ค.
์์ ์ ์์ด ์๋ํ์ง ์์ต๋๋ค. ์ด๋ฏธ ์ต์ ๋ฆด๋ฆฌ์ค v3.4.1๋ก ์ ๋ฐ์ดํธํ๊ณ , ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ๊ณ , ํฌ๋๋ฅผ ์ ๋ฆฌํ๊ณ , ๋ค์ ์ค์นํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from:
objc-class-ref in NotificationService.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Podfile.lock
- react-native-onesignal (3.4.1):
- OneSignal (= 2.11.0)
- React (< 1.0.0, >= 0.13.0)
์ต์ ์ ๋ณด:
๋ด ์๋ชป์ด์ผ. NotificationService.m
๋ด์ฉ์ DOC์ ์ต์ ์ฝ๋๋ก ๊ต์ฒดํด์ผ ํฉ๋๋ค. ๋๋ ์ฌ์ ํ RCTOneSignalExtensionService.h
์์์ต๋๋ค. ์
๋ฐ์ดํธํ๋ฉด ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง๋๋ค.
๋ฃ๊ธฐ ์ข์! ์ด ๋ฌธ์ ๋ก ์ฌ์ ํ ์ด๋ ค์์ ๊ฒช๊ณ ๊ณ์๋ค๋ฉด ๋๊ธ์ ๋ฌ์์ฃผ์ธ์. ๋ค์ ์ด ์ ์์ต๋๋ค.
ํฌ๋๊ฐ ์๋ RN:0.60.10์ ์ฌ์ ํ ๋ฌธ์ ์
๋๋ค.
๊ทธ๊ฒ์ผ๋ก ํฌ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ?
์๋
ํ์ธ์,
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค ld: library not found for -lPods-OneSignalNotificationServiceExtension
๋๋ react-native 0.61.4์ onesignal 3.6.1์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ํฌ๋ ๋ถํด ๋ฐ ์ ๋ฆฌ ๋ฐ DerivedData ์ฌ์ฉ
์ฐพ์์ง๋ง ๊ตฌ์ฑ ๋ชฉ๋ก์ "๋ฆด๋ฆฌ์ค" ๊ตฌ์ฑ์ด ์์ผ๋ฉด "์์นด์ด๋ธ"๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์๊ณ ์คํจํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์์นด์ด๋ธ ์คํจ:
์์นด์ด๋ธ ์ฑ๊ณต ๐
์ฐธ๊ณ ๋ก Dev, Preprod ๋ฐ Prod๋ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. onesignal์ ์ฌ์ฉํ์ฌ ์ด์ ํ๋ก์ ํธ์์ "๋ฆด๋ฆฌ์ค"์์ด ์๋ํ์ต๋๋ค.
@rgomezp ์ ๋ฐ์ดํธ:
- ์๋ก์ด ๋ฐ์ ๋ค์ดํฐ๋ธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
- ์์๊ทธ๋ ์ถ๊ฐ
- ๋น๋ ๋ฐ ๋ณด๊ด> ๊ด์ฐฎ์ต๋๋ค
- "๋ฆด๋ฆฌ์ค" ๊ตฌ์ฑ์ ์ด๋ฆ์ Dev์ ๊ฐ์ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- ๋น๋ ๋ฐ ์์นด์ด๋ธ > ld: -lPods-OneSignalNotificationServiceExtension์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์์ ์ ์์ด ์๋ํ์ง ์์ต๋๋ค. ์ด๋ฏธ ์ต์ ๋ฆด๋ฆฌ์ค v3.4.1๋ก ์ ๋ฐ์ดํธํ๊ณ , ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ๊ณ , ํฌ๋๋ฅผ ์ ๋ฆฌํ๊ณ , ๋ค์ ์ค์นํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from: objc-class-ref in NotificationService.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Podfile.lock
- react-native-onesignal (3.4.1): - OneSignal (= 2.11.0) - React (< 1.0.0, >= 0.13.0)
์ต์ ์ ๋ณด:
๋ด ์๋ชป์ด์ผ.NotificationService.m
๋ด์ฉ์ DOC์ ์ต์ ์ฝ๋๋ก ๊ต์ฒดํด์ผ ํฉ๋๋ค. ๋๋ ์ฌ์ ํRCTOneSignalExtensionService.h
์์์ต๋๋ค. ์ ๋ฐ์ดํธํ๋ฉด ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์ต๋๋ค.
์ง๊ธ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. -lPods-OneSignalNotificationServiceExtension
์ ๊ตฌ์ฑํ๋ฅผ ์ถ๊ฐํ ๋ ์คํจํ์ต๋๋ค. ์ด์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๊ฐ์
react-native๋ฅผ ์
๊ทธ๋ ์ด๋ ํ ํ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด๊ฒ์ ๋ด ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค. https://github.com/OneSignal/react-native-onesignal/issues/651#issuecomment -429062289
RN ๋ฒ์ ์ 0.63.2๋ก ์
๊ทธ๋ ์ด๋ํ๊ณ ์ฑ์ ๋ณด๊ดํ๋ ค๊ณ ํ ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์์ ๋์์ต๋๋ค.
์ด๋ก ์ธํด.
Podfile์ ์ง์ ํ ๋ฒ์ ๊ณผ ๋ด๊ฐ ์ง์ ํ ๋์ ๋ฒ์ ์ฌ์ด์ ๋ฒ์ ๋ถ์ผ์น์์ต๋๋ค.
OneSignal ํ์ฅ์ ์ค์ ํ์ต๋๋ค. ์ด ๋ ๊ฐ์ ์๋ก ์ผ์นํ๋๋ก ์์ ํ์๋ง์
๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
ํํ์ผ
OneSignalNotificationExtension(๋๋ ์๋ฆผ ํ์ฅ์ ์ง์ ํ ์ด๋ฆ)
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ง๋ง ์์ ํ ์ค ์ด๋ ๊ฒ๋ ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ์ต๋๋ค.
๋๋ ๋งค์ฐ ์ ์ฌํ ๋ ๊ฐ์ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค. ํ๋๋ ์๋ํ๊ณ ๋ค๋ฅธ ํ๋๋ ์๋ํ์ง ์์ต๋๋ค.
xcode ๋น๋ ๋ฐ ์์นด์ด๋ธ ๋จ๊ณ๋ ๊ด์ฐฎ์ง๋ง ๋ด CI ๋๋ ๋ด ์ปดํจํฐ์์ ์๋ ๋ช ๋ น์ ํ ํ๋ก์ ํธ์์๋ ์ฑ๊ณตํ์ง๋ง ๋ค๋ฅธ ํ๋ก์ ํธ์์๋ ์คํจํฉ๋๋ค.
xcodebuild "-workspace" "/Users/vagrant/git/packages/mobile-pro/ios/WecasaPro.xcworkspace" "-scheme" "WecasaPro" "-configuration" "Staging" "COMPILER_INDEX_STORE_ENABLE=NO" "archive" "-archivePath" "/var/folders/6q/wgy6jtp12w5gzgm9lzcglpqw0000gn/T/__archive__581470914/WecasaPro.xcarchive" "-destination" "generic/platform=iOS" | xcpretty
๋ด๊ฐ ๋ช ๋ น์ ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด. ๋๋ ์๋ํ๋ ํ๋ก์ ํธ๋ฅผ ์ํด
โธ Building Pods/Pods-OneSignalNotificationServiceExtension [Staging]
โธ Check Dependencies
โธ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
โธ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
โธ Building library libPods-OneSignalNotificationServiceExtension.a
โธ Building library libPods-OneSignalNotificationServiceExtension.a
โธ Building WecasaPro/OneSignalNotificationServiceExtension [Staging]
โธ Check Dependencies
โธ Processing Info.plist
โธ Running script '[CP] Check Pods Manifest.lock'
โธ Compiling NotificationService.m
โธ Linking OneSignalNotificationServiceExtension
โธ Generating 'OneSignalNotificationServiceExtension.appex.dSYM'
โธ Touching OneSignalNotificationServiceExtension.appex
โธ Signing /Users/vagrant/Library/Developer/Xcode/DerivedData/WecasaPro-fuytaarwfdjqjucxpzvnzgjrhcvd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/OneSignalNotificationServiceExtension.appex
โธ Touching OneSignalNotificationServiceExtension.appex.dSYM
์๋ํ์ง ์๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ
โธ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
โธ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
โธ Running script 'Copy generated compatibility header'
โธ Building library libPods-OneSignalNotificationServiceExtension.a
๋ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์ ์ฌ๋ฌ ๋ฒ ํ์ธํ๋๋ฐ ๋น์ทํ ๊ฒ ๊ฐ์ต๋๋ค.
์๋ฌด๋ ์ด๊ฒ์ ์ผ์ผํฌ ์ ์๋ ๋จ์๊ฐ ์์ต๋๊น?
๋ ํ๋ก์ ํธ์ ๋ํ ๋ด ๋ก๊ทธ๋ฅผ ๋น๊ตํ ํ ์ฑ๊ณตํ ํ๋ก์ ํธ๋ ๋ ๊ฑฐ์ ๋น๋ ์์คํ ์ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ํ๋๋ ์ ๋น๋ ์์คํ ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
ํ๋ก์ ํธ๋ฅผ ๋ ๊ฑฐ์ ๋น๋ ์์คํ ์ผ๋ก ์ ํํ์ง๋ง ๋ฌธ์ ๋ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค.
๋๋ ์ฑ๊ณตํ ํ๋ก์ ํธ์
CompileC /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/arm64/Pods-OneSignalNotificationServiceExtension-dummy.o Target\ Support\ Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension-dummy.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
๊ทธ๋ฆฌ๊ณ
Libtool /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/armv7/libPods-OneSignalNotificationServiceExtension.a normal armv7
ํ์ง๋ง ์ปดํ์ผ ํ ๋ค๋ฅธ ํ๋ก์ ํธ์๋ Ld ๋ช ๋ น์ด ์์ต๋๋ค.
Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/OneSignalNotificationServiceExtension normal armv7
์ด ๋ช ๋ น์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฒ ๊ณ ์ํ์ค๊ฐ โโ๋์ผํ์ง ์์ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ด ๋ฌธ์ ์ ๋ํ ๋ง์ง๋ง ์๊ฒฌ. ๋ด podfile์์ OneSignalNotificationServiceExtension ๋์, ๊ด๋ จ objective-c ํ์ผ ๋ฐ OneSignal์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. xcodebuild
๋ช
๋ น์ด ์ฑ๊ณตํฉ๋๋ค.
๋ฌธ์ https://documentation.onesignal.com/docs/react-native-sdk-setup์ ์ค๋ช ๋ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์ํํ์ฌ ํ๋์ ์ ํธ๋ฅผ ๋ค์ ์ถ๊ฐํ์ต๋๋ค.
๊ทธ ํ์๋ xcodebuild
๋ช
๋ น์ด ์ฌ์ ํ ์คํจํฉ๋๋ค.
Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary/OneSignalNotificationServiceExtension` normal armv7
/Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary
ํด๋๊ฐ ๋น์ด ์๊ณ OneSignalNotificationServiceExtension
ํ์ผ์ด ์์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ์๋ค
๊ทธ๋์...
์ด๊ฒ์ ์ถ์ ํ๊ธฐ๊ฐ ์ ๋ง ์ด๋ ค์ ์ต๋๋ค. ์ ๋ฌธ์ ์ ๋ํ ์์ ์ฌํญ์ ์ค์ ๋ก ์ฐพ์ผ๋ ค๋ฉด ์ RN 064.1 ํ๋ก์ ํธ๋ฅผ ๋ค์ ๋ง๋ค์ด์ผ ํ์ต๋๋ค. ๋ด ํ๋ก์ ํธ์์ ๊ตฌ์ฑํ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ M1์์ ์ ๋๋ก ๋น๋๋๋๋ก ์์ ์ฌํญ์ ์ ์ฉํ์ต๋๋ค.
ํ๋ก์ ํธ๊ฐ ๊ธฐ์กด์ fat ํ๋ ์ ์ํฌ ๋์ ์๋ก์ด OneSignalXCFramework
๋ฅผ ์ฌ์ฉํ๋๋ก ์
๋ฐ์ดํธ๋์์ผ๋ฏ๋ก Podfile์์๋ ์ฌ์ฉํ๋๋ก NSE๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ฆด๋ฆฌ์ค ๋น๋๋ฅผ ๋น๋ํ๊ฑฐ๋ ์๋ฎฌ๋ ์ดํฐ ๋๋ ์ฅ์น์ ๋น๋ํ๋ ๋์ ์ด ๋ฌธ์ ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋์ ์ฐพ์ ์ ์๋ ์๋ง์ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.
๋ด ์ฝ๋๋ฅผ ๋ง์น๊ณ ์ ์ฒด ๋ฌธ์ ๊ฐ ์๋ํ์ง ์๋ ๋ถ๋ถ์ Podfile์ ๋ค์ ์น์ ์ ๋๋ค.
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[iphonesimulator=*]"] = "arm64"
end
๊ฒฐ๊ตญ ๋ฆด๋ฆฌ์ค ๋น๋๊ฐ ์๋ ๋๋ฒ๊ทธ ๋น๋์๋ง ์ ์ฉํด์ผ ํ์ต๋๋ค. ์ ๋ iOS ๊ฐ๋ฐ์๊ฐ ์๋๋ฏ๋ก ์ํคํ ์ฒ์์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ ์ธํ๋ฉด NSE์ ๋ํด Pod๊ฐ ๊ฐ์ง๋์ง ์๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ณต์ก์ฑ์ ์์ง ๋ชปํ์ง๋ง ๊ทธ๊ฒ์ด ์ ๋ฌธ์ ์์ต๋๋ค.
์ ์ฒด ๋ธ๋ก์ ์ ๊ฑฐํ๋ ๊ฒ์ด ๋๋ฅผ ์ํด ๊ณ ์ณค์ต๋๋ค. ์ ์ด๋ ๋ด ํ๋ก์ ํธ์๋ ๋ ์ด์ ํ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
RN ๋ฒ์ ์ 0.63.2๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ฑ์ ๋ณด๊ดํ๋ ค๊ณ ํ ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์์ ๋์์ต๋๋ค.
์ด๋ก ์ธํด.
Podfile์ ์ง์ ํ ๋ฒ์ ๊ณผ ๋ด๊ฐ ์ง์ ํ ๋์ ๋ฒ์ ์ฌ์ด์ ๋ฒ์ ๋ถ์ผ์น์์ต๋๋ค.
OneSignal ํ์ฅ์ ์ค์ ํ์ต๋๋ค. ์ด ๋ ๊ฐ์ ์๋ก ์ผ์นํ๋๋ก ์์ ํ์๋ง์
๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
ํํ์ผ
OneSignalNotificationExtension(๋๋ ์๋ฆผ ํ์ฅ์ ์ง์ ํ ์ด๋ฆ)