새소식 페이지에서는 Hive 콘솔에 등록한 게임의 이벤트 배너와 공지사항을 한 페이지에서 함께 볼 수 있습니다.
Android 단말기에서만 쿠폰 교환소가 새소식 페이지에 나타납니다.
새소식 페이지 구성하기
새소식 페이지를 구성하는 공지사항, 크로스 프로모션과 이벤트 배너에 담길 내용은 Hive 콘솔에 등록하세요. 구성 요소의 순서, 즉 공지사항을 최상단에 배치할지, 이벤트 배너를 최상단에 배치할지와 종료 임박 배지, 선물 수령 알림 배지 표시 등은 Hive 콘솔에서 지정할 수 있습니다. 등록 방법에 대한 자세한 안내를 보려면 Hive 콘솔 프로모션 페이지를 참고하세요.
새소식 페이지 띄우기
새소식 페이지를 표시하려면 promotionType을 PromotionType.NEWS
로 설정하여 Promotion 클래스의 showPromotion()
메서드를 호출하세요.
다음은 새소식 페이지를 표시하는 예제 코드입니다.
API Reference: hive.Promotion.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 |
using hive; PromotionType promotionViewType = PromotionType.NEWS; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 새소식 페이지를 띄움 Boolean isForced = false; Promotion.showPromotion(promotionViewType, isForced, (ResultAPI result, PromotionEventType viewEventType) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: Promotion::showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; PromotionType promotionViewType = PromotionType::NEWS; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 새소식 페이지를 띄움 bool isForced = false; Promotion::showPromotion(promotionViewType, isForced, [=](ResultAPI result, PromotionEventType viewEventType) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: Promotion.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import com.hive.Promotion import com.hive.ResultAPI val promotionViewType = Promotion.PromotionViewType.NEWS // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 새소식 페이지를 띄움 val isForced = false Promotion.showPromotion(promotionViewType, isForced, object : Promotion.PromotionViewListener { override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) { if (result.isSuccess) { // 호출 성공 } } }) |
API Reference: com.hive.Promotion.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import com.hive.Promotion; import com.hive.ResultAPI; Promotion.PromotionViewType promotionViewType = Promotion.PromotionViewType.NEWS; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 새소식 페이지를 띄움 boolean isForced = false; Promotion.INSTANCE.showPromotion(promotionViewType, isForced, (result, promotionEventType) -> { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: PromotionInterface.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 |
import HIVEService let promotionViewType: PromotionViewType = .news // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 새소식 페이지를 띄움 let isForced = false PromotionInterface.showPromotion(promotionViewType, isForced: isForced) { result, viewResultType in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEPromotion::showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 |
#import <HIVEService/HIVEService-Swift.h> HIVEPromotionViewType promotionViewType = HIVEPromotionViewTypeNews; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 새소식 페이지를 띄움 BOOL isForced = NO; [HIVEPromotion showPromotion: promotionViewType isForced: isForced handler: ^(HIVEResultAPI *result, HIVEPromotionViewResultType viewResultType) { if ([result isSuccess]) { // 호출 성공 } }]; |
- 오늘 하루 동안 새소식 페이지 표시하지 않기
오늘 하루 동안 유저가 새소식 페이지를 보지 않도록 선택하게 할 수 있습니다. 하루 동안 다시 보지 않기 버튼을 새소식 페이지에 표시하려면 Promotion 클래스의showPromotion()
메서드를 호출할 때isForced
파라미터를false
로 설정하세요. -
새소식 페이지 강제로 표시하기
유저에게 오늘 하루 동안 새소식 페이지를 더 이상 표시하지 않을 선택권을 제공하지 않을 때, 혹은 유저가 이미 하루 동안 다시 보지 않기를 설정했더라도, 유저의 설정을 무시하고 강제로 새소식 페이지를 표시하려면 Promotion 클래스의showPromotion()
메서드를 호출할 때isForced
파라미터를true
로 설정하세요.
isForced
파라미터를true
로 설정하면 새소식 페이지에 하루 동안 다시 보지 않기 선택 버튼이 보이지 않으며, 유저가 이미 오늘 다시 보지 않기를 선택하였더라도 강제로 새소식 페이지를 표시하게 됩니다.
공지사항을 활성화한 새소식 페이지 띄우기
공지사항 목록만으로 새소식 페이지를 표시하려면 promotionType을 PromotionType.NOTICE
으로 설정하여 Promotion 클래스의 showPromotion()
메서드를 호출하세요.
다음은 공지사항 목록을 표시하는 예제 코드입니다.
API Reference: hive.Promotion.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 |
using hive; PromotionType promotionViewType = PromotionType.NOTICE; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 공지사항 페이지를 띄움 Boolean isForced = false; Promotion.showPromotion(promotionViewType, isForced, (ResultAPI result, PromotionEventType viewEventType) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: Promotion::showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; PromotionType promotionViewType = PromotionType::NOTICE; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 공지사항 페이지를 띄움 bool isForced = false; Promotion::showPromotion(promotionViewType, isForced, [=](ResultAPI result, PromotionEventType viewEventType) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: Promotion.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import com.hive.Promotion import com.hive.ResultAPI val promotionViewType = Promotion.PromotionViewType.NOTICE // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 공지사항 페이지를 띄움 val isForced = false Promotion.showPromotion(promotionViewType, isForced, object : Promotion.PromotionViewListener { override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) { if (result.isSuccess) { // 호출 성공 } } }) |
API Reference: Promotion.INSTANCE.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import com.hive.Promotion; import com.hive.ResultAPI; Promotion.PromotionViewType promotionViewType = Promotion.PromotionViewType.NOTICE; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 공지사항 페이지를 띄움 boolean isForced = false; Promotion.INSTANCE.showPromotion(promotionViewType, isForced, (result, promotionEventType) -> { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: PromotionInterface.showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 |
import HIVEService let promotionViewType: PromotionViewType = .notice // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 공지사항 페이지를 띄움 let isForced = false PromotionInterface.showPromotion(promotionViewType, isForced: isForced) { result, viewResultType in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEPromotion showPromotion
1 2 3 4 5 6 7 8 9 10 11 12 |
#import <HIVEService/HIVEService-Swift.h> HIVEPromotionViewType promotionViewType = HIVEPromotionViewTypeNotice; // true면 '오늘 하루 다시보지 않기' 버튼을 표시하지 않음. 혹 오늘 이미 유저가 다시 보지 않도록 설정했더라도 무시하고 공지사항 페이지를 띄움 BOOL isForced = NO; [HIVEPromotion showPromotion: promotionViewType isForced: isForced handler: ^(HIVEResultAPI *result, HIVEPromotionViewResultType viewResultType) { if ([result isSuccess]) { // 호출 성공 } }]; |
특정 메뉴를 활성화한 새소식 페이지 띄우기
특정 메뉴를 활성화하여 새소식 페이지를 표시하려면 새소식 메뉴 설정시 등록된 프로모션 타입을 파라미터로 Promotion 클래스의 showNews()
메서드를 호출하세요.
다음은 특정 메뉴를 활성화하여 새소식 페이지를 표시하기 위한 예제 코드 입니다.
API Reference: hive.Promotion.showNews
1 2 3 4 5 6 7 8 9 |
using hive; String menu = "Hive 콘솔 내 등록된 프로모션 타입"; Promotion.showNews(menu, (ResultAPI result, PromotionEventType viewEventType) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: Promotion::showNews
1 2 3 4 5 6 7 8 9 10 11 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; string menu = "Hive 콘솔 내 등록된 프로모션 타입"; Promotion::showNews(menu, [=](ResultAPI result, PromotionEventType viewEventType) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: Promotion.showNews
1 2 3 4 5 6 7 8 9 10 11 12 |
import com.hive.Promotion import com.hive.ResultAPI val menu = "Hive 콘솔 내 등록된 프로모션 타입" Promotion.showNews(menu, null, object : Promotion.PromotionViewListener { override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) { if (result.isSuccess) { // 호출 성공 } } }) |
API Reference: Promotion.INSTANCE.showNews
1 2 3 4 5 6 7 8 9 10 |
import com.hive.Promotion; import com.hive.ResultAPI; String menu = "Hive 콘솔 내 등록된 프로모션 타입"; Promotion.INSTANCE.showNews(menu, null, (result, promotionEventType) -> { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: PromotionInterface.showNews
1 2 3 4 5 6 7 8 9 |
import HIVEService let menu = "Hive 콘솔 내 등록된 프로모션 타입"; PromotionInterface.showNews(menu) { result, viewResultType in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEPromotion showNews
1 2 3 4 5 6 7 8 9 |
#import <HIVEService/HIVEService-swift.h> NSString *menu = @"Hive 콘솔 내 등록된 프로모션 타입"; [HIVEPromotion showNews: menu handler: ^(HIVEResultAPI *result, HIVEPromotionViewResultType viewResultType) { if ([result isSuccess]) { // 호출 성공 } }]; |
달성한 이벤트 배너를 강조하여 새소식 페이지 띄우기
달성한 이벤트를 강조하여 새소식 페이지를 표시하려면 Promotion 클래스의 showNews()
메서드를 호출 시 달성한 이벤트 배너 번호(pid
)를 파라미터로 사용하세요. 다음은 게이머가 특정 이벤트를 달성했을 때, 달성한 이벤트 배너를 강조하여 새소식 페이지를 표시하기 위한 예제 코드 입니다.
API Reference: hive.Promotion.showNews
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 이벤트 메뉴 활성화를 위한 파라미터 설정 String menu = "event"; // 달성한 배너를 구분짓기 위한 달성한 배너의 Pid 리스트 설정 List<int> giftPidList = [101331, 121881, 253120, 100002]; // Pid 예시 // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 결과 콜백 핸들러 public void onPromotionViewCB(ResultAPI result, PromotionEventType promotionEventType) { if(result.isSuccess()){ // API 호출 성공 } } // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 hive.Promotion.showNews(menu, giftPidList, onPromotionViewCB); |
API Reference: Promotion::showCustomContents
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// 이벤트 메뉴 활성화를 위한 파라미터 설정 string menu = "event"; // 달성한 배너를 구분짓기 위한 달성한 배너의 Pid 리스트 설정 std::vector<int> giftPidList = {101331, 121881, 253120, 100002}; // Pid 예시 // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 Promotion::showNews(menu, giftPidList, [=](ResultAPI result, PromotionEventType promotionEventType){ // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 결과 콜백 핸들러 if(result.isSuccess()){ // API 호출 성공 } }); |
API Reference: com.hive.Promotion.showCustomContents
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 이벤트 메뉴 활성화를 위한 파라미터 설정 val menu: String = "event" // 달성한 배너를 구분짓기 위한 달성한 배너의 Pid 리스트 설정 val giftPidList = arrayListOf(101331, 121881, 253120, 100002) // Pid 예시 // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 Promotion.showNews(menu, giftPidList, object : Promotion.PromotionViewListener { override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) { // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 결과 콜백 리스너 if (result.isSuccess) { // API 호출 성공 } } } |
API Reference: com.hive.Promotion.showCustomContents
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// 이벤트 메뉴 활성화를 위한 파라미터 설정 String menu = "event"; // 달성한 배너를 구분짓기 위한 달성한 배너의 pid 리스트 설정 ArrayList<Integer> giftPidList = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4)); // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 Promotion.showNews(menu, giftPidList, new PromotionViewListener() { @Override public void onPromotionView(@NotNull ResultAPI result, @NotNull PromotionViewResultType promotionEventType) { // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 결과 콜백 리스너 if (result.isSuccess) { // API 호출 성공 } } }); |
API Reference: HivePromotion:showCustomContents
1 2 3 4 5 6 7 8 9 10 11 |
// 이벤트 메뉴 활성화를 위한 파라미터 설정 NSString *menu = @"event"; // 달성한 배너를 구분짓기 위한 달성한 배너의 Pid 리스트 설정 NSArray *giftPidList = @[@101331, @121881, @253120, @100002]; // Pid 예시 // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 [HIVEPromotion showNewsWithMenu:menu giftPidList:giftPidList handler:^(HIVEResultAPI * result, HIVEPromotionViewResultType type) { // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 결과 콜백 리스너 if (result.isSuccess) { // API 호출 성공 } }]; |
API Reference: HivePromotion:showCustomContents
1 2 3 4 5 6 7 8 9 10 11 |
// 이벤트 메뉴 활성화를 위한 파라미터 설정 String menu = "event" // 달성한 배너를 구분짓기 위한 달성한 배너의 Pid 리스트 설정 let giftPidList = [101331, 121881, 253120, 100002] // Pid 예시 // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 HivePromotion.showNews(menu: menu, giftPidList: giftPidList) { result, type in // 이벤트 메뉴 활성화한 새소식 페이지 띄우기 결과 콜백 리스너 if result.isSuccess { // API 호출 성공 } } |
새소식 데이터 갱신 API 추가하기
새소식 페이지 정보는 로그인 직후 서버와 1회 통신하여 전달받습니다. 게임에서 설정한 게임 언어, 게임 서버 등의 정보를 유저가 변경하는 경우 갱신이 필요합니다. 유저가 게임을 장시간 켜두고 사용하는 경우에도 최신 정보 갱신이 이루어지지 않을 수 있습니다. 유저가 게임 로비에 접속할 때 게임에서는 새소식 정보 갱신을 수동으로 진행해야 합니다. Promotion 클래스의 updatePromotionData()
메서드를 호출하여 정보를 갱신하세요.
다음은 새소식 데이터를 갱신하는 예제 코드입니다.
API Reference: hive.Promotion.updatePromotionData
1 2 3 |
using hive; Promotion.updatePromotionData(); |
API Reference: Promotion::updatePromotionData
1 2 3 4 5 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; Promotion::updatePromotionData(); |
API Reference: Promotion.updatePromotionData
1 2 3 |
import com.hive.Promotion Promotion.updatePromotionData() |
API Reference: Promotion.INSTANCE.updatePromotionData
1 2 3 |
import com.hive.Promotion; Promotion.INSTANCE.updatePromotionData(); |
API Reference: PromotionInterface.updatePromotionData
1 2 3 |
import HIVEService PromotionInterface.updatePromotionData() |
API Reference: HIVEPromoiton updatePromotionData
1 2 3 |
#import <HIVEService/HIVEService-Swift.h> [HIVEPromoiton updatePromotionData]; |
개선된 새소식 데이터 갱신 API 추가하기
- 기존 setServerID 호출 후 updatePromotionData 호출 하던 로직을 updateServerID API 1회만 호출하여도 동일 동작하도록 개선하였습니다.
- 기존 setGameLanguage 호출 후 updatePromotionData 호출 하던 로직을 updateGameLanguage API 1회만 호출하여도 동일 동작하도록 개선하였습니다.
다음은 개선된 새소식 데이터를 갱신하는 예제 코드입니다.
API Reference: hive.Promotion.updateServerId
API Reference: hive.Promotion.updateGameLanguage
1 2 3 |
using hive; Configuration.updateServerId("server_001"); Configuration.updateGameLanguage("en"); |
API Reference: Promotion.updateServerId
API Reference: Promotion.updateGameLanguage
1 2 3 4 5 6 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; Configuration::updateServerId("server_001"); Configuration::updateGameLanguage("en"); |
API Reference: Configuration.updateServerId
API Reference: Configuration.updateGameLanguage
1 2 3 4 |
import com.hive.Configuration Configuration.updateServerId("server_001") Configuration.updateGameLanguage("en") |
API Reference: com.hive.Promotion.updateServerId
API Reference: com.hive.Promotion.updateGameLanguage
1 2 3 4 |
import com.hive.Configuration; Configuration.INSTANCE.updateServerId("server_001"); Configuration.INSTANCE.updateGameLanguage("en"); |
API Reference: ConfigurationInterface.updateServerId
API Reference: ConfigurationInterface.updateGameLanguage
1 2 3 4 |
import HIVESErvice ConfigurationInterface.updateServerId("server_001") ConfigurationInterface.updateGameLanguage("en") |
API Reference: HIVEPromotion::updateServerId
API Reference: HIVEPromotion::updateGameLanguage
1 2 3 4 |
#import <HIVEService/HIVEService-Swift.h> [HIVEConfiguration updateServerId: @"server_001"]; [HIVEConfiguration updateGameLanguage: @"en"]; |