Hive는 Hive 푸시 서버에 관계 없이 게임 클라이언트에서 단말에 푸시를 등록하여 게임 알람으로 사용할 수 있는 기능을 제공하며 이를 로컬 푸시라고 합니다. 로컬 푸시 기능에 대해 Hive는 로컬 푸시 등록과 로컬 푸시 해제 기능을 제공합니다. 로컬 푸시는 앱을 종료해도 정해진 시간에 통지가 발생하게 되고 등록된 로컬 푸시는 필요에 따라 해지할 수 있습니다.
로컬 푸시 정보
Hive는 로컬 푸시 정보에 대해 다음의 정보를 담아 LocalPush 클래스에 정의합니다.
Name | Type | Description |
---|---|---|
noticeId | Integer | 로컬 푸시 메시지 식별자 |
title | String | 로컬 푸시 메시지 제목 |
msg | String | 로컬 푸시 메시지 내용 |
after | Integer | 푸시 등록 후 몇 초 후에 푸시 메시지를 띄울 것인지를 의미(초 단위, 기본값=0) |
groupId | String | 알림 그룹을 위한 그룹 ID값입니다. 알림 그룹이란 같은 앱에서 보낸 알림들은 같은 그룹으로 묶어서 기기 화면에 표시하는 기능입니다. 이 값을 설정하지 않으면 로컬 푸시 메세지 그룹은 기본 앱 그룹으로 설정됩니다. |
등록하기
유저의 단말기에 로컬 푸시를 등록하려면 Push 클래스의 registerLocalPush()
메서드를 호출하세요.
iOS에서는 최대 64개의 로컬 푸시를 등록할 수 있으며, 기기 및 OS 버전에 따라 64개 미만으로 등록 수량이 제한되기도 합니다. 사용 환경별 최대 등록 가능 수량을 초과하는 경우에는 이전에 등록된 푸시들이 자동으로 등록 취소됩니다. (참조)
다음은 로컬 푸시를 등록하는 예제입니다.
API Reference: hive.Push.registerLocalPush
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using hive; LocalPush localPush = new LocalPush (); localPush.noticeId = 1; localPush.title = "Local Push Title"; localPush.msg = "Local Push Message"; localPush.after = 5; localPush.groupId = "a"; Push.registerLocalPush(localPush, (ResultAPI result, LocalPush localPush) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: Push::registerLocalPush
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; LocalPush localPush; localPush.noticeId = 1; localPush.title = "Local Push Title"; localPush.msg = "Local Push Message"; localPush.after = 5; localPush.groupId = "a"; Push::registerLocalPush(localPush, [=](ResultAPI result, LocalPush localPush){ if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: registerLocalPush
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import com.hive.Push import com.hive.ResultAPI val localPush = Push.LocalPush().apply { noticeID = 1 title = "Local Push Title" msg = "Local Push Message" after = 5 groupId = "a" } Push.registerLocalPush(localPush, object : Push.LocalPushListener { override fun onRegisterLocalPush(result: ResultAPI, localPush: Push.LocalPush?) { if (result.isSuccess) { // 호출 성공 } } }) |
API Reference: com.hive.Push.registerLocalPush
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import com.hive.Push; import com.hive.ResultAPI; Push.LocalPush localPush = new Push.LocalPush(); localPush.setNoticeID(1); localPush.setTitle("Local Push Title"); localPush.setMsg("Local Push Message"); localPush.setAfter(5); localPush.setGroupId("a"); Push.INSTANCE.registerLocalPush(localPush, (result, localPushData) -> { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: registerLocalPush(_:handler:)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import HIVEService let localPush = LocalPush() localPush.noticeId = 1; localPush.title = "Local Push Title"; localPush.msg = "Local Push Message"; localPush.after = 5; localPush.groupId = "a"; PushInterface.registerLocalPush(localPush) { result, localPush in if result.isSuccess() { // 호출 성공 } } |
API Reference: Objective-C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#import <HIVEService/HIVEService-Swift.h> HIVELocalPush *localPush = [[HIVELocalPush alloc] init]; localPush.noticeId = 1; localPush.title = @"Local Push Title"; localPush.msg = @"Local Push Message"; localPush.after = 5; localPush.groupId = @"a"; [HIVEPush registerLocalPush: localPush handler: ^(HIVEResultAPI *result, HIVELocalPush *localPush) { if ([result isSuccess]) { // 호출 성공 } }]; |
해제하기
등록해 놓은 푸시를 설정해 놓은 알림 시간 전에 해제할 수 있습니다.
단일 로컬 푸시 등록 해제
아래의 API를 사용하여 등록했던 푸시 식별자를 파라미터로 설정하고 로컬 푸시를 해제하세요.
API Reference: hive.Push.unregisterLocalPush
1 2 3 4 5 |
using hive; int noticeId = 1; // 로컬 푸시 고유 ID Push.unregisterLocalPush(noticeId); |
API Reference: Push::unregisterLocalPush
1 2 3 4 5 6 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; int noticeId = 1; // 로컬 푸시 고유 ID Push::unregisterLocalPush(noticeId); |
API Reference: Push.unregisterLocalPush
1 2 3 4 |
import com.hive.Push val noticeId = 1 // 로컬 푸시 고유 ID Push.unregisterLocalPush(noticeId) |
API Reference: com.hive.Push.unregisterLocalPush
1 2 3 4 |
import com.hive.Push; int noticeId = 1; // 로컬 푸시 고유 ID Push.INSTANCE.unregisterLocalPush(noticeId); |
API Reference: PushInterface.unregisterLocalPush
1 2 3 4 |
import HIVEService let noticeId = 1 // 로컬 푸시 고유 ID PushInterface.unregisterLocalPush(noticeId) |
API Reference: HIVEPush::unregisterLocalPush
1 2 3 4 |
#import <HIVEService/HIVEService-Swift.h> NSInteger noticeId = 0; // 로컬 푸시 고유 ID [HIVEPush unregisterLocalPush: noticeId]; |
목록상 로컬 푸시 일괄 등록 해제
아래의 API를 사용하면 등록된 로컬 푸시 식별자 목록을 작성하여 일괄 등록 취소할 수 있습니다.
API Reference: hive.Push.unregisterLocalPushes
1 2 3 4 5 |
using hive; List noticeIds = new List { 1, 2, 3 }(); Push.unregisterLocalPushes (noticeIds); |
API Reference: Push::unregisterLocalPushes
1 2 3 4 5 6 7 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; vector noticeIds = { 1, 2, 3 }; Push::unregisterLocalPushes (noticeIds); |
API Reference: Push.unregisterLocalPushes
1 2 3 4 5 |
import com.hive.Push val noticeIds = arrayListOf(1, 2, 3) Push.unregisterLocalPushes(noticeIds) |
API Reference: com.hive.Push.unregisterLocalPushes
1 2 3 4 5 6 7 8 |
import com.hive.Push; ArrayList<Integer> noticeIds = new ArrayList<>(); noticeIds.add(1); noticeIds.add(2); noticeIds.add(3); Push.INSTANCE.unregisterLocalPushes(noticeIds); |
API Reference: PushInterface.unregisterLocalPushes
1 2 3 4 5 |
import HIVEService let noticeIds = [1, 2, 3] PushInterface.unregisterLocalPushes(noticeids) |
API Reference: HIVEPush::unregisterLocalPushes
1 2 3 4 5 |
#import <HIVEService/HIVEService-Swift.h> NSArray* noticeIds = @[ @(1), @(2), @(3) ]; [HIVEPush unregisterLocalPushes: noticeIds]; |
모든 로컬 푸시 등록 해제
아래의 API를 사용하면 Hive 로컬 푸시 뿐만 아니라 수신 대기 중인 모든 로컬 푸시의 등록을 해제할 수 있습니다.
API Reference: hive.Push.unregisterAllLocalPushes
1 2 3 |
using hive; Push.unregisterAllLocalPushes(); |
API Reference: Push::unregisterAllLocalPushes
1 2 3 4 5 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; Push::unregisterAllLocalPushes(); |
API Reference: Push.unregisterAllLocalPushes
1 2 3 |
import com.hive.Push Push.unregisterAllLocalPushes() |
API Reference: com.hive.Push.unregisterAllLocalPushes
1 2 3 |
import com.hive.Push; Push.INSTANCE.unregisterAllLocalPushes(); |
API Reference: PushInterface.unregisterAllLocalPushes
1 2 3 |
import HIVEService PushInterface.unregisterAllLocalPushes() |
API Reference: HIVEPush::unregisterAllLocalPushes
1 2 3 |
#import <HIVEService/HIVEService-Swift.h> [HIVEPush unregisterAllLocalPushes]; |
UI 커스터마이징(Android용)
Android에서는 로컬 푸시를 커스터마이징할 수 있습니다. 커스터마이징 하는 UI 요소에 대한 정보는 로컬 푸시를 등록하는 registerLocalPush()
메서드의 LocalPush
파라미터에 푸시 설정 정보와 함께 설정합니다.
로컬 푸시 UI 정보
로컬 푸시 UI 커스터마이즈 정보는 로컬 푸시 설정 정보를 정의하는 LocalPush 클래스에 함께 정의됩니다. 다음의 표는 LocalPush 클래스의 필드 중 변경할 수 있는 UI 요소들에 대한 필드를 정의합니다.
상세 정보가 제공되는 필드명은 링크가 제공됩니다. 필드명을 클릭해 상세 정보나 스크린샷을 확인해 보세요.
Name | Type | Description | Required |
---|---|---|---|
type |
String | 푸시 메시지의 다이얼로그 형태:
|
선택 |
bigmsg |
String | Android 알림 창에 보여주는 알림 내용. 길이 제한 없음. 주의: Android Jelly Bean 이상에서 사용 가능 | 선택 |
ticker |
String | 푸시 알림 메시지 티커 | 선택 |
icon |
String | 푸시 알림에 띄우는 아이콘의 파일 경로. /res/drawable 디렉토리 내에 있는 파일의 확장자를 제외한 파일 이름. 예. 파일의 경로가 res/drawable-xhdpi/hive_icon.png 일 때 icon 필드 값은 "hive_icon" 입니다. icon을 별도로 제공하지 않으면 디폴트 아이콘인 게임 아이콘이 나타납니다. |
선택 |
sound | String | 푸시 알림 발생 시 울릴 사운드 파일 경로. 사운드를 별도로 제공하지 않으면 디폴트 알림 사운드가 울립니다. | 선택 |
active | String | 유저가 푸시를 눌렀을 때의 동작 설정:
|
선택 |
broadcastAction | String | 푸시 알림이 발생했을 때 broadcasting할 액션 값 | 선택 |
buckettype |
Integer | 푸시 알림 디스플레이 타입:
|
선택 |
bucketsize |
Integer | 알림 창에 묶어서 보여줄 동일 푸시 ID에 대한 메시지 개수 | 선택 |
bigpicture |
String | Android 알림 창에 보여주는 이미지 파일 경로 | 선택 |
icon_color | String | 아이콘의 배경색 형식: {"r":[0–255],"g":[0–255],"b":[0–255]} 예:{"r":0,"g":128,"b":255} 주의: Android Lollipop (5.0) 이상에서 사용 가능 |
선택 |
type 필드
type
필드는 푸시 메시지의 다이얼로그 형태를 의미합니다. 다이얼로그 형태는 푸시 메시지를 화면에 어떻게 나타낼 지를 정의합니다.
푸시 메시지 다이얼로그 형태로는 다음의 세 가지 선택이 가능합니다:
- 바 타입: 화면 상단에 나타나며
icon
,title
,message
로 구성됨. 단말기 화면이 꺼져 있으면 나타나지 않음 - 팝업 타입: 토스트 형식으로 화면에 나타남
- 모두: 바 타입과 팝업 타입 동시에 화면에 나타남
팝업 타입이나 바 타입과 팝업 타입 모두 제공할 때, 만약 단말기 화면이 꺼져 있는 상태라면, 위의 스크린샷에서와 같이 팝업만 제공됩니다.
bigmsg 필드와 bigpicture 필드
다음 그림은 빅 메시지와 빅 픽쳐가 알림창에 나타나는 모습을 보여주고 있습니다.
bigmsg
필드를 이용하면 알림 창에 많은 양의 텍스트를 노출할 수 있습니다.bigmsg
필드를 이용할 때ticker
를 함께 이용할 수 있습니다.bigpicture
필드를 이용하면, 알림 창에 큰 그림을 노출할 수 있습니다.bigpicture
를 이용할 때bigmsg
를 함께 이용할 수 없습니다.bigpicture
를 이용할 때ticker
를 함께 이용할 수 없습니다.
buckettype 필드
buckettype
필드 값이 1이거나 2이면 동일 푸시 ID에 여러 건의 푸시 알림이 발생했을 때, 알림 창에 알림들을 한 섹션에 누적하여 출력하게 합니다.
bucketsize
는 알림 창에 몇 개의 메시지가 보이게 노출하는 지를 의미합니다.buckettype
값이 1이면, 즉 Inboxing 타입일 때 메시지가 한 줄을 넘으면 생략 부호(…)를 넣어 화면을 넘어가는 내용은 출력하지 않습니다.buckettype
값이 2이면, 많은 양의 텍스트를 그대로 출력합니다.buckettype
이용 시ticker
를 함께 이용할 수 있습니다.
Facebook Cloud Game 알림 전송하기 (Android용)
Facebook Cloud Game 빌드에서 Hive SDK의 로컬 푸시 기능을 통해 페이스북에서 제공하는 알림(Facebook App To User Notifications) 기능을 사용할 수 있습니다.
페이스북 알림 기능의 경우 Android의 일반적인 Push와 다르게 전달되는 형태와 제약사항이 존재합니다. Facebook App To User Notifications 페이지에서 자세한 내용을 확인 바랍니다.
그리고 페이스북 알림 기능은 페이스북에서 지속 업데이트되고 있고 동작의 변경사항이 발생하고 있습니다. 페이스북 알림 기능이 온전히 정착하기까지 Hive SDK에서 지속 업데이트 예정입니다.
(Hive v4.16.1은 Facebook App To User Notifications 의 22년 10월 반영 사항을 적용 및 검증하였습니다.)
페이스북 알림 기능에 필요한 데이터는 LocalPush 클래스에 정의해야 합니다. 다음 표는 LocalPush 클래스의 필드 중 페이스북 알림 기능에 필요한 요소를 정의합니다.
NAME | TYPE | DESCRIPTION | REQUIRED |
title | String | – 로컬 푸시 메시지 제목
– 1~30 사이의 글자 수 필수 설정 – Hive 4.16.1 기준 title 값을 필수이나 페이스북 UI에서 사용되는 곳이 확인되지 않음 |
필수 |
msg | String | – 로컬 푸시 메시지 내용
– 10~180 사이의 글자 수 필수 설정 – 알림에서 메시지로 노출됨 |
필수 |
after | Integer | – 푸시 등록 후 몇 초 후에 푸시 메시지를 띄울 것인지를 의미(초 단위, 기본값=0) – 최대 10일 이하의 시간 값(초) 설정 |
필수 |
bigpicture | String | – 이미지 설정 필수 – 크기 300×200 px – 용량 10MB 이하 – 웹 링크로 게시된 이미지인 경우 http 혹은 https로 시작되는 url (ex : https://hive-fn.qpyou.cn/hubweb/hive_img/U/P/122349090/20151028/82f610b6f4590863934cefb2b875c87a.jpg) – 프로젝트 리소스에 포함된 이미지 파일인 경우 /res/drawable 이하에 파일 포함 필요하며 파일 이름이 fbcloudtest.png라면 fbcloudtest만 값으로 입력(파일 이름만) |
필수 |
알림이 도착하면 Facebook 웹 페이지 및 앱에서 아래와 같이 알림 내용이 노출됩니다.