22.1 Reward Invitation(beta) Example
22.1. Reward Invitation(beta) Example
Do not mix with new 3.9.0 or higher APIs.
22.1.1. Querying ongoing reward invitation event list
This section shows an example of a query of the ongoing 'reward invitation event list.
Unity Example
using KakaoGame.SDK;
using KakaoGame.SDK.Kakao;
KGKakaoInvitationEvent.LoadInvitationEvents(
(result, events) => {
if (result.isSuccess) {
// Successful invitation event list lookup
foreach (var ev in events) {
int eventId = ev.eventId;
bool isEventCardEnabled = ev.isEventCardEnabled; // Whether to show event cards
long startTime = ev.startTime; // Event start time
long endTime = ev.finishTime; // Event end time
int maxHostRewardCount = ev.maxHostRewardCount; // Maximum number of rewards the invitees can receive
string hostRewardCode = ev.hostRewardCode; // The code of the reward item that the invitee receives
string joinerRewardCode = ev.joinRewardCode; // The code of the reward item that the participant receives
string invitationUrl = ev.invitationUrl; // Invitation URL. You must enter this when sending an invitation message.
int totalJoinerCount = ev.totalJoinerCount; // The number of people who have participated in my invite so far
}
}
else {
// Fail invitation event list lookup
}
}); |
Android Example
// query of the ongoing 'reward invitation event list.
KGKakaoInvitationEvent.loadInvitationEvents(new KGResultCallback<List<KGKakaoInvitationEvent>>() {
@Override
public void onResult(KGResult<List<KGKakaoInvitationEvent>> result) {
if (result.isSuccess()) {
// Successful invitation event list lookup
List<KGKakaoInvitationEvent> invitationEventList = result.getContent(); // ongoing 'reward invitation event list
for (KGKakaoInvitationEvent invitationEvent : invitationEventList) {
int eventId = invitationEvent.getEventId();
boolean isEventCardEnabled = invitationEvent.isEventCardEnabled();
long startTime = invitationEvent.getStartTime();
long finishTime = invitationEvent.getFinishTime();
int maxHostRewardCount = invitationEvent.getMaxHostRewardCount();
String hostRewardCode = invitationEvent.getHostRewardCode();
String joinRewrdCode = invitationEvent.getJoinRewardCode();
String invitationUrl = invitationEvent.getInvitationUrl();
int totalJoinerCount = invitationEvent.getTotalJoinerCount();
}
} else {
// Fail invitation event list lookup
}
} |
iOS Example
#import <KakaoGame/KakaoGame.h>
[KGKakaoInvitationEvent loadInvitationEventsWithCompletionHandler:^(NSError *error, NSArray *invitationEvents) {
if (IS_SUCCESS(error) == YES)
{
// Successful invitation event list lookup
// ongoing 'reward invitation event list
for (KGKakaoInvitationEvent *invitationEvent in invitationEvents)
{
int eventId = invitationEvent.eventId; // Event ID
bool isEventCardEnabled = invitationEvent.isEventCardEnabled; // Whether to show event cards
long long startTime = invitationEvent.startTime; // Event start time
long long finishTime = invitationEvent.finishTime; // Event end time
int maxHostRewardCount = invitationEvent.maxHostRewardCount; // Maximum number of rewards the invitees can receive
NSString *hostRewardCode = invitationEvent.hostRewardCode; // The code of the reward item that the invitee receives
NSString *joinRewardCode = invitationEvent.joinRewardCode; // The code of the reward item that the participant receives
NSString *invitationUrl = invitationEvent.invitationUrl; // Invitation URL. You must enter this when sending an invitation message.
int totalJoinerCount = invitationEvent.totalJoinerCount; // The number of people who have participated in my invite so far
}
}
else
{
// Fail invitation event list lookup
}
}]; |
22.1.2. Querying user who invited you
This section shows an example of a query of the user who invited you.
Unity Example
using KakaoGame.SDK;
using KakaoGame.SDK.Kakao;
KGKakaoInvitationHost.LoadInvitationHosts(
EVENT_ID,
(result, hosts) => {
if (result.isSuccess) {
// Query of user who invite me successful
foreach (var host in hosts)
{
if (host != null) {
// you have someone who invited you
KGPlayer player = host.player; // player information
int totalJoinerCount = host.totalJoinerCount;
}
else {
// No player invited me
}
}
}
else {
// Query of user who invite me failed
}
}); |
Android Example
KGKakaoInvitationHost.loadInvitationHosts(eventId, new KGResultCallback<List<KGKakaoInvitationHost>>() {
@Override
public void onResult(KGResult<List<KGKakaoInvitationHost>> result) {
writeLog("KGKakaoInvitationHost.loadInvitationHost: " + result);
if (result.isSuccess()) {
// Query of user who invite me successful
List<KGKakaoInvitationHost> invitationHosts = result.getContent(); // hosts information
if (invitationHosts != null && invitationHosts.size() > 0) {
// you have someone who invited you
for (KGKakaoInvitationHost invitationHost : invitationHosts) {
KGPlayer player = invitationHost.getPlayer();
int totalJoinerCount = invitationHost.getTotalJoinerCount();
}
} else {
// No player invited me
}
} else {
// Query of user who invite me failed
}
}
}); |
iOS Example
#import <KakaoGame/KakaoGame.h>
[KGKakaoInvitationHost loadInvitationHostsWithEventId:eventId completionHandler:^(NSError *error, NSArray *invitationHosts) {
if (IS_SUCCESS(error) == YES)
{
// Query of user who invite me successful
for (KGKakaoInvitationHost* invitationHost in invitationHosts)
{
if (invitationHost != nil)
{
// you have someone who invited you
KGPlayer *player = invitationHost.player; // player information
int totalJoinerCount = invitationHost.totalJoinerCount;
}
else
{
// No player invited me
}
}
}
else
{
// Query of user who invite me failed
}
}]; |
22.1.3. View a list of players who have participated in my invitation
This section shows an example of a query of View a list of players who have participated in my invitation.
Unity Example
using KakaoGame.SDK;
using KakaoGame.SDK.Kakao;
KGKakaoInvitationJoiner.LoadInvitationJoiners(
EVENT_ID,
(result, joiners) => {
if (result.isSuccess) {
// Successful viewed participate player list with my invitation
foreach (var joiner in joiners) {
KGPlayer player = joiner.player;
string hostRewardCode = joiner.hostRewardCode;
KGKakaoInvitationRewardState hostRewardState = joiner.hostRewardState;
string joinerRewardCode = joiner.joinRewardCode;
KGKakaoInvitationRewardState joinerRewardState = joiner.joinRewardState;
long joinTime = joiner.joinTime; // Join time
}
}
else {
// Fail viewed participate player list with my invitation
}
}); |
Android Example
KGKakaoInvitationJoiner.loadInvitationJoiners(eventId, new KGResultCallback<List<KGKakaoInvitationJoiner>>() {
@Override
public void onResult(KGResult<List<KGKakaoInvitationJoiner>> result) {
if (result.isSuccess()) {
// Successful viewed participate player list with my invitation
List<KGKakaoInvitationJoiner> invitationJoinerList = result.getContent(); // list of players who have participated in my invitation
for (KGKakaoInvitationJoiner invitationJoiner : invitationJoinerList) {
KGPlayer player = invitationJoiner.getPlayer();
int hostRewardCode = invitationJoiner.getHostRewardCode();
KGKakaoInvitationRewardState hostRewardState = invitationJoiner.getHostRewardState();
int joinRewardCode = invitationJoiner.getJoinRewardCode();
KGKakaoInvitationRewardState joinRewardState = invitationJoiner.getJoinRewardState();
long joinTime = invitationJoiner.getJoinTime();
}
} else {
// Fail viewed participate player list with my invitation
}
}
}); |
iOS Example
#import <KakaoGame/KakaoGame.h>
[KGKakaoInvitationJoiner loadInvitationJoinersWithEventId:eventId completionHandler:^(NSError *error, NSArray *invitationJoiners) {
if (IS_SUCCESS(error) == YES)
{
// Successful viewed participate player list with my invitation
// list of players who have participated in my invitation
for (KGKakaoInvitationJoiner *invitationJoiner in invitationJoiners)
{
KGPlayer *player = invitationJoiner.player;
int hostRewardCode = invitationJoiner.hostRewardCode;
KGKakaoInvitationRewardState hostRewardState = invitationJoiner.hostRewardState;
NSString *joinRewardCode = invitationJoiner.joinRewardCode;
KGKakaoInvitationRewardState joinRewardState = invitationJoiner.joinRewardState;
long long joinTime = invitationJoiner.joinTime; // Join time
}
}
else
{
// Fail viewed participate player list with my invitation
}
}]; |
22.1.4. Send invitation message with Kakao Talk
This is an example of sending an invitation message to KakaoTalk.
By default, this is the same as sending a regular invitation, but you must use the templateId for compensating invites and add an invitation_event_id.
(Guide : 20. Kakaotalk Message Template V2)
Unity
using Kakaogame.SDK;
// [TODO] Get Kakao profile information from invitable friends list.
KGKakaoProfile kakaoProfile;
// [TODO] Set invitation message template ID.
string templateId = "1679";
// [TODO] Add the required arguments to the invitation message
Dictionary<string, object> argumentDic = new Dictionary<string, object>() {
{"name", "Nickname"},
{"iphoneMarketParam" : "test"},
{"iphoneExecParam", "test"},
{"sender_name", "iOSTester"},
{"invitation_event_id", 29} // Add only for compensated invitations
};
// Send an invitation message to KakaoTalk.
KGKakaoTalkMessage.SendNewInviteMessage(
kakaoProfile,
templateId,
argumentDic,
(result) => {
if (result.isSuccess) {
// Send invitation message to KakaoTalk succeeded.
}
else if (result.code == KGResultCode.MessageSettingDisabled) {
// The recipient set to unsubscribe.
}
else if (result.code == KGResultCode.ExceedDailyUsage) {
// Occurs when one day exceeds a day's quota (regardless of recipient) that can be sent for a specific app.
}
else if (result.code == KGResultCode.ExceedMonthlyUsage) {
// Occurs when one month exceeds a month's quota that a specific person can send to a particular app.
}
else {
// Failed to send invitation message to KakaoTalk.
}
}); |
Android
// [TODO] Get Kakao profile information from invitable friends list.
KGKakaoProfile kakaoProfile;
// [TODO] Set invitation message template ID.
String templateId;
// [TODO] Add the required arguments to the invitation message.
Map<String, String> args = new LinkedHashMap<String, String>();
String nickname = ((KGKakaoProfile)KGLocalPlayer.getCurrentPlayer().getIdpProfile()).getNickname();
args.put("${sender_name}", nickname);
args.put("${invitation_event_id}", ""); // Add only for compensated invitations
// Send an invitation message to KakaoTalk.
KGKakaoTalkMessage.sendNewInviteMessage(kakaoProfile, templateId, args, new KGResultCallback<Boolean>() {
@Override
public void onResult(KGResult<Boolean> result) {
if (result.isSuccess()) {
// Send invitation message to KakaoTalk succeeded.
} else {
// Fail
if (result.getCode() == KGResult.KGResultCode.MESSAGE_SETTING_DISABLE) {
// The recipient set to unsubscribe.
} else if (result.getCode() == KGResult.KGResultCode.EXCEED_DAILY_USAGE) {
// Occurs when one day exceeds a day's quota (regardless of recipient) that can be sent for a specific app.
} else if (result.getCode() == KGResult.KGResultCode.EXCEED_MONTHLY_USAGE) {
// Occurs when one month exceeds a month's quota that a specific person can send to a particular app.
} else {
// Other errors...
}
}
}
}); |
iOS
#import <KakaoGame/KakaoGame.h>
// [TODO] Get Kakao profile information from invitable friends list.
KGKakaoProfile *kakaoProfile; // Kakao profile (KGKakaoProfile Object)
// [TODO] Set invitation message template ID.
NSString *templateId = @"1679";
// [TODO] Add the required arguments to the invitation message.
NSDictionary* argumentDic = @{@"name" : @"Nickname", @"iphoneMarketParam" : @"test", @"iphoneExecParam" : @"test", @"sender_name" : @"iOSTester", @"invitation_event_id" : @(29)};
// Send an invitation message to KakaoTalk.
//invitation_event_id: Add only for compensated invitations
[KGKakaoTalkMessage sendNewInviteMessageWithKakaoProfile:kakaoProfile
templateId:templateId
argumentDic:argumentDic
completionHandler:^(NSError *error) {
if (IS_SUCCESS(error) == YES)
{
// Send invitation message to KakaoTalk succeeded.
}
else
{
// Failed to send invitation message to KakaoTalk.
if (error.code == KGErrorMessageSettingDisabled)
{
// The recipient set to unsubscribe.
}
else if (error.code == KGErrorExceedDailyUsage)
{
// Occurs when one day exceeds a day's quota (regardless of recipient) that can be sent for a specific app.
}
else if (error.code == KGErrorExceedMonthlyUsage)
{
// Occurs when one month exceeds a month's quota that a specific person can send to a particular app.
}
else if (error.code == KGErrorNotKakaoTalkUser)
{
// The user is not a KakaoTalk user.
}
else
{
// Other errors...
}
}
}]; |