Frontend/Facebook Instant Game

[Facebook Instant Games] SDK (player)

에반황 2018. 6. 1. 15:33


이 글은 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

  • keys Array<string> 검색이 필요한 고유키 목록

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

  • keys Array<string>? 통계를 검색할 수 있는 키 배열. 이 값 없이 호출하면 모든 통계를 가져옴

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.











반응형