gRPC Transport
PushwooshGRPC 모듈은 Pushwoosh 서버와의 통신을 위한 네트워크 성능을 향상시킬 수 있는 선택적 gRPC 전송 계층을 제공합니다. 사용 가능한 경우, SDK는 지원되는 API 메서드에 대해 자동으로 gRPC를 사용하고 gRPC를 사용할 수 없는 경우 REST로 대체됩니다.
작동 방식
Anchor link to기본적으로 Pushwoosh SDK는 HTTPS를 통해 REST API를 사용하여 서버와 통신합니다. PushwooshGRPC 모듈은 다음과 같은 여러 장점을 제공하는 대체 gRPC 전송을 추가합니다:
- 더 낮은 지연 시간 — gRPC는 영구 연결이 있는 HTTP/2를 사용합니다
- 더 작은 페이로드 크기 — Protocol Buffers는 JSON보다 더 압축적입니다
- 멀티플렉싱 — 단일 연결을 통해 여러 요청을 보낼 수 있습니다
자동 대체
Anchor link to이 모듈에는 내장된 복원 기능이 포함되어 있습니다:
| 시나리오 | 동작 |
|---|---|
| gRPC 사용 가능 | gRPC 전송 사용 |
| gRPC 사용 불가 | REST로 대체 |
| 네트워크 오류 | REST로 재시도 |
요구 사항
Anchor link to| 요구 사항 | 버전 |
|---|---|
| iOS | 13.0+ |
| Xcode | 14.0+ |
| Swift | 5.0+ |
Swift Package Manager
Anchor link toPushwoosh SDK를 통합할 때 타겟에 PushwooshGRPC를 추가하세요:
- Xcode에서 File → Add Package Dependencies로 이동합니다
- 패키지 URL을 입력합니다:
https://github.com/Pushwoosh/Pushwoosh-XCFramework - 필수 프레임워크 외에
PushwooshGRPC를 선택합니다
PushwooshFrameworkPushwooshCorePushwooshBridge
PushwooshGRPC— gRPC 전송PushwooshKeychain— 영구적인 기기 IDPushwooshLiveActivities— Live Activities 지원PushwooshVoIP— VoIP 푸시 알림PushwooshForegroundPush— 사용자 정의 포그라운드 알림
CocoaPods
Anchor link toPodfile에 gRPC 하위 스펙을 추가합니다:
target 'MyApp' do use_frameworks!
pod 'PushwooshXCFramework' pod 'PushwooshXCFramework/PushwooshGRPC'end그런 다음 실행합니다:
pod install코드 변경이 필요 없습니다. 프로젝트에 PushwooshGRPC 모듈을 추가하면 자동으로 작동합니다:
- 앱 실행 시 SDK는 gRPC 전송이 사용 가능한지 감지합니다
- 가능한 경우 API 호출은 gRPC를 통해 라우팅됩니다
- gRPC가 실패하면 SDK는 자동으로 REST로 대체됩니다
지원되는 메서드
Anchor link to다음 API 메서드는 gRPC 전송을 지원합니다:
| 메서드 | gRPC 지원 |
|---|---|
| 기기 등록 | 예 |
| 태그 (설정/가져오기) | 예 |
| 앱 열기 추적 | 예 |
| 푸시 통계 | 예 |
사용 사례
Anchor link toPushwooshGRPC 모듈은 특히 다음과 같은 경우에 유용합니다:
- 고빈도 이벤트 추적 — 많은 이벤트를 보내는 앱의 오버헤드 감소
- 실시간 애플리케이션 — 시간에 민감한 작업의 지연 시간 감소
- 대역폭이 제한된 환경 — 더 작은 페이로드 크기로 데이터 절약
문제 해결
Anchor link to모듈 활성화 확인
Anchor link to앱이 실행될 때 Xcode 콘솔 로그를 확인하세요. 다음과 같은 로그 메시지가 표시되어야 합니다:
[Pushwoosh] gRPC transport: ENABLEDREST 전송 강제
Anchor link to디버깅을 위해 일시적으로 gRPC를 비활성화해야 하는 경우, 타겟에서 PushwooshGRPC 모듈을 제거할 수 있습니다. gRPC를 사용할 수 없을 때 SDK는 자동으로 REST 전송을 사용합니다.