게임 클라이언트에서 로컬 푸시를 등록하여 필요한 게임 알람으로 사용한다. 등록된 로컬 푸시는 필요에 따라 해지할 수 있다.
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 | 푸시 타입 지정
popup 은 v1.19.4부터 사용 중단)
|
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
필드는 푸시 메시지의 다이얼로그 형태를 의미한다. 다이얼로그 형태는 푸시 메시지를 화면에 어떻게 나타낼 지를 정의한다.
푸시 메시지 다이얼로그 형태로는 다음의 세 가지 선택이 가능하다.
- 바 타입(bar): 화면 상단에 나타나며 icon, title, message로 구성됨. 단말기 화면이 꺼져 있으면 나타나지 않음
- 팝업 타입(popup): 토스트 노출 위치에 팝업 형식으로 화면에 나타남 (v1.19.4에서 사용 중단)
- 토스트 타입(toast): 토스트 메시지로 나타남
- 모두(bar,toast): 바 타입와 토스트 타입 모두 화면에 나타남
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,toast"; 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 : 상단 푸시 알림, toast : 토스트 형태 알림 (단일/복수 사용 가능하며 기본값은 bar) arg->SetStringField(TEXT("type"), TEXT("bar,toast")); 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,toast"; // bar : 상단 푸시 알림, toast : 토스트 형태 알림 (단일/복수 사용 가능하며 기본값은 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() ); } |