게임 클라이언트에서 로컬 푸시를 등록하여 필요한 게임 알람으로 사용한다. 등록된 로컬 푸시는 필요에 따라 해지할 수 있다.
C2SModulePush_Register
로컬 푸시 메시지 설정
로컬 푸시를 등록한다. 등록된 로컬 푸시는 앱을 종료해도 삭제되지 않으며, 동일한 푸시 ID로 등록을 요청한 때에는 덮어쓰기하여 등록된다. 한편, iOS에서는 최대 64개의 로컬 푸시를 등록할 수 있고, 기기 및 OS 버전에 따라 64개 미만으로 등록 수량이 제한되기도 한다. 사용 환경별 최대 등록 가능 수량을 초과하는 경우에는 이전에 등록된 푸시들이 자동으로 등록 취소된다. (참조)
argument name | type | desc | platform | required |
---|---|---|---|---|
pushId | int | 푸시 ID | all | 필수 |
title | string | 푸시 제목 | all | 필수 |
message | string | 푸시 메시지 | all | 필수 |
sound | string | 리소스 폴더의 파일 이름을 지정 지정한 값이 없으면 기본음 |
all | 필수 |
after | long | 푸시 알림 시간 단위: 초 |
all | 필수 |
type | string | 푸시 타입 지정
|
Android | 필수 |
groupId | string | 푸시 알림을 특정 그룹(그룹은 콘솔에서 설정)에 포함하여 노출. 설정하지 않을 시 기본 앱그룹에 포함하여 노출 | all | 선택(1.21.1.1+) |
bigMessage | string | Android 알림 창에 보여주는 알림 내용 길이 제한 없음 주의: Android Jelly Bean 이상에서 사용 가능 |
Android | 선택 |
ticker | string | 푸시 알림 메시지 티커 | Android | 선택 |
icon | string | 리소스 폴더의 파일 이름을 지정 없으면 기본 아이콘(게임 아이콘) |
Android | 선택 |
active | string | 유저가 푸시를 눌렀을 때의 동작 설정
"app" : 게임 앱을 실행 (기본값)
"web:이동할 URL" : 입력된 URL로 이동 |
Android | 선택 |
broadcastAction | string | 푸시 알림이 왔을 때 브로드캐스팅 시 전달 할 액션값 | Android | 선택 |
bucketType | int | 푸시 메시지 디스플레이 타입
|
Android | 선택 |
bucketSize | int | 알림 창에 묶어서 보여줄 동일 푸시 ID에 대한 메시지 개수 | Android | 선택 |
bigPicture | string | Android 알림 창에 보여주는 이미지 파일 경로 | Android | 선택 |
type 필드
type
필드는 푸시 메시지의 다이얼로그 형태를 의미한다. 다이얼로그 형태는 푸시 메시지를 화면에 어떻게 나타낼 지를 정의한다.
푸시 메시지 다이얼로그 형태로는 다음의 세 가지 선택이 가능하다.
- 바 타입: 화면 상단에 나타나며
icon
,title
,message
로 구성됨. 단말기 화면이 꺼져 있으면 나타나지 않음 - 팝업 타입: 토스트 형식으로 화면에 나타남
- 모두: 바 타입과 팝업 타입 동시에 화면에 나타남
팝업 타입이나 바 타입과 팝업 타입 모두 제공할 때, 만약 단말기 화면이 꺼져 있는 상태라면 위의 스크린샷에서와 같이 팝업만 제공된다.
bigMessage 필드와 bigPicture 필드
다음 그림은 bigMessage와 bigPicture가 알림창에 나타나는 모습을 보여준다.
bigMessage
필드를 이용하면 알림 창에 많은 양의 텍스트를 노출할 수 있다.bigMessage
필드를 이용할 때ticker
를 함께 이용할 수 있다.bigPicture
필드를 이용하면 알림 창에 큰 그림을 노출할 수 있다.bigPicture
를 이용할 때bigMessage
나ticker
를 함께 이용할 수 없다.
bucketType 필드
bucketType
필드 값이 1이거나 2이면, 동일 푸시 ID에 여러 건의 푸시 알림이 발생했을 때 알림 창에 알림들을 한 섹션에 누적하여 출력한다.
bucketSize
는 알림 창에 몇 개의 메시지가 보이게 노출하는 지를 의미한다.bucketType
값이 1이면, 즉 Inboxing 타입일 때 메시지가 한 줄을 넘으면 생략 부호(…)를 넣어 화면을 넘어가는 내용은 출력하지 않는다.bucketType
값이 2이면, 많은 양의 텍스트를 그대로 출력한다.bucketType
이용 시ticker
를 함께 이용할 수 있다.
Result – Api.Push_Register
argument name | type | desc | platform |
---|---|---|---|
입력 받은 Dictionary |
C2SModulePush_Unregister
등록된 로컬 푸시를 해지한다.
argument name | type | desc | platform |
---|---|---|---|
pushId | int, int array |
푸시 ID | all |
Result – Api.Push_Unregister
로컬 푸시에 등록된 푸시 ID 목록
argument name | type | desc | platform | |
---|---|---|---|---|
pushId | int array | 푸시 ID | all |
샘플코드
public static bool C2SModule.Push.Register(C2SModule.Parameter arg, out C2SModule.Error error,
C2SModule.CompletionHandler completionHandler);
– 로커 푸시를 등록한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
C2SModule.Parameter arg = new C2SModule.Parameter(); arg["pushId"] = 11111; // 푸시 ID (5자리 이상의 중복되지 않은 랜덤한 값으로 입력) arg["title"] = "ImTitle"; // Push Title arg["message"] = "<Platform Sample App> Test Msg"; // Push Message arg["ticker"] = "thats Ticker"; arg["type"] = "bar,popup"; arg["icon"] = ""; arg["sound"] = ""; // Push Sound arg["active"] = "app"; arg["after"] = 5; // 알림 시간 C2SModule.Error error; if(!C2SModule.Push.Register(arg, out error)) { CommonModuleDelegate.Log(error); } |
public static bool C2SModule.Push.Unregister(C2SModule.Parameter arg, out C2SModule.Error error,
C2SModule.CompletionHandler completionHandler);
– 등록된 로커 푸시를 해지한다.
1 2 3 4 5 6 7 |
C2SModule.Parameter arg = new C2SModule.Parameter(); arg["pushId"] = 11111; // 푸시 ID ( 등록된 푸시 ID) C2SModule.Error error; if(!C2SModule.Push.Unregister(arg, out error)) { CommonModuleDelegate.Log(error); } |
– 상황별로 고유한 푸시 ID를 생성해서 로컬 푸시를 등록한다.
– 배지, 메시지, 시간, 사운드 등을 설정할 수 있다.
– delegate에 C2SModuleApi_PushRegister 콜백이 내려온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
TSharedPtr arg = MakeShareable(new FJsonObject); arg->SetNumberField(TEXT("pushId"),100001); arg->SetStringField(TEXT("title"), TEXT("testPush")); arg->SetStringField(TEXT("message"), TEXT("test Push Message")); arg->SetNumberField(TEXT("after"),5); //상단 알림 바에 표시되는 문구(type이 bar 형태일 때 노출) arg->SetStringField(TEXT("ticker"), TEXT("thats Ticker")); // bar : 상단 푸시 알림, popup : 팝업 형태 알림 (단일/복수 사용 가능하며 기본값은 bar) arg->SetStringField(TEXT("type"), TEXT("bar,popup")); arg->SetStringField(TEXT("icon"), TEXT("")); // Push Sound arg->SetStringField(TEXT("sound"), TEXT("")); // 상단 푸시 터치시 자신의 app 또는 url 주소 형태로 호출 arg->SetStringField(TEXT("active"), TEXT("app")); FString OutputString; TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&OutputString); FJsonSerializer::Serialize(arg.ToSharedRef(), Writer); FHiveSDKModule::Get().HiveSDKUEPush_Register(OutputString); |
– 등록된 로컬 푸시를 해제한다.
– delegate 에 C2SModuleApi_PushUnregister 콜백이 내려온다.
1 2 3 4 5 6 7 8 9 |
TSharedPtr arg = MakeShareable(new FJsonObject); arg->SetNumberField(TEXT("pushId"),100001); FString OutputString; TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&OutputString); FJsonSerializer::Serialize(arg.ToSharedRef(), Writer); FHiveSDKModule::Get().HiveSDKUEPush_Unregister(OutputString); |
+(BOOL)Register:(id)arg error:(NSError**)error completionHandler:(void(^)(NSDictionary *, NSError*))
completionHandler;
– 상황별로 고유한 푸시 ID를 생성해서 로컬 푸시를 등록한다.
– 배지, 메시지, 시간, 사운드 등을 설정할 수 있다.
– delegate에 C2SModuleApi_PushRegister 콜백이 내려온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
int pushId = 10001; //등록할 푸시 ID NSString* title = @"push test title"; NSString* message = @"push test message"; long after_time_sec = 5; // 초 단위 NSString* sound = nil; NSMutableDictionary* arg = [[NSMutableDictionary alloc]init]; [arg setObject:[NSNumber numberWithInt:pushId] forKey:@"pushId"]; [arg setObject:titie forKey:@"title"]; [arg setObject:message forKey:@"message"]; [arg setObject:[NSNumber numberWithLong:afterTime_Sec] forKey:@"after"]; if(pushData.sound != nil) [arg setObject:sound forKey:@"sound"]; NSError* error; [C2SModulePush Register:arg error:&error]; |
+(BOOL)Unregister:(id)arg error:(NSError**)error completionHandler:(void(^)(NSDictionary *, NSError*))
completionHandler;
– 등록된 로컬 푸시를 해제한다.
– delegate 에 C2SModuleApi_PushUnregister 콜백이 내려온다.
1 2 3 4 5 6 |
C2SModule.Parameter arg = new C2SModule.Parameter(); arg["pushId"] = 11111; // 푸시 ID (등록된 푸시 ID) C2SModule.Error error;if(!C2SModule.Push.Unregister(arg, out error)) { CommonModuleDelegate.Log(error); } |
C2SModule_Cocos2dx::C2SModuleCompletionHandler* completionHandler = NULL);
– 상황별로 고유한 푸시 ID를 생성해서 로컬 푸시를 등록한다.
– 배지, 메시지, 시간, 사운드 등을 설정할 수 있다.
– delegate에 C2SModuleApi_PushRegister 콜백이 내려온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Json::Value arg; arg["pushId"] = 11111; // 푸시 ID arg["title"] = "[Push Test]"; // 푸시 제목 arg["message"] = "<Platform Sample App> Test Message.."; // 푸시 내용 arg["ticker"] = "알림 도착"; // 푸시가 도착하면 상단 알림 바에 표시되는 문구(type이 bar 형태일 때 노출) arg["type"] = "bar,popup"; // bar : 상단 푸시 알림, popup : 팝업 형태 알림 (단일/복수 사용 가능하며 기본값은 bar) arg["active"] = "app"; // 상단 푸시 터치시 자신의 app 또는 url 주소 형태로 호출 arg["after"] = 5; // 푸시가 발송 되는 시간(초) Json::StyledWriter writer; std::string strJSON = writer.write(arg); C2SModule_Cocos2dx::C2SModuleError error; if( ::C2SModulePush_Register(strJSON.c_str(), &error) == false ) { CCLog( "====>>>> Push Register error (%s)", error.get()->GetMessage() ); } |
C2SModule_Cocos2dx::C2SModuleCompletionHandler* completionHandler = NULL);
– 등록된 로컬 푸시를 해제한다.
– delegate 에 C2SModuleApi_PushUnregister 콜백이 내려온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Json::Value arg; arg["pushId"] = 11111; // 푸시 ID Json::StyledWriter writer; std::string strJSON = writer.write(arg); C2SModule_Cocos2dx::C2SModuleError error; if( ::C2SModulePush_Unregister(strJSON.c_str(), &error) == false ) { CCLog( "====>>>> Push Unregister error (%s)", error.get()->GetMessage() ); } |