현재 작업 중인 유니티 버전이 4.x라서 페이스북 유니티 플러그인 6.2.2 버전을 사용 했습니다.
현재 최신 버전은 7.5.0 버전인데 이 버전은 유니티 5이상에서 사용 가능합니다.
메소드 명이 조금 다르거나 할 뿐이지 큰 차이는 없을 겁니다.
기본 페이스북 앱 만들기와 페이스북 플러그인 연동 작업을 완료 했다는 전제하에 핵심 부분만 적도록 하겠습니다.
우선 페이스북 내 앱에서 오픈그래프를 선택하시고 개체 유형 탭을 선택
맨 아래 있는 개체 유형 추가 버튼을 클릭하여 "Gift"라는 개체를 생성 합니다.
그 다음 오브젝트에 아이디를 가져와야 하는데
이부분에서 많이 헤맸었내요 ㅠ_ㅠ
개발자 페이지 맨 아래 보면 아래와 같이 메뉴가 있습니다.
TOOLS에 개체 브라우저를 클릭 합니다.
개체브라우저를 열고 App에서 자신의 앱을 선택 하고 Type을 클릭하면 방금 생성한 Gift라는 개체가 있습니다.
이 개체를 선택 하면 아래와 같은 화면이 나옵니다.
Id를 메모해 둡니다.
방금 메모 하신 Id를 아래 object_id에 넣으시고 호출 하시면 됩니다.
public void SendHeartGift(string userid){
string[] users = {userid};
FB.AppRequest (
"Test Send Heart Gift",
OGActionType.Send,
"Object_id",
users,
"Gift",
"",
SendHeartGiftCallback);
}
그러면 userid에게 알림 메시지가 보내집니다.
그후 받은 유저쪽에서는 아래 코드를 이용하여 선물박스를 열었을 때 페이스북에서 받은 하트를 페이스북으로 요청합니다.
public class FBGift {
public string data;
public string fbId;
public string createTime;
public string from;
public string name;
public string fromId;
}
// Gift 리스트를 가져옵니다.
public void GiftList() {
this._listGift.Clear ();
FB.API ("me/apprequests?fields=from,message,data&limit=200",
Facebook.HttpMethod.GET,
GiftListCallback);
}
private void GiftListCallback(FBResult result) {
if (result.Error == null) {
JSONNode root = JSON.Parse(result.Text.ToString());
JSONArray data = root["data"].AsArray;
for( int i = 0; i < data.Count; ++i ) {
FBGift cGift = new FBGift();
JSONNode gift = data[i];
if( gift == null ) {
continue;
}
cGift.data = gift["data"].Value.ToString();
cGift.fbId = gift["id"].Value.ToString();
cGift.createTime = gift["created_time"].Value.ToString();
JSONNode from = gift["from"];
cGift.name = from["name"].Value.ToString();
cGift.fromId = from["id"].Value.ToString();
this._listGift.Add(cGift);
}
this.onGiftListComplete();
} else {
this.onGiftListError("GifList", result.Error);
}
}
마지막으로 하트 받기를 하였으면 받은 유저쪽에서 리스트에서 object_id를 이용하여 삭제를 해주어야 무한하트를 막을 수 있습니다.
아래 코드를 이용하여 삭제해 줍니다.
public void DeleteRequestId(string id) {
string path = "/" + id;
FB.API (path,
Facebook.HttpMethod.DELETE,
DeleteRequestIdCallback);
}
private void DeleteRequestIdCallback(FBResult result) {
if (result.Error == null) {
Debug.Log("Delete Request id: " + result.Text);
} else {
Debug.LogError("Delete Request id: " + result.Error);
}
}
개발중에 대충 적어 보았습니다.
궁금한점 있으시면 댓글 남겨 주세요.
'- Unity And C#' 카테고리의 다른 글
[C#] 숫자 콤마(,) 넣기 (금액표시 유용) (0) | 2017.09.28 |
---|