OneSignal은 실시간 커뮤니케이션을 위해 설계되지 않았습니다. 푸시 알림은 사용자가 앱에 적극적으로 있지 않을 때 대체 수단으로 사용하는 것이 가장 좋습니다. 실시간 인앱 메시징의 경우 앱의 기존 메시징 레이어를 사용하고 수신자가 오프라인이거나 비활성 상태일 때만 OneSignal 알림을 트리거하세요.
소셜 활동
누군가 좋아요, 댓글, 멘션, 태그 또는 팔로우할 때 사용자에게 알립니다.
다이렉트 메시지
디바운싱과 대화 딥 링크로 새로 수신된 메시지를 사용자에게 알립니다.
게임 알림
기지 공격, 도전, 길드 활동과 같은 시간에 민감한 경쟁 이벤트를 전송합니다.
사전 요구 사항
시작하기 전에 다음을 확인하세요:- 앱에 OneSignal SDK가 설치되어 있어야 합니다. 모바일 SDK 설정 또는 웹 SDK 설정을 참조하세요.
- 자체 식별자로 사용자를 타겟팅할 수 있도록 모든 사용자에 대해
external_id가 설정되어 있어야 합니다. 사용자 및 별칭을 참조하세요. - 소셜 활동을 감지하고 OneSignal API를 호출할 수 있는 백엔드가 필요합니다. REST API 개요를 참조하세요.
- 개인화를 위해
custom_data를 사용할 계획이라면 대시보드에서 템플릿을 생성해야 합니다.custom_data를 사용하려면template_id가 필요합니다.
소셜 활동 알림
사용자가 소셜 활동에 관련될 때 푸시 알림을 전송하세요.custom_data를 사용하여 전송 시점에 발신자의 이름, 아바타 및 관련 컨텍스트를 메시지에 삽입합니다. OneSignal에는 데이터가 저장되지 않습니다.
일반적인 소셜 활동
설정
1
백엔드에서 활동 감지
소셜 활동이 발생하면 백엔드에서 발신자와 수신자, 그리고 게시물 ID나 콘텐츠 같은 관련 컨텍스트를 식별합니다:
JSON
2
푸시 템플릿 생성
대시보드에서 Messages > Templates > New Push Template로 이동하세요. Liquid 구문을 사용하여 메시지:이미지(선택 사항, 발신자의 아바타 표시):템플릿을 저장하고
custom_data 필드를 참조합니다:제목:Liquid
Liquid
Liquid
template_id를 기록해 두세요.3
Create Message API 호출
백엔드에서 수신자에게 알림을 전송합니다:OneSignal은
JSON
custom_data 값을 사용하여 전송 시점에 템플릿을 렌더링합니다. 발신자의 이름과 아바타는 OneSignal에 저장되지 않고 알림에 표시됩니다.4
선택 사항: 이메일 및 SMS 대체 수단 추가
푸시가 비활성화되어 있거나 알림이 전달되지 않은 사용자에게 도달하려면 아래의 이메일 및 SMS 대체 수단을 참조하세요.
대량 활동 제한
바이럴 게시물은 초당 수천 건의like 이벤트를 생성할 수 있습니다. 각 이벤트마다 푸시를 보내지 마세요. 이는 수신자를 알림으로 넘치게 하고 앱이 음소거되거나 삭제되는 원인이 됩니다. 패턴은 다음과 같습니다:
- 백엔드에서 수를 누적합니다(예: 수신자 + 게시물을 키로 하는 Redis 카운터).
- 잠잠한 기간(10분이 합리적인 기본값)이 지나면 단일 요약 푸시를 전송합니다: “12명이 회원님의 게시물을 좋아합니다.”
- 요약 후 좋아요가 더 도착하면 새로운 기간을 시작하세요. 즉시 다시 푸시하지 마세요.
다이렉트(사용자 간) 메시지
사용자가 새 다이렉트 메시지를 받았을 때 알리고 대화로 바로 딥 링크하세요.수신자가 채팅에 적극적으로 있지 않을 때만 푸시를 보내세요. 이미 대화를 읽고 있는 사람에게 알림을 보내면 좋지 않은 경험이 됩니다. 알림을 트리거하기 전에 앱 자체 로직을 사용하여 수신자가 현재 활동 중인지 확인하세요. OneSignal은 사용자가 현재 앱을 사용 중인지 추적하지 않습니다.
설정
1
메시지 전송 감지 및 활동 확인
사용자 A가 사용자 B에게 메시지를 보낼 때 사용자 B가 현재 해당 대화에서 활동 중인지 확인합니다. 사용자 B가 오프라인이거나 대화에 있지 않으면 푸시 전송을 진행합니다.
2
메시지당 하나의 푸시 전송 방지
사용자 A가 여러 메시지를 연속으로 보내는 경우 마지막 메시지 후 짧은 시간을 기다렸다가 알림을 트리거하세요. 백엔드에서 다음과 같이 구현합니다:
- 첫 번째 메시지가 도착하면 타이머(예: 60초)를 시작합니다.
- 타이머가 끝나기 전에 다른 메시지가 도착하면 타이머를 재설정합니다.
- 새 메시지 없이 타이머가 끝나면 읽지 않은 메시지 수를 요약한 단일 푸시를 전송합니다.
3
푸시 알림 전송
대화로 연결되는 딥 링크와 함께 사용자 B에게 푸시를 전송합니다:앱은 알림이 열릴 때
JSON
data.conversation_id를 읽고 올바른 화면으로 이동합니다. 플랫폼별 설정은 딥 링킹을 참조하세요.4
선택 사항: 이메일 및 SMS 대체 수단 추가
푸시가 비활성화되어 있거나 알림이 전달되지 않은 사용자에게 도달하려면 아래의 이메일 및 SMS 대체 수단을 참조하세요.
게임: 경쟁 및 소셜 알림
경쟁 게임은 긴박감을 조성하는 시간에 민감한 알림의 이점을 누립니다.custom_data를 사용하여 이러한 알림이 구체적이고 개인적으로 느껴지도록 하세요. 공격자의 이름을 명시하거나 정확한 자원 수를 보여주는 알림은 일반적인 알림보다 훨씬 더 매력적입니다.
일반적인 경쟁 이벤트
설정
1
게임 백엔드에서 게임 이벤트 감지
경쟁 이벤트가 발생하면 게임 백엔드에서 영향을 받는 플레이어를 식별하고 관련 컨텍스트를 수집합니다:
JSON
2
푸시 템플릿 생성
대시보드에서 Liquid 참조가 포함된 Push Template을 생성합니다:제목:메시지:템플릿을 저장하고
Liquid
Liquid
template_id를 기록해 두세요.3
알림 전송
게임 백엔드에서 Create Message API를 호출합니다:
JSON
url은 플레이어를 방어 화면으로 바로 딥 링크합니다. data 객체는 앱의 알림 핸들러에 컨텍스트를 전달하여 올바른 전투 상태를 로드할 수 있게 합니다.4
선택 사항: 이메일 및 SMS 대체 수단 추가
푸시가 비활성화되어 있거나 알림이 전달되지 않은 플레이어에게 도달하려면 아래의 이메일 및 SMS 대체 수단을 참조하세요.
더 많은 게임 알림 예시
- 리더보드 추월
- 길드 이벤트
- 도전 초대
템플릿 메시지:API 요청:
Liquid
JSON
이메일 및 SMS 대체 수단
푸시가 비활성화되어 있거나 알림이 전달되지 않은 사용자에게 도달하기 위해 모든 알림 유형에 이메일 또는 SMS 대체 수단을 추가하세요. View Message API를 사용하여 확인된 수신 또는 클릭 여부를 확인하세요. 지연 기간 내에 기록이 없으면 이메일 또는 SMS 템플릿과 동일한custom_data 방식을 사용하여 후속 메시지를 전송하세요.
- Email
- SMS
소셜 활동멘션과 직접 답글 같은 가치가 높은 활동에 가장 적합합니다.이메일 템플릿 예시(제목):다이렉트 메시지메시지별 알림보다는 읽지 않은 대화의 일일 요약으로 가장 적합합니다.이메일 템플릿 예시(제목):이메일 템플릿 예시(본문, conversations 배열 반복):중첩된 객체 및 조건부 렌더링을 포함한 전체 배열 반복 참조는 API custom_data로 메시지 개인화를 참조하세요.게임주간 리더보드 요약, 길드 전쟁 결과, 마일스톤 달성과 같은 긴급하지 않은 요약에 가장 적합합니다.이메일 템플릿 예시(제목):
JSON
Liquid
JSON
Liquid
Liquid
JSON
Liquid
FAQ
OneSignal은 채팅 앱처럼 실시간으로 알림을 보낼 수 있나요?
아니요. 푸시 알림은 Apple(APNs) 및 Google(FCM) 인프라를 통해 전달되므로 전달 시간이 가변적이며 전달이 보장되지 않습니다. 실시간 인앱 커뮤니케이션에는 앱의 기존 메시징 레이어를 사용하고 수신자가 앱에 적극적으로 있지 않을 때 대체 수단으로 OneSignal을 사용하세요.이미 앱에 있는 사용자에게 알림이 가지 않도록 하려면 어떻게 해야 하나요?
OneSignal은 사용자가 현재 앱에서 활동 중인지 추적하지 않습니다. 알림을 트리거할지 여부는 자체 백엔드 로직으로 결정해야 합니다. 수신자가 오프라인이거나 해당 화면에 있지 않음을 확인한 경우에만 OneSignal API를 호출하세요.빠른 메시지 시퀀스로 인한 다중 알림을 방지하려면 어떻게 해야 하나요?
알림을 보내기 전에 백엔드에 짧은 지연을 추가하세요. 첫 번째 메시지가 도착하면 타이머를 시작합니다. 타이머가 끝나기 전에 다른 메시지가 들어오면 재설정합니다. 타이머가 끝나면 읽지 않은 수와 함께 단일 푸시를 전송합니다. OneSignal은 여러 API 호출을 자동으로 통합하지 않으므로 API를 다섯 번 호출하면 다섯 개의 알림이 전송됩니다.메시지 전송 후 custom_data가 사용자 프로필에 저장되나요?
아니요. custom_data는 일시적이며 API 요청 중에만 존재하고 전송 시점에 템플릿을 렌더링하는 데 사용됩니다. OneSignal에 저장되지 않으며 향후 메시지나 Journeys에서 재사용할 수 없습니다. 영구적인 사용자 데이터에는 태그를 사용하세요.
하나의 API 호출로 여러 수신자를 타겟팅할 수 있나요?
예.include_aliases 배열에 여러 external_id 값을 전달하세요. 각 수신자에게 서로 다른 개인화된 콘텐츠(예: 서로 다른 공격자 이름)가 필요한 경우 custom_data의 대량 개인화 패턴을 사용하세요. 전체 접근 방식은 API custom_data로 메시지 개인화를 참조하세요. 호출당 정확한 수신자 상한과 속도 제한은 Create Message API 참조에 문서화되어 있습니다. 매우 큰 대상의 경우 호출당 수천 개의 external_id 값을 전달하는 것보다 세그먼트 기반 타겟팅이 더 효율적입니다.
해외 사용자를 위해 메시지를 현지화해야 하나요?
여러 언어를 사용하는 대상이라면 예.headings 및 contents 필드는 여러 언어 코드(예: { "en": "...", "es": "...", "fr": "..." })를 허용하며 OneSignal은 각 구독의 언어에 따라 올바른 버전을 선택합니다. 동일한 패턴이 템플릿 필드에도 적용됩니다. 대체 언어 동작을 포함한 전체 참조는 다국어 메시징을 참조하세요.
관련 페이지
API custom_data로 메시지 개인화
custom_data와 Liquid 구문을 사용하여 동적인 메시지별 데이터를 템플릿에 삽입합니다.
메시지 개인화
태그, 사용자 속성, 세분화를 포함한 OneSignal의 모든 개인화 옵션 개요.
딥 링킹
사용자가 알림을 탭할 때 앱의 특정 화면으로 라우팅합니다.
활동 피드 생성
OneSignal의 알림 인박스를 사용하여 앱 내에 소셜 알림 기록을 표시합니다.
템플릿
푸시, 이메일, SMS용 재사용 가능한 메시지 템플릿을 생성하고 관리합니다.
Create Message API
custom_data, 타겟팅 및 사용 가능한 모든 필드로 메시지를 전송하기 위한 전체 API 참조.