Hive는 유저가 자신의 계정과 Facebook 계정과 연동할 수 있는 기능을 제공합니다. 이에 따라 여러분은 Hive API를 이용하여 유저의 Facebook 프로필과 유저의 Facebook 친구들 목록을 조회할 수 있고, 유저가 Facebook 친구에게 메시지를 전송하게 할 수 있으며, 유저가 Facebook 담벼락에 글을 등록하게 할 수 있습니다.
Facebook 기능을 이용하려면, 유저가 Facebook에 로그인 되어 있어야 합니다. Facebook 기능을 수행하려고 할 때 유저가 Facebook에 로그인 되어 있지 않다면 Hive 클라이언트가 Facebook의 로그인 페이지를 띄워줍니다.
Facebook 프로필 보기
유저의 Facebook 프로필 정보를 조회하려면 SocialFacebook 클래스의 getMyProfile()
메서드를 호출하세요. 조회한 프로필 정보는 ProfileFacebook 목록에 담겨 반환됩니다.
API Reference: hive.SocialFacebook.getMyProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Facebook 프로필 정보 결과 콜백 핸들러 public void onProfileFacebookCB(ResultAPI result, List<ProfileFacebook> profileList) { if(result.isSuccess() && profileList != null){ foreach (ProfileFacebook profile in profileList) { // Facebook 프로필 정보를 확인하세요. } } } // Facebook 프로필 정보 조회하기 hive.SocialFacebook.getMyProfile(onProfileFacebookCB); |
API Reference: SocialFacebook::getMyProfile
1 2 3 4 5 6 7 8 9 10 |
// Facebook 프로필 정보 조회하기 SocialFacebook::getMyProfile([=](ResultAPI result, std::vector<ProfileFacebook> profileList){ // Facebook 프로필 정보 결과 콜백 함수 if(result.isSuccess() && profileList != nullptr) { for(ProfileFacebook profile : profileList){ // Facebook 프로필 정보를 확인하세요. } } }); |
API Reference: com.hive.SocialFacebook.getMyProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Facebook 프로필 정보 조회하기 SocialFacebook.getMyProfile(new SocialFacebook.ProfileListener() { @Override public void onProfile(ResultAPI result, List<ProfileFacebook> profileList) { // Facebook 프로필 정보 결과 콜백 리스너 if( result.isSuccess() && profileList != null){ for (ProfileFacebook profileFacebook : profileList) { // Facebook 프로필 정보를 확인하세요. } } } }); |
API Reference: HIVESocialFacebook:getMyProfile
1 2 3 4 5 6 7 8 9 10 |
// Facebook 프로필 정보 조회하기 [HIVESocialFacebook getMyProfile:^(HIVEResultAPI *result, NSArray<HIVEProfileFacebook *> *profileList) { // Facebook 프로필 정보 결과 콜백 핸들러 if( [result isSuccess] && profileList != nil) { for (HIVEProfileFacebook *profileFacebook in profileList) { // Facebook 프로필 정보를 확인하세요. } } }]; |
Facebook 친구 목록 조회하기
유저의 Facebook 친구 목록을 조회하려면 SocialFacebook 클래스의 getFriends()
메서드를 호출하세요.
다음은 유저의 Facebook 친구 목록을 조회하는 예제 코드입니다.
API Reference: hive.SocialFacebook.getFriends
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Facebook 친구 목록 조회 결과 콜백 핸들러 public void onFriendsFacebookCB(ResultAPI result, List<ProfileFacebook> profileList) { if(result.isSuccess()){ foreach(ProfileFacebook profile in profileList) { // Facebook 친구 목록을 조회하세요. } } } // Facebook 친구 목록 조회하기 hive.SocialFacebook.getFriends(onFriendsFacebookCB); |
API Reference: SocialFacebook::getFriends
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Facebook 친구 목록 조회하기 SocialFacebook::getFriends([=](ResultAPI result, std::vector<ProfileFacebook> profileList){ // Facebook 친구 목록 조회 결과 콜백 함수 if(result.isSuccess() && profileList != nullptr) { for(ProfileFacebook profile : profileList) { // Facebook 친구 목록을 조회하세요. } } }); |
API Reference: com.hive.SocialFacebook.getFriends
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Facebook 친구 목록 조회하기 SocialFacebook.getFriends(new SocialFacebook.ProfileListener() { @Override public void onProfile(ResultAPI result, List<ProfileFacebook> profileList) { // Facebook 친구 목록 조회 결과 콜백 리스너 if(result.isSuccess() && profileList != null){ for (ProfileFacebook profile : profileList) { // Facebook 친구 목록을 조회하세요. } } } }); |
API Reference: HIVESocialFacebook:getFriends
1 2 3 4 5 6 7 8 9 10 |
// Facebook 친구 목록 조회하기 [HIVESocialFacebook getFriends:^(HIVEResultAPI *result, NSArray<HIVEProfileFacebook *> *profileList) { // Facebook 친구 목록 조회 결과 콜백 핸들러 if([result isSuccess] && profileList != nil) { for (HIVEProfileFacebook *profileFacebook in profileList) { // Facebook 친구 목록을 조회하세요. } } }]; |
Facebook 친구 초대하기
Hive 계정에 Facebook 계정을 연동한 유저는 유저의 Facebook 친구들을 유저가 이용 중인 게임에 초대할 수 있습니다. 유저가 Facebook 친구에게 초대 메시지를 보낼 수 있는 창을 띄우려면, SocialFacebook 클래스의 showInvitationDialog()
메서드를 호출하세요.
함수 파라미터로 전달하는 FacebookMessage 오브젝트에는 수신자, 창 제목, 메시지 내용 필드가 있습니다. 이 중 수신자 정보는 Facebook 자체적으로 처리하게 되어 있기 때문에 Hive가 수신자 정보를 알 수가 없습니다. 때문에 수신자 정보는 빈 목록으로 보내세요. 창 제목이나 메시지 내용을 채워도 Facebook이 스팸으로 인식할 수 있기 때문에, 유저가 직접 채우도록, 필드를 채우지 않고 보내기를 권장합니다.
다음은 유저가 Facebook 친구에게 초대 메시지를 보내는 예제 코드입니다.
API Reference: hive.SocialFacebook.showInvitationDialog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Facebook 초대 메시지 설정 FacebookMessage content = new FacebookMessage (); content.message = "Message"; content.dialogTitle = "Title"; content.recipients = null; // 초대 시는 사용하지 않음 content.data = "hidden payload data"; // Facebook 초대 메시지 전송 결과 콜백 핸들러 public void onShowInvitationDialogCB(ResultAPI result, List<String> invitedUserList) { if(result.isSuccess() && invitedUserList != null){ foreach(String invitedUser : invitedUserList){ // Facebook 초대된 유저를 조회하세요. } } } // Facebook 초대 메시지 전송을 위한 초대 대화 상자 띄우기 hive.SocialFacebook.showInvitationDialog(messageContent, onShowInvitationDialogCB); |
API Reference: SocialFacebook::showInvitationDialog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Facebook 초대 메시지 설정 FacebookMessage content = new FacebookMessage(); content.message = "Message"; content.dialogTitle = "Title"; content.recipients = nullptr; // 초대 시는 사용하지 않음 content.data = "hidden payload data"; // Facebook 초대 메시지 전송을 위한 초대 대화 상자 띄우기 SocialFacebook::showInvitationDialog(content, [=](ResultAPI result, std::vector<String> invitedUserList) { // Facebook 초대 메시지 전송 결과 콜백 함수 if (result.isSuccess() && invitedUserList != nullptr) { for(String invitedUser : invitedUserList) { // Facebook 초대된 유저를 조회하세요. } } }); |
API Reference: com.hive.SocialFacebook.showInvitationDialog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Facebook 초대 메시지 설정 SocialFacebook.SocialFacebookMessage content = new SocialFacebookMessage(); content.message = "Message"; content.dialogTitle = "Title"; content.recipients = null; // 초대 시는 사용하지 않음 content.data = "hidden payload data"; // Facebook 초대 메시지 전송을 위한 초대 대화 상자 띄우기 SocialFacebook.showInvitationDialog(content, new SocialFacebook.ShowInvitationDialogListener() { @Override public void onShowInvitationDialog(ResultAPI result, List<String> invitedUserList) { // Facebook 초대 메시지 전송 결과 콜백 리스너 if (result.isSuccess() && invitedUserList != null) { for (String invitedUser : invitedUserList) { // Facebook 초대된 유저를 조회하세요. } } } }); |
API Reference: HIVESocialFacebook:showInvitationDialog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Facebook 초대 메시지 설정 HIVESocialFacebookMessage *content = [[HIVESocialFacebookMessage alloc] init]; content.message = @"Message"; content.dialogTitle = @"Title"; content.recipients = nil; // 초대 시는 사용하지 않음 content.data = @"hidden payload data"; // Facebook 초대 메시지 전송을 위한 초대 대화 상자 띄우기 [HIVESocialFacebook showInvitationDialog:content handler:^(HIVEResultAPI *result, NSArray<NSString *> *invitedUserList) { // Facebook 초대 메시지 전송 결과 콜백 핸들러 if([result isSuccess] && invitedUserList != nil) { for(NSString *invitedUser in invitedUserList) { // Facebook 초대된 유저를 조회하세요. } } }]; |
Facebook 친구에게 메시지 보내기
유저의 Facebook 친구에게 메시지를 보내려면 SocialFacebook 클래스의 sendMessageFacebook()
메서드를 호출하세요. 함수의 파라미터로 전달하는 FacebookMessage 오브젝트에는 메시지 내용 뿐만 아니라, 부가 정보를 함께 담아 보내야 합니다.
다음은 한 명의 Facebook 친구에게 메시지를 보내는 예제 코드입니다.
API Reference: hive.SocialFacebook.sendMessageFacebook
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Facebook 메시지 설정 FacebookMessage content = new FacebookMessage (); content.message = "Message"; content.dialogTitle = "Title"; content.recipients = new List<String> {"수신할 친구의 facebook ID"}; content.data = "hidden payload data"; // Facebook 메시지 전송 결과 콜백 핸들러 public void onSendMessageFacebookCB(ResultAPI result) { if(result.isSuccess()){ // API 호출 성공 } } // Facebook 메시지 전송하기 hive.SocialFacebook.sendMessageFacebook(content, onSendMessageFacebookCB); |
API Reference: SocialFacebook::sendMessageFacebook
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Facebook 메시지 설정 FacebookMessage content; content.message = "Message"; content.dialogTitle = "Title"; std::vector<std::string> recipients = {"수신할 친구의 facebook ID"}; content.recipients = recipients; content.data = "hidden payload data"; // Facebook 메시지 전송하기 SocialFacebook::sendMessageFacebook(content, [=](ResultAPI result){ // Facebook 메시지 전송 결과 콜백 함수 if(result.isSuccess()) { // API 호출 성공 } }); |
API Reference: com.hive.SocialFacebook.sendMessageFacebook
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Facebook 메시지 설정 SocialFacebook.SocialFacebookMessage content = new SocialFacebookMessage(); content.message = "Message"; content.dialogTitle = "Title"; content.recipients = new String[]{"수신할 친구의 facebook ID"}; content.data = "hidden payload data"; // Facebook 메시지 전송하기 SocialFacebook.sendMessageFacebook(content, new SocialFacebook.SendMessageFacebookListener() { @Override public void onSendMessageFacebook(ResultAPI result) { // Facebook 메시지 전송 결과 콜백 리스너 if(result.isSuccess()){ // API 호출 성공 } } }); |
API Reference: HIVESocialFacebook:sendMessageFacebook
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Facebook 메시지 설정 HIVESocialFacebookMessage *content = [[HIVESocialFacebookMessage alloc] init]; content.message = @"Message"; content.dialogTitle = @"Title"; content.recipients = [NSArray arrayWithObject:@"수신할 친구의 facebook ID", nil]; content.data = @"hidden payload data"; // Facebook 메시지 전송하기 [HIVESocialFacebook sendMessageFacebook:content handler:^(HIVEResultAPI *result) { // Facebook 메시지 전송 결과 콜백 핸들러 if([result isSuccess]){ // API 호출 성공 } }]; |
Facebook 담벼락에 뉴스 피드 남기기
Hive는 게임 홍보의 한 방법으로, 유저가 유저의 Facebook 담벼락에 여러분이 작성한 뉴스 피드를 게시할 수 있는 기능을 제공합니다. 뉴스 피드는 제목, 글, 이미지로 구성할 수 있으며, 컨텐트를 눌렀을 때 이동할 페이지 링크를 설정할 수 있습니다.
게시글에 첨부되는 이미지의 크기에 따라 Facebook에 글이 게시되는 형태가 달라집니다. 권장하는 이미지 크기는 다음과 같습니다. 이미지 크기에 대한 자세한 내용을 보려면 Facebook 개발자 사이트를 참고하세요.
- 크기: 600×315 px 이상
- 이미지 비율: 1.91:1 (가로:세로 비율. 세로형 이미지에서는 반대)
유저가 뉴스 피드를 남기게 하려면 SocialFacebook 클래스의 postFacebookWithContentURL()
메서드를 호출하세요. 함수의 첫 번째 파라미터로 전달하는 contentURL(string)에는 뉴스 피드에 남기려는 콘텐츠 URL을 담아 보내야 합니다.
다음은 유저의 Facebook 담벼락에 올릴 뉴스 피드와 함께 유저가 코멘트를 작성할 수 있는 편집 창을 띄우는 예제 코드입니다.
API Reference: hive.SocialFacebook.postFacebookWithContentURL
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Facebook 게시글 정보 URL String contentURL = "contentURL"; // Facebook 게시글 등록 결과 콜백 핸들러 public void onPostFacebookCB(ResultAPI result) { if(result.isSuccess()){ // API 호출 성공 } } // Facebook 게시글 등록 hive.SocialFacebook.postFacebookWithContentURL(contentURL, onPostFacebookCB); |
API Reference: SocialFacebook::postFacebookWithContentURL
1 2 3 4 5 6 7 8 9 |
// Facebook 게시글 정보 URL std::string contentURL = "contentURL"; // Facebook 게시글 등록 SocialFacebook::postFacebookWithContentURL(contentURL, [=](ResultAPI result){ // Facebook 게시글 등록 결과 콜백 함수 if(result.isSuccess()){ // API 호출 성공 } }); |
API Reference: com.hive.SocialFacebook.postFacebookWithContentURL
1 2 3 4 5 6 7 8 9 10 11 12 |
// Facebook 게시글 정보 URL String contentURL = "contentURL"; // Facebook 게시글 등록 SocialFacebook.postFacebookWithContentURL(contentURL, new SocialFacebook.PostFacebookListener() { @Override public void onPostFacebook(ResultAPI result) { // Facebook 게시글 등록 결과 콜백 리스너 if(result.isSuccess()){ // API 호출 성공 } } }); |
API Reference: HIVESocialFacebook::postFacebookWithContentURL:handler:
1 2 3 4 5 6 7 8 9 10 11 |
// Facebook 게시글 정보 URL NSString contentURL = @"contentURL"; // Facebook 게시글 등록 [HIVESocialFacebook postFacebookWithContentURL:content handler:^(HIVEResultAPI *result) { // Facebook 게시글 등록 결과 콜백 핸들러 if([result isSuccess]{ // API 호출 성공 }) }]; |
참고: Facebook 기능 이용 관련 주요 클래스
Facebook 기능을 사용하기 위한 SocialFacebook API를 이용할 때 필요한 오브젝트들입니다.
ProfileFacebook 클래스
Facebook과 계정이 연동된 유저의 Facebook 프로필 정보는 ProfileFacebook
클래스로 정의하며, 다음의 정보들로 구성됩니다.
Name | Type | Description | Returned |
---|---|---|---|
uid | String | Facebook이 발급한 app-scoped 유저 ID | 항상 |
String | Facebook에 설정된 유저의 이메일 주소.. | 유저가 Facebook에 본인의 이메일 주소가 공유 가능하도록 권한을 설정했을 때만 제공됨 | |
username | String | Facebook에 설정된 유저의 이름 | 선택 |
profileImageUrl | String | Facebook에 설정된 유저의 프로파일 이미지 URL | 선택 |
FacebookMessage 클래스
친구에게 보내는 Facebook 메시지는 FacebookMessage 클래스로 정의합니다.
Name | Type | Description | Required |
---|---|---|---|
recipients | String 목록
|
메시지를 수신할 Facebook 친구들의 Facebook ID 목록. 주의. 발송 메시지가 초대 메시지일 때는 비어 있는 상태로 보내세요. |
필수 |
dialogTitle | String(50) | 메시지 대화 상자의 제목 | 선택 |
message | String | 메시지 내용 | 선택 |
data | String(255) | 메시지와 함께 전달할 숨김 데이터 | 선택 |