이 글은 PC 버전 TISTORY에 최적화 되어있습니다.
player 관련 SDK
현재 플레이어와 관련된 함수와 프로퍼티들을 포함하고 있습니다. (FBInstant.player로 접근)
getID( )
플레이어를 위한 유니크한 식별자로서 아이디를 줌. 페이스북 유저들의 플레이어 아이디는 지속적으로 페북에 의해 관리되며, 게임에 적용된다고 합니다. 이 함수는 FBInstant.initializeAsync()로부터 resolve를 받기 전에 실행시키지말라고 합니다. (이 부분에 대해서는 수차례 언급하고 있으니 앞으로는 생략하도록 하겠습니다.)
Examples
// This function should be called after FBInstant.initializeAsync() // resolves. var playerID = FBInstant.player.getID();
Returns string? 플레이어의 유일한 식별자를 반환
getName( )
플레이어의 지역화된 이름입니다. 이 함수는 FBInstant.startGameAsync()가 해결 될 때까지 호출되어서는 안됩니다.
Examples
// This function should be called after FBInstant.startGameAsync() // resolves. var playerName = FBInstant.player.getName();
Returns string?
getPhoto( )
플레이어의 공개 프로필 사진에 대한 URL입니다. 사진은 항상 정사각형이며 크기는 최소 200x200입니다. FBInstant.startGameAsync()이 완료되기 전에는 항상 null 반환
WARNING: CORS로 인해 게임 캔버스에서 이러한 사진을 사용하면 오염되었을 수 있으므로 캔버스 데이터가 추출되지 않습니다. 이를 방지하려면 사용하는 이미지의 교차 출처 속성을 '익명'으로 설정하십시오. 'anonymous'.
Examples
var playerImage = new Image(); playerImage.crossOrigin = 'anonymous'; // This function should be called after FBInstant.startGameAsync() // resolves. playerImage.src = FBInstant.player.getPhoto();
Returns string?
getSignedPlayerInfoAsync( )
플레이어의 고유 식별자와 더불어 ID가 실제로 페이스북에서 무단으로 조작되지 않았는지 확인하는 서명까지 가져옵니다. (이 부분은 정확한 테스트가 필요합니다. 테스트 후 추가로 설명을 붙이도록 하겠습니다.)
Parameters
requestPayload
string? 서명된 Response에 포함할 개발자 지정 페이로드.
Examples
// This function should be called after FBInstant.initializeAsync() // resolves. FBInstant.player.getSignedPlayerInfoAsync('my_metadata') .then(function (result) { // The verification of the ID and signature should happen on server side. SendToMyServer( result.getPlayerID(), // same value as FBInstant.player.getID() result.getSignature(), 'GAIN_COINS', 100); });
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<SignedPlayerInfo> (then에 SignedPlayerInfo가 들어올 것임)
getDataAsync( )
현재 플레이어의 지정된 클라우드 저장소에서 데이터 되찾아오기
Parameters
Examples
FBInstant.player
.getDataAsync(['achievements', 'currentLife'])
.then(function(data) {
console.log('data is loaded');
var achievements = data['achievements'];
var currentLife = data['currentLife'];
});
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Object> 키 값 쌍의 객체를 반환함
setDataAsync( )
현재 플레이어의 지정된 클라우드 저장소에 데이터를 저장. 각 플레이어마다 최대 1MB 데이터를 저장할 수 있음.
Parameters
data
Object 저장이 필요한 키-값 쌍의 객체. 직렬화 가능한 값만 가능합니다.
Examples
FBInstant.player
.setDataAsync({
achievements: ['medal1', 'medal2', 'medal3'],
currentLife: 300,
})
.then(function() {
console.log('data is set');
});
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise (promise가 resolove 됬다는 것은 반드시 입력된 데이터가 저장되었다는 것은 아니다. 데이터가 저장되도록 예약되었음을 뜻합니다. 그리고 player.getDataAsync를 통해 값을 사용할 수 있게 되었다는 것을 알립니다.)
flushDataAsync( )
플레이어의 변경된 데이터를 지정된 클라우드 저장소로 즉시 변경시키기 위해 사용. 값이 비싼 기능이기때문에 즉시 값이 변경되어야하는 때에 사용해야함. 중요하지 않은 변경은 플랫폼의 뒷단에 맡기는게 좋다. 이 함수의 결과가 아직 보류 중일 때 player.setDataAsync 호출은 거부됨
Examples
FBInstant.player
.setDataAsync({
achievements: ['medal1', 'medal2', 'medal3'],
currentLife: 300,
})
.then(FBInstant.player.flushDataAsync)
.then(function() {
console.log('Data persisted to FB!');
});
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise (성공 시에만 resolve 됨)
getStatsAsync( )
현재 플레이어의 지정된 클라우드 저장소에서 통계를 가져옴
Parameters
Examples
FBInstant.player
.getStatsAsync(['level', 'zombiesSlain'])
.then(function(stats)) {
console.log('stats are loaded');
var level = stats['level'];
var zombiesSlain = stats['zombiesSlain'];
});
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Object> (존재하는 경우 키-값 형태의 객체 반환)
setStatsAsync( )
통계를 현재 플레이어의 지정된 클라우드 저장소에 저장하도록 설정합니다.
Parameters
stats
Object 클라우드 스토리지에 통계로 저장되어야하는 키 - 값 쌍을 포함하는 객체로, 플레이어 참여에 도움이되는 다양한 방법으로 표시되거나 사용될 수 있습니다. 객체는 숫자 값만 포함해야합니다. 숫자가 아닌 값을 사용하면 전체 수정이 거부됩니다.
Examples
FBInstant.player
.setStatsAsync({
level: 5,
zombiesSlain: 27,
})
.then(function() {
console.log('data is set');
});
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise (resolve 되었다고 데이터가 저장되었음을 의미하진 않음. 데이터 유효성이 확인되고 예약되었음을 의미. player.getStatsAsync에서 사용할 수 있음)
incrementStatsAsync( )
현재 플레이어의 지정된 클라우드 저장소에 저장된 통계 값을 증가시킵니다.
Parameters
increments
Object 클라우드 저장소에서 각 통계를 얼마나 증가 시킬지 나타내는 키 - 값 쌍을 포함하는 객체입니다. 객체는 숫자 값만 포함해야합니다. 숫자가 아닌 값을 사용하면 전체 수정이 거부됩니다.
Examples
FBInstant.player
.incrementStatsAsync({
level: 1,
zombiesSlain: 17,
rank: -1,
})
.then(function(stats)) {
console.log('increments have been made! New values');
var level = data['level'];
var zombiesSlain = data['zombiesSlain'];
});
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Object> (resolve 되었다고 데이터가 저장되었음을 의미하진 않음. 데이터 유효성이 확인되고 예약되었음을 의미. player.getStatsAsync에서 사용할 수 있음)
getConnectedPlayersAsync( )
현재 플레이어에 연결된 플레이어에 대한 정보가 들어있는 ConnectedPlayer 개체의 배열을 가져옵니다.
Examples
var connectedPlayers = FBInstant.player.getConnectedPlayersAsync()
.then(function(players) {
console.log(players.map(function(player) {
return {
id: player.getID(),
name: player.getName(),
}
}));
});
// [{id: '123456789', name: 'Paul Atreides'}, {id: '987654321', name: 'Duncan Idaho'}]
- Throws NETWORK_FAILURE
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Array<ConnectedPlayer>> FBInstant.startGameAsync() 이전에는 resolve 하지 않음 연결된 플레이어 개체 목록을 반환
canSubscribeBotAsync( )
플레이어가 게임 봇을 가입 할 수 있는지 여부에 따라 promise가 반환됩니다.
Examples
// This function should be called before FBInstant.player.subscribeBotAsync()
FBInstant.player.canSubscribeBotAsync().then(
can_subscribe => console.log(can_subscribe)
);
// 'true'
Returns Promise<boolean> 플레이어가 봇을 구독할 수 있는지 없는지 여부. 개발자는 subscribeBotAsync 호출 전에 무조건 이 함수를 먼저 호출해야합니다. 플레이어는 특정 게임에 대해 봇 구독 대화상자를 한번 볼 수 있습니다.
subscribeBotAsync( )
플레이어가 게임과 관련된 봇을 구독하도록 요청하십시오. 구독 실패시 API가 거부합니다. 그렇지 않으면 플레이어가 게임 봇을 구독합니다.
Examples
FBInstant.player.subscribeBotAsync().then(
// Player is subscribed to the bot
).catch(function (e) {
// Handle subscription failure
});
- Throws INVALID_PARAM
- Throws PENDING_REQUEST
- Throws CLIENT_REQUIRES_UPDATE
Returns Promise 플레이어가 성공적으로 게임 봇을 구독하면 resolve, 요청 실패나 플레이어가 구독을 하지 않기로 선택하면 reject.
getDataAsync( )
현재 플레이어의 지정된 클라우드 저장소에서 데이터 되찾아오기
Parameters
Examples
FBInstant.player .getDataAsync(['achievements', 'currentLife']) .then(function(data) { console.log('data is loaded'); var achievements = data['achievements']; var currentLife = data['currentLife']; });
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Object> 키 값 쌍의 객체를 반환함
setDataAsync( )
현재 플레이어의 지정된 클라우드 저장소에 데이터를 저장. 각 플레이어마다 최대 1MB 데이터를 저장할 수 있음.
Parameters
data
Object 저장이 필요한 키-값 쌍의 객체. 직렬화 가능한 값만 가능합니다.
Examples
FBInstant.player .setDataAsync({ achievements: ['medal1', 'medal2', 'medal3'], currentLife: 300, }) .then(function() { console.log('data is set'); });
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise (promise가 resolove 됬다는 것은 반드시 입력된 데이터가 저장되었다는 것은 아니다. 데이터가 저장되도록 예약되었음을 뜻합니다. 그리고 player.getDataAsync를 통해 값을 사용할 수 있게 되었다는 것을 알립니다.)
flushDataAsync( )
플레이어의 변경된 데이터를 지정된 클라우드 저장소로 즉시 변경시키기 위해 사용. 값이 비싼 기능이기때문에 즉시 값이 변경되어야하는 때에 사용해야함. 중요하지 않은 변경은 플랫폼의 뒷단에 맡기는게 좋다. 이 함수의 결과가 아직 보류 중일 때 player.setDataAsync 호출은 거부됨
Examples
FBInstant.player .setDataAsync({ achievements: ['medal1', 'medal2', 'medal3'], currentLife: 300, }) .then(FBInstant.player.flushDataAsync) .then(function() { console.log('Data persisted to FB!'); });
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise (성공 시에만 resolve 됨)
getStatsAsync( )
현재 플레이어의 지정된 클라우드 저장소에서 통계를 가져옴
Parameters
Examples
FBInstant.player .getStatsAsync(['level', 'zombiesSlain']) .then(function(stats)) { console.log('stats are loaded'); var level = stats['level']; var zombiesSlain = stats['zombiesSlain']; });
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Object> (존재하는 경우 키-값 형태의 객체 반환)
setStatsAsync( )
통계를 현재 플레이어의 지정된 클라우드 저장소에 저장하도록 설정합니다.
Parameters
stats
Object 클라우드 스토리지에 통계로 저장되어야하는 키 - 값 쌍을 포함하는 객체로, 플레이어 참여에 도움이되는 다양한 방법으로 표시되거나 사용될 수 있습니다. 객체는 숫자 값만 포함해야합니다. 숫자가 아닌 값을 사용하면 전체 수정이 거부됩니다.
Examples
FBInstant.player .setStatsAsync({ level: 5, zombiesSlain: 27, }) .then(function() { console.log('data is set'); });
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise (resolve 되었다고 데이터가 저장되었음을 의미하진 않음. 데이터 유효성이 확인되고 예약되었음을 의미. player.getStatsAsync에서 사용할 수 있음)
incrementStatsAsync( )
현재 플레이어의 지정된 클라우드 저장소에 저장된 통계 값을 증가시킵니다.
Parameters
increments
Object 클라우드 저장소에서 각 통계를 얼마나 증가 시킬지 나타내는 키 - 값 쌍을 포함하는 객체입니다. 객체는 숫자 값만 포함해야합니다. 숫자가 아닌 값을 사용하면 전체 수정이 거부됩니다.
Examples
FBInstant.player .incrementStatsAsync({ level: 1, zombiesSlain: 17, rank: -1, }) .then(function(stats)) { console.log('increments have been made! New values'); var level = data['level']; var zombiesSlain = data['zombiesSlain']; });
- Throws INVALID_PARAM
- Throws NETWORK_FAILURE
- Throws PENDING_REQUEST
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Object> (resolve 되었다고 데이터가 저장되었음을 의미하진 않음. 데이터 유효성이 확인되고 예약되었음을 의미. player.getStatsAsync에서 사용할 수 있음)
getConnectedPlayersAsync( )
현재 플레이어에 연결된 플레이어에 대한 정보가 들어있는 ConnectedPlayer 개체의 배열을 가져옵니다.
Examples
var connectedPlayers = FBInstant.player.getConnectedPlayersAsync() .then(function(players) { console.log(players.map(function(player) { return { id: player.getID(), name: player.getName(), } })); }); // [{id: '123456789', name: 'Paul Atreides'}, {id: '987654321', name: 'Duncan Idaho'}]
- Throws NETWORK_FAILURE
- Throws CLIENT_UNSUPPORTED_OPERATION
Returns Promise<Array<ConnectedPlayer>> FBInstant.startGameAsync() 이전에는 resolve 하지 않음 연결된 플레이어 개체 목록을 반환
canSubscribeBotAsync( )
플레이어가 게임 봇을 가입 할 수 있는지 여부에 따라 promise가 반환됩니다.
Examples
// This function should be called before FBInstant.player.subscribeBotAsync() FBInstant.player.canSubscribeBotAsync().then( can_subscribe => console.log(can_subscribe) ); // 'true'
Returns Promise<boolean> 플레이어가 봇을 구독할 수 있는지 없는지 여부. 개발자는 subscribeBotAsync 호출 전에 무조건 이 함수를 먼저 호출해야합니다. 플레이어는 특정 게임에 대해 봇 구독 대화상자를 한번 볼 수 있습니다.
subscribeBotAsync( )
플레이어가 게임과 관련된 봇을 구독하도록 요청하십시오. 구독 실패시 API가 거부합니다. 그렇지 않으면 플레이어가 게임 봇을 구독합니다.
Examples
FBInstant.player.subscribeBotAsync().then( // Player is subscribed to the bot ).catch(function (e) { // Handle subscription failure });
- Throws INVALID_PARAM
- Throws PENDING_REQUEST
- Throws CLIENT_REQUIRES_UPDATE
Returns Promise 플레이어가 성공적으로 게임 봇을 구독하면 resolve, 요청 실패나 플레이어가 구독을 하지 않기로 선택하면 reject.
'Frontend > Facebook Instant Game' 카테고리의 다른 글
[Facebook Instant Games] 리더보드 연동하는 방법 (0) | 2018.06.04 |
---|---|
[Facebook Instant Games] SDK (leaderBoard) (0) | 2018.06.04 |
[Facebook Instant Games] SDK (context) (0) | 2018.06.01 |
[Facebook Instant Game] 한국 지역에서는 테스트를 못한다고?! (11) | 2018.05.31 |
[Facebook Instant Game] SDK 한글화 (0) | 2018.05.29 |
[Facebook Instant Game] 빠른 시작 - 1. 앱 세팅하기 (0) | 2018.05.29 |