์ค๋ช
:
v10์์ ์ด ํ๋ก์ ํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋น๋๋๊ณ ์คํ๋๊ธฐ ์ ์ Xcode 10์์ Xcode 12๋ก ๋ฐฉ๊ธ ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
OneSignalNotificationExtension ๋์ ๋น๋ ์คํจ:
Undefined symbol: _swift_getObjCClassMetadata
Undefined symbol: type metadata accessor for Foundation.UUID
Undefined symbol: Swift._bridgeAnythingToObjectiveC<A>(A) -> Swift.AnyObject
Undefined symbol: protocol descriptor for Swift.ExpressibleByFloatLiteral
Undefined symbol: associated conformance descriptor for Swift.ExpressibleByFloatLiteral.Swift.ExpressibleByFloatLiteral.FloatLiteralType: Swift._ExpressibleByBuiltinFloatLiteral
Undefined symbol: associated type descriptor for Swift.ExpressibleByFloatLiteral.FloatLiteralType
Undefined symbol: protocol descriptor for Swift.ExpressibleByIntegerLiteral
Undefined symbol: associated type descriptor for Swift.ExpressibleByIntegerLiteral.IntegerLiteralType
Undefined symbol: method descriptor for Swift.ExpressibleByIntegerLiteral.init(integerLiteral: A.IntegerLiteralType) -> A
Undefined symbol: static Foundation.UUID._unconditionallyBridgeFromObjectiveC(__C.NSUUID?) -> Foundation.UUID
Undefined symbol: value witness table for Builtin.Int32
Undefined symbol: protocol witness table for Swift.Int : Swift._ExpressibleByBuiltinIntegerLiteral in Swift
๊ทธ๋ฆฌ๊ณ 100๊ฐ ์ด์์ ์ค๋ฅ
์ ๋ Xcode์ Mac์ ์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ช ํํ์ง ์๊ฑฐ๋ ์คํด์ ์์ง๊ฐ ์๋ค๋ฉด ์ฃ์กํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค
ํ๊ฒฝ
๋ฐ์ ๋ค์ดํฐ๋ธ 0.63.2
onesignal ๋ฐ์ ๋ค์ดํฐ๋ธ 3.9.1
์์ค์ฝ๋ 12
npm์ ํตํด ์ค์น๋๊ณ ํฌ๋์ ์ฐ๊ฒฐ๋จ
๋ฌธ์ ์ฌํ ๋จ๊ณ:
์ง๋ค
์๋
,
NotificationService.swift
ํ์ผ์ ์ด๋ป๊ฒ ์๊ฒผ๋์? ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
import UserNotifications
import OneSignal
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var receivedRequest: UNNotificationRequest!
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: <strong i="8">@escaping</strong> (UNNotificationContent) -> Void) {
self.receivedRequest = request;
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = bestAttemptContent {
OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: self.bestAttemptContent)
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
OneSignal.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent)
contentHandler(bestAttemptContent)
}
}
}
์ค์ ์ง์นจ์ 4.3.6๋จ๊ณ๋ฅผ ์ดํด๋ณด๊ณ ๋ชจ๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋์ง ํ์ธํ๊ธฐ ์ํด ๊ณ์ ์งํํฉ๋๋ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ฑด๋ฐฐ
ํผ๋๋ฐฑ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
Objective-C ํ์ผ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ค์ํํธ๋ฅผ ์ฌ์ฉํด์ผํฉ๋๊น?
๋๋ ๋น์ ์ด Swift๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. Obj-C๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Objective C๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์ฆ๊ธฐ๋ค!
Xcode 12์๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Xcode 11์์ ํ๋ก์ ํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Xcode12๋ฅผ ์ด๊ณ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ์๋ง์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
โธ Linking OneSignalNotificationServiceExtension
โ clang: error: no such file or directory: '/Users/carloscuesta/project-folder/ios/build/project/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a'
์ด๊ฒ์ OneSignal ์ธก์ ์ค๋ฅ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์บ์์ ๋ญ๊ฐ ์ด์ํ๊ฒ ์๋๊ฑฐ๊ฐ์๋ฐ
๋ด๊ฐ ์๋ํ ๊ฒ๋ค:
rm -rf ~/Library/Developer/Xcode/DerivedData/
๋ค๋ฅธ ๋ฌด์์ ์๋ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด Production์์ ์ ์๋ํ๊ณ ๋น๋๊ฐ Xcode 11์์ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
OneSignal ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋งํฌํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น? ๐๐ผ
์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ DerivedData
๋ฅผ ์ฒญ์ํ์ฌ ํด๊ฒฐํ์ง๋ง ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค ๐
์ด์ํ ์ ์ ๋ฐ๊ฒฌํ๋๋ฐ,
Xcode 12๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ ค๊ณ ํ๋ฉด ํญ์ ์คํจํฉ๋๋ค. ๊ทธ๋ฌ๋ Xcode 11๋ก ๋จผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ ๋ค์ Xcode 12๋ฅผ ์ด๊ณ ์ฑ์ ๋น๋ํ๋ฉด ์๋ํฉ๋๋ค ๐คฏ
๊ทธ๋ฌ๋ ๋น๋๋ฅผ ์ ๋ฆฌํ๊ณ Xcode 12๋ก ๋ค์ ๋น๋ํ๋ ค๊ณ ํ์๋ง์ ๋์ผํ ์ค๋ฅ๋ก ๋ค์ ์คํจํ๊ธฐ ์์ํฉ๋๋ค ๐
Xcode 12 ๋ฐ onesignal-react-native 3.9.1์์ ๋์ผํ ์ค๋ฅ:-(
์
๋ฐ์ดํธ ์ ์ ํ๋ก์ ํธ๊ฐ ์๋ ์ค์ด์์ต๋๋ค.
๊ฐ์ ์ค๋ฅ์
๋๋ค.
์์๊ทธ๋ SDK -> 2.15.2
react-native-onesignal -> 3.9.1
xCode 11์์ ์ ์๋ํ์ต๋๋ค.
์๋
,
์ด์ ํ๋ค์ @carloscuesta . Xcode 11 ๋ 12์์ ํ๋ก์ ํธ ๊ฐ์ ์ฐจ์ด์ ์ ๋ณด์์ต๋๊น? ์๋ง๋ 12๋ ์ด๋ค ์ด์ ๋ก ๋ช ๊ฐ์ง ์ค์ํ ๋น๋ ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ์์ต๋๋ค.
๋ด Xcode๋ฅผ 11์์ 12๋ก ์ ๋ฐ์ดํธํ์ ๋ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์๋ ํ์ธ์ @rgomezp
Xcode 11์์ Xcode 12๋ก์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์์ ํ์ธํ ์ ์์ต๋๋ค. ์ ์ฅ์์ git status
๋ ์์ ๋์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฌ์ ํ ์คํจํ ๋น๋๋ฅผ ์ฌํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์์ผ๋ก ์์ ํ Xcode 11 ๋ฐ Xcode 12์์ ๋น๋ํ ๋๋ง๋ค ๐
์๋
,
๋๋ ์ด๊ฒ์ด ์ด์ ์ ์ฌ๊ธฐ์์ ๋ณด๊ณ ๋ ์งํ์ค์ธ Cocoapods ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ x86_64
๋ฅผ VALID_ARCH
ํ ์ ์์ต๋๋ค(์: x86_64
arm64
arm64e
์ด ์คํ ์ค๋ฒํ๋ก ์๋ ํ์ํ ์๋ฃจ์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
์ด๋ด! ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค @rgomezp
๋ด ์คํ์ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ค๊ฒ!
Project
> Architectures
> Excluded Architectures
StackOverflow ๊ฒ์๋ฌผ์์ ์ ์ํ ๋๋ก arm64
๋ฅผ ์๊ฐํ์ต๋๋ค.
๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค. x86_64
๋ํด ๋ถํํ๋ ๋์ผํ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
๊ทธ๋์ x86_64
๋ฅผ Excluded Architectures
.
๋ค์ ๋ณ๊ฒฝ ํ ๋ค์ ์ค๋ฅ๊ฐ ์์ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ OneSignalNotificationServiceExtension.appex
์ ๊ดํ ๋ ๋ค๋ฅธ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.
๊ทธ๋ฌ๋ ๋๋ CodeSign ๐ค๊ณผ ๊ด๋ จ๋ ์ด๋ค ๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค โ Xcode11 ๋น๋๊ฐ ์ ์๋ํฉ๋๋ค
DerivedData
๋น๋๋ฅผ ์ ๋ฆฌํ ํ ์ปดํจํฐ๋ฅผ ๋ค์ ์์ํฉ๋๋ค. ๋ค๋ฅธ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค: Link app (i386)
.
์ค๋ฅ๋ฅผ ์ด๋ฉด DerivedData
ํด๋์์ ๋ง์ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ค ์ค ๋๊ตฌ๋ OneSignal๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ Xcode 11์์ ์ ๋๋ก ์๋ํ๋ค๋ฉด ์ด๊ฒ์ด ์ ์คํจํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ง๊ธ ๋๋ฌด ํผ๋์ค๋ฝ์ต๋๋ค ๐
VALID_ARCHS
์ด๊ฒ์ ๋์๊ฒ๋ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ๋๋ ๋ํ ์ด๊ฒ์ด Xcode 12์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋์ Excluded Architectures
์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ์ฝ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ์ํด ์ด๋ค User-Defined Setting
๊ฐ์ง๊ณ ์์ง ์์๋ค. CocoaPods๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ชจ๋์ ์๋์ผ๋ก ์ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์.
arm64
์ ์ธ ํ Xcode์์ "๋์ผํ ์ธ์ฆ์" ์ค๋ฅ์ ๋ํด ์ด์ผ๊ธฐํ๋ ํฅ๋ฏธ๋ก์ด ๋งํฌ๋ฅผ ์ฐพ์์ต๋๋ค.
๊ทธ๊ฒ์ ํ์ฅ์ด ๊ทธ๋ฌํ ์ํคํ ์ฒ๋ฅผ ๋ฐฐ์ ํด์๋ ์๋๋ค๊ณ ๋งํฉ๋๋ค. ๋ถํํ๋ ๊ฐ์ ์ค๋ฅ :(
์ค๋์ ์๊ฐ์ด ์๋๋ค์ ๐
์ค์ ์ฅ์น์์ ์์ฉ ํ๋ก๊ทธ๋จ ์ ์ค๋ฅ๊ฐ ๋ฐ์ ํ์ง ์์์ ํ์ธํ ์ ์์ต๋๋ค.
์๋ฎฌ๋ ์ดํฐ ์์ฒด์ ์ํคํ ์ฒ์ 100% ๊ด๋ จ์ด ์๋ ๊ฒ์ ๋๋ค.
ํ๋ผ ์นด๋ฅผ๋ก์ค,
์์ธํ ์กฐ์ฌ ๊ฐ์ฌํฉ๋๋ค. ๊ฐ์์ฑ์ ์ํด ์ด ์คํ ์ค๋ฒํ๋ก ์ค๋ ๋ ๋ ์ฐพ์์ต๋๋ค.
@carloscuesta ๋ฌธ์ ๋ฅผ ์์ฝ
Embedded binary is not signed with the same certificate as the parent app...
์ค๋ฅ๋ ์ ํจํ ARCHS๋ฅผ ํตํด ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ง์นจ์ ๋ฐ๋ผ ์ ์ธ๋ ์ํคํ
์ฒ์ arm64 ๋ฐ x86_64๋ฅผ ์ถ๊ฐํ์ฌ ํด๊ฒฐ๋ฉ๋๋ค.Carlos, ์ด ์์ ์์ ์ด๊ฒ์ด OneSignal์ด ์๋ ๋ฌธ์ ์ฒ๋ผ ๋ค๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฌด์์ ํ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ด Cocoapods๋ฅผ _์ฌ์ฉํ๋_ ๊ฒฝ์ฐ ์์ ๋งํฌ๋ Cocoapods ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ํ๋์ง ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น?
์๋ ํ์ธ์ @rgomezp
๋น์ ์ด ์ ๊ณตํ ๋ชจ๋ ๋์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
Carlos, ์ด ์์ ์์ ์ด๊ฒ์ด OneSignal์ด ์๋ ๋ฌธ์ ์ฒ๋ผ ๋ค๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฌด์์ ํ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ ์ฒด OneSignal ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ์ ํด์ ํ๊ณ OneSignalNotificationServiceExtension
ํ๋ก์ ํธ๊ฐ Xcode12์์ ๋น๋๋๋ ๊ฒฝ์ฐ๋ฅผ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ ์ด ์ง์ ์ ๋ํด 100% ํ์ ํ ์ ์์ต๋๋ค. ์ค๋ฅ๊ฐ ์ด๋์์ ์ค๋์ง ํ์คํ์ง ์์ผ๋ฉฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ํน์ ๊ฒฝ์ฐ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ฑด์ถ๊ณผ ๊ด๋ จ๋ ์ด๋ค ๊ฒ๋ ๋ง์ง ํ์๊ฐ ์์ต๋๋ค
ํ์ง๋ง ์, ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฐพ์ ์ ์๋์ง ๋ด ์๋ค ๐๐ผ
arm64, i386, x86_64 ์ํคํ ์ฒ๊ฐ ์๋ ์๋ฎฌ๋ ์ดํฐ์ฉ Xcode 12 ๋น๋์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋์ ๋ด ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋ด ํ๋ก์ ํธ์์ ์ ์๋ํฉ๋๋ค.
@stanleyctcl ์๋ฃจ์ ์ด ์๋ํฉ๋๋ค! :ํ๋ค:
RCTOneSignal
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์ RCTOneSignal
๋์์ User-Defined
์ค์ ์ผ๋ก ์ ์๋ VALID_ARCHS
๊ฐ ์๋ ๊ฒ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธก์์ ์ ๊ฑฐํด์ผ ํ๋ ๊ฒ์
๋๋ค! ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด PR์ ํ ๊ฒ์
๋๋ค!
๊ทธ๋์ ๋ด ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ํ์ง ์์์ต๋๋ค. OneSignal ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ด ์ฌ์ฉ์ ์ค์ ์ด ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํค์ด, ๊ณ ๋ง์ @stanleyctcl
๊ทํ์ ์๋ฃจ์
์ด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
์ด์ ์๋ iOS ์๋ฎฌ๋ ์ดํฐ์ ๋ํ ๋ฆด๋ฆฌ์ค ๋ชจ๋ ๋น๋๊ฐ ์คํจํ์ต๋๋ค. building for iOS Simulator, but linking in object file built for iOS, file onesignal
์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ฅ๊ฐ ๋ํ๋์ง ์๊ณ ์ค์ ์ฅ์น์์ ๋ฆด๋ฆฌ์ค ๋ชจ๋๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. ์์ ์๋ฃจ์
์ผ๋ก ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ํ๊น๊ฒ๋ ์๋ฃจ์ ์ ๊ตฌํํ ํ ๋ด ์ฑ์ ๋ณด๊ดํ ์ ์์ต๋๋ค. ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
No architectures to compile for (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
arm64
))
์ด๋ค ๋จ์?
@abdullahizzuddiin iOS ์๋ฎฌ๋ ์ดํฐ์ฉ ์ํคํ ์ฒ๋ง ์ ์ธํ๋์ง ํ์ธํ์ญ์์ค.
์, ๋์. ์์ ์ธ๋ถ ์ฌํญ์ ์์ด ๋ฒ๋ ธ์ต๋๋ค. ์ ๋ฅผ ์ง์ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค @carloscuesta . RCTOneSignal
ํ์ ํ๋ก์ ํธ ๋น๋ ์ค์ ์์ VALID ARCHS
๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ Excluded Architecture
๋ง ์ค์ ํ๋ฉด ๋ฉ๋๋ค. ๐ค
= = =
๋ด ์๊ฐ์ ์ฐจ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์์นด์ด๋ธํ์ต๋๋ค. ๊ทธ๋ฌ๋ "์๋์ผ๋ก ์๋ช
๊ด๋ฆฌ"๋ฅผ ์ ํํ ํ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด์ ๋ฒ์ ์ Xcode์์๋ ๋ฌธ์ ์์ด ์ฑ์ Appstore์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด์ ์๋ 11.7์ ์ฌ์ฉํ์ต๋๋ค. ์ด์ 12.0์ ์ฌ์ฉํ์ผ๋ฉฐ ์ ์ฅ์๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ฆ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
//package.json
react-native-onesignal: 3.8.1
//Podfile
pod 'OneSignal', '>= 2.14.2', '< 3.0'
...
target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 2.14.2', '< 3.0'
end
์ด๋ค ๋จ์? ์๋๋ฉด ๋ณ๋์ ์ด์๋ฅผ ์์ฑํด์ผ ํ๋์?
์ถ์ :
๋ํ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ Apple ๊ฐ๋ฐ์ ํฌ๋ผ์ ๋ด ๋ฌธ์ ๋ฅผ ์ ์ถํ์ต๋๋ค.
๋ฐ์ ๋ค์ดํฐ๋ธ 0.60.0 ๋ฒ์ ์์ react-native-onesignal 3.9.1์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค... ์ฌ์ฉ์ ์ ์ ์ค์ (VALID_ARCHS) ๋ด์ x86_64๋ฅผ ํฌํจํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์๋
ํ ๊ณ์ธ์.
์ด ๋ฌธ์ ๋ OneSignal ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์์ ๋ซ์๋ ์์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@abdullahizzuddiin
(๋ค๋ฅธ ๋ฌธ์ , ๋ณ๋์ ํฐ์ผ์ ์ฌ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค)
๊ฐ์์ฑ์ ์ํด Apple Dev Forum ์ค๋ ๋ ์ ๋ํ ์๋ต ์ค ํ๋๋ฅผ ๊ฒ์ํ ๊ฒ์ ๋๋ค.
๋ฌธ์ :
๋ด MacBook Pro์์ ๋น๋์ ์ฑ๊ณตํ๋๋ฐ๋ ์ค์ ์ฅ์น์์ ๋น๋๋ฅผ ์คํํ์ง ๋ชปํ์ต๋๋ค.
์ด ๋ฉ์์ง์ ํจ๊ป ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
ํ๋ก๋น์ ๋ ํ๋กํ์ผ "iOS Team Provisioning Profile: com.xxxxxxxxxxxx.Name of -App"์๋ ํ์ฌ ์ ํ๋ ์ฅ์น "iPhone"(์๋ณ์ 0000xxxx-000xxxxxxxxxxxxxxxxxx)์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
Xcode ๋์๋ง ์จ๋ผ์ธ ์ค๋ช ์
๊ณ์ ํ๊ฒฝ์ค์
๊ณ์ ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ๊ณ์ ์์ฐ(์๋ช
์ธ์ฆ์ ๋ฐ ํ๋ก๋น์ ๋ ํ๋กํ)์ ๊ด๋ฆฌํ๊ณ , ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ณ , ์๋ฒ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๊ณ์ ํ๊ฒฝ ์ค์ ์ ์ด๋ ค๋ฉด Xcode > ํ๊ฒฝ ์ค์ ์ ์ ํํ๊ณ ๊ณ์ ์ ํด๋ฆญํ์ญ์์ค.
I ๊ทธ๋ฐ ๋ค์ ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ๊ณ ๋ํ๊ธฐ ๊ธฐํธ๋ฅผ ํด๋ฆญํ์ฌ ์ ์ธ์ฆ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
๋ฌธ์ ํด๊ฒฐ๋จ:
๊ทธ๋ฐ ๋ค์ ๋น๋๋ฅผ ์คํํ๊ณ ์๋ช
์ค๋ฅ๊ฐ ์ง์์ง๊ณ ์ฑ์ด iPhone 11 Pro Max์ ์ค์น๋์์ต๋๋ค.
์ด ์๋ฃจ์
์ด ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋ ํ์ธ์ @rgomezp
์ด ๋ฌธ์ ๋ ๋ค์ํ ๋ฌธ์ ๊ฐ ํผํฉ๋ ๋ฌธ์ ์์ต๋๋ค. ๋น์ ์ด ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์๋ฎฌ๋ ์ดํฐ ๋ฌธ์ ์์ฒด์ ๊ด๋ จ์ด ์์ต๋๋ค. VALID_ARCHS
์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ RCTOneSignal
์ ๊ด๋ จ์ด ์์ต๋๋ค.
์๋ฎฌ๋ ์ดํฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๋๊น์ง ์ด ๋ฌธ์ ๋ฅผ ์์ ํ ๋ซ์์ผ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์๋ ํ์ธ์ @rgomezp
์์์ ๋ฐ์ทํ Apple Dev Forum์ ์ ์์ ๋ฐ๋์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ์ต๋๋ค.
์ผ์์ ์ผ๋ก Xcode ๋ฒ์ ์ 11.7๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ฌ ์ฑ๊ณต์ ์ผ๋ก ๋น๋, ์คํ ๋ฐ ๋ณด๊ดํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฌ์ ํ Xcode 12.0์์ ๊ทธ ํ๋์ ํ ์ ์์ต๋๋ค.
#1053์ ์ํด ์๋์ผ๋ก ๋ซํ๋๋ก ์ด๋ฆฐ ์ํ๋ก ๋๊ฒ ์ต๋๋ค.
arm64, i386, x86_64 ์ํคํ ์ฒ๊ฐ ์๋ ์๋ฎฌ๋ ์ดํฐ์ฉ Xcode 12 ๋น๋์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋์ ๋ด ํด๊ฒฐ ๋ฐฉ๋ฒ์
1. Add **arm64** in **Excluded Architectures** of Project Build setting 2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
๋ด ํ๋ก์ ํธ์์ ์ ์๋ํฉ๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. ์ญ์ ํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ์๋ํ์ง ์์ผ๋ฏ๋ก ๊ณต๋ฐฑ ""์ผ๋ก ๋ง๋ค์ง ๋ง์ญ์์ค.
ํธ์งํ๋ค:
๋ด ํ๋ก์ ํธ๋ ์๋ ์ฐ๊ฒฐ One signal 3.2.12๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ ๋ค์ดํฐ๋ธ 0.59.9
์์ค์ฝ๋ 12
๋๋ฒ๊ทธ ๋ฐ ๋ฆด๋ฆฌ์ค ๋น๋๋ฅผ ์ํด ์๋ฎฌ๋ ์ดํฐ์์ ์๋ํ๋ stanleyctcl ์๋ฃจ์ ์ ์๋ํ์ต๋๋ค. ๊ทธ๋ฌ๋ Generic device/Archive์ฉ์ผ๋ก ๋น๋ํ ๋ abdullahizzuddiin๊ณผ ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.
(ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
ํ64
))
๋๋ฅผ ์ํด ์ผํ ์๋ฃจ์
์
์ด๊ฒ๋ง ์ ์ฉ
2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
์ด๋ ๊ฒ ํ๋ฉด ์์นด์ด๋ธ๊ฐ ์๋ํ์ง๋ง ์๋ฎฌ๋ ์ดํฐ ๋ฆด๋ฆฌ์ค๊ฐ ์คํจํฉ๋๋ค. ๊ทธ๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด. ๋ชจ๋ ํ๋ก์ ํธ ๋์ ๋ฐ ํฌ๋ ๋์ -> ๋น๋ ์ค์ -> ์ํคํ ์ฒ -> ํ์ฑ ์ํคํ ์ฒ๋ง ๋น๋ -> ๋ฆด๋ฆฌ์ค ๋ชจ๋์ ๋ํด '์'๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
์ค๋ช
๋ฐ ๋จ๊ณ: https://stackoverflow.com/a/64139830/9232424.
์ถ๊ฐ ์ฝ๊ธฐ: https://medium.com/macoclock/deep-drive-xcode-build-settings-827c3ce4811c.
์, ๋์. ์์ ์ธ๋ถ ์ฌํญ์ ์์ด ๋ฒ๋ ธ์ต๋๋ค. ์ ๋ฅผ ์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค @carloscuesta .
RCTOneSignal
ํ์ ํ๋ก์ ํธ ๋น๋ ์ค์ ์์VALID ARCHS
๋ฅผ ์ ๊ฑฐํ์ง ์๊ณExcluded Architecture
๋ง ์ค์ ํ๋ฉด ๋ฉ๋๋ค. ๐ค= = =
๋ด ์๊ฐ์ ์ฐจ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์์นด์ด๋ธํ์ต๋๋ค. ๊ทธ๋ฌ๋ "์๋์ผ๋ก ์๋ช ๊ด๋ฆฌ"๋ฅผ ์ ํํ ํ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.์ด์ ๋ฒ์ ์ Xcode์์๋ ๋ฌธ์ ์์ด ์ฑ์ Appstore์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด์ ์๋ 11.7์ ์ฌ์ฉํ์ต๋๋ค. ์ด์ 12.0์ ์ฌ์ฉํ์ผ๋ฉฐ ์ ์ฅ์๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ฆ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
//package.json react-native-onesignal: 3.8.1 //Podfile pod 'OneSignal', '>= 2.14.2', '< 3.0' ... target 'OneSignalNotificationServiceExtension' do pod 'OneSignal', '>= 2.14.2', '< 3.0' end
์ด๋ค ๋จ์? ์๋๋ฉด ๋ณ๋์ ์ด์๋ฅผ ์์ฑํด์ผ ํ๋์?
์ถ์ :
๋ํ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ Apple ๊ฐ๋ฐ์ ํฌ๋ผ์ ๋ด ๋ฌธ์ ๋ฅผ ์ ์ถํ์ต๋๋ค.
xcode 12์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ จ์ต๋๊น? @abdullahizzuddiin ๋๋ xcode๋ฅผ 11.7๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ญ์์ค.
๊ฐ์ฌ ํด์
์๋ฎฌ๋ ์ดํฐ์์ ์คํํ๋ ค๋ฉด " ์ ์ธ๋ ์ํคํ
์ฒ "์ " arm64 "๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ์ฅ์น์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ค๋ฉด " ์ ์ธ๋ ์ํคํ
์ฒ " ์์ ์์ด ๊ทธ๋๋ก ๋์ด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์คํํ ๋๋ง๋ค ์ด ๋ณ๊ฒฝ์ ์ํํด์ผ ํฉ๋๋ค.
์ด๊ฒ ๋์์ด ๋๊ธธ ๋ฐ๋๋ค.
์ฌ๊ธฐ์์๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ฐ์
๊ฐ์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Xcode 12์๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Xcode 11์์ ํ๋ก์ ํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Xcode12๋ฅผ ์ด๊ณ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ์๋ง์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๊ฒ์ OneSignal ์ธก์ ์ค๋ฅ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์บ์์ ๋ญ๊ฐ ์ด์ํ๊ฒ ์๋๊ฑฐ๊ฐ์๋ฐ
๋ด๊ฐ ์๋ํ ๊ฒ๋ค:
rm -rf ~/Library/Developer/Xcode/DerivedData/
๋ค๋ฅธ ๋ฌด์์ ์๋ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด Production์์ ์ ์๋ํ๊ณ ๋น๋๊ฐ Xcode 11์์ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
OneSignal ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋งํฌํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น? ๐๐ผ
์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋
DerivedData
๋ฅผ ์ฒญ์ํ์ฌ ํด๊ฒฐํ์ง๋ง ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค ๐