# Swift Package Manager 설정

## 요구 사항

* 아직 [Pushwoosh](https://pushwoosh.com/) 계정이 없다면 생성하세요.
* 새 버전의 Xcode가 설치된 Mac (Apple Silicon 전용).
* iOS 푸시 인증서. 자세한 내용은 [iOS 구성](/ko/developer/first-steps/connect-messaging-services/ios-configuration/ios-token-based-configuration/)을 참조하세요.

## 통합

1. Xcode에서 프로젝트를 열고 **project's settings** -> **Package Dependencies**로 이동한 후 **'+'** 버튼을 누릅니다.

<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-1.webp" alt=""/>

2. 다음 Package URL을 입력합니다:

[https://github.com/Pushwoosh/PushwooshVision-XCFramework](https://github.com/Pushwoosh/PushwooshVision-XCFramework)

3. **Dependency Rule**을 설정합니다.

<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-2.webp" alt=""/>

4. 다음 화면에서 Package를 선택하려면 Pushwoosh Package를 선택하고 메인 앱 Target에 **Add Package**를 합니다.

<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-3.webp" alt=""/>

5. 메인 앱 Target을 열고 **Frameworks, Libraries, and Embedded Content** 아래에 Pushwoosh iOS SDK가 추가되었는지 확인합니다.

<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-4.webp" alt=""/>

6. 잘했습니다! 이제 프로젝트에 Pushwoosh visionOS SDK를 통합했습니다.

## 필수 기능 추가

1. 루트 프로젝트(1)와 메인 앱 타겟(2)을 선택한 다음, **Signing and Capabilities** 탭으로 이동합니다.
2. **+ Capability** 버튼(3)을 누르고 **Push Notifications** 기능을 선택합니다.
3. 그런 다음, **Background Modes** 기능을 추가하고 **Remote notifications** 체크박스(4)를 선택합니다.

<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-5.webp" alt=""/>

4. 잘했습니다! Xcode 기능 구성이 완료되었습니다.

## Pushwoosh 초기화 코드 추가

1. 앱에 다음 코드를 추가합니다.

```swift
import SwiftUI
import Pushwoosh

class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDelegate, PWMessagingDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {

        Pushwoosh.sharedInstance().registerForPushNotifications()
        Pushwoosh.sharedInstance().delegate = self
        return true
    }

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        Pushwoosh.sharedInstance().handlePushRegistration(deviceToken)
    }

    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: any Error) {
        Pushwoosh.sharedInstance().handlePushRegistrationFailure(error)
        print("\(error.localizedDescription)")
    }

    func pushwoosh(_ pushwoosh: Pushwoosh, onMessageOpened message: PWMessage) {
        print("Message opened: \(message.payload!)")
    }

    func pushwoosh(_ pushwoosh: Pushwoosh, onMessageReceived message: PWMessage) {
        print("Message received: \(message.payload!)")
    }
}

@main
struct newdemoApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
```

2. `Info.plist`에 다음 문자열 유형 키를 추가합니다:

```xml
<key>Pushwoosh_APPID</key>
<string>XXXXX-XXXXX</string>

<key>Pushwoosh_API_TOKEN</key>
<string>YOUR_DEVICE_API_TOKEN</string>
```

* `Pushwoosh_APPID`: Pushwoosh 애플리케이션 코드입니다.
* `Pushwoosh_API_TOKEN`: [Pushwoosh Device API Token](/ko/developer/api-reference/api-access-token/#device-api-token)입니다.

> **중요:** Pushwoosh Control Panel에서 토큰이 올바른 애플리케이션에 접근할 수 있도록 하십시오. [더 알아보기](/ko/developer/api-reference/api-access-token/#edit-token)


<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-6.webp" alt=""/>

<Aside type="note">
XXXXX-XXXXX를 Pushwoosh APP ID로 교체하세요.
</Aside>

3. 잘했습니다! 이제 첫 번째 푸시 알림을 보낼 수 있습니다!

<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-7.webp" alt=""/>

<img src="/setting-up-pushwoosh-visionos-sdk-swift-package-manager-setup-8.webp" alt=""/>

### 피드백을 공유해주세요

여러분의 피드백은 더 나은 경험을 만드는 데 도움이 됩니다. SDK 통합 과정에서 문제가 발생하면 언제든지 알려주시기 바랍니다. 어려움이 있으시면 주저하지 마시고 [이 양식을 통해](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform) 의견을 공유해주세요.