Почему метод FBInstant.chooseAsync не отправляет запрос игрового процесса другу?
Я пытаюсь отправить запрос игрового процесса на мой бранд-фейсбук, используя метод FBinstant.chooseAsync. Но мой друг не отправляет запрос, и я не получаю никаких данных при обратном вызове после вызова этого метода.
Вот мой код игры -
FBInstant.initializeAsync() .then(function() {
console.log("FBInstant.initializeAsync complete");
console.log("FBInstant.startGameAsync complete");
FBInstant.startGameAsync().then(function() {
console.log("FBInstant.startGameAsync complete");
console.log("FBInstant.startGameAsync context : " + FBInstant.context.getID());
FBInstant.context.chooseAsync() .then(function (e) {
console.log("FBInstant.context.chooseAsync complete");
console.log(e);
});
});
});
2 ответа
Вначале, FBInstant.context.chooseAsync()
открывает диалог выбора контекста (см. API Reference v6.2). Во-вторых, почему вы используете FBInstant.startGameAsync() дважды? Попробуйте этот код:
FBInstant.initializeAsync() .then(function() {
// Start loading game assets here
console.log("FBInstant.initializeAsync complete");
// Finished loading. Start the game
FBInstant.startGameAsync().then(function() {
console.log("FBInstant.startGameAsync complete");
console.log("FBInstant.startGameAsync context : " + FBInstant.context.getID());
FBInstant.context.chooseAsync() .then(function () {
console.log("FBInstant.context.chooseAsync complete");
});
});
});
Похоже, вам нужно вызвать updateAsync в функции разрешения ChooseAsync, вы можете попробовать что-то вроде текущего:
FBInstant.context.chooseAsync() .then(function () {
window.FBInstant.updateAsync(
{
action: "CUSTOM",
cta: "Join The Fight",
template: "join_fight",
image: base64Picture, //this should be source data of your share picture in
//base64! you can parse your picture to base64 use
//'https://www.base64-image.de'
text: "X just invaded Y's village!",
data: {
myReplayData: "..."
},
strategy: "IMMEDIATE",
notification: "NO_PUSH"
}).then(function() {
window.FBInstant.quit();
}).catch(function(err){
console.error(err);
});
});
Вы должны добавить метод для вызова FBInstant.updateAsync() для обновления контекста. Он отправит сообщение другу, выбранному в контексте.
Вы можете использовать updateAsync только один раз за сеанс в контексте (то есть: вы не можете продолжать вызывать метод updateAsync повторно, он будет работать только в первый раз, а не в более поздних запросах), пока ваш друг не ответит в контексте.
Однако, если вы измените контекст или снова откроете контекст, вы можете снова опубликовать одно обновление, независимо от того, ответил ли на него ваш друг (например: использование напоминаний другу, чтобы напомнить ему ответить).
Ваш метод может выглядеть так:
updateContext(){
var updateData = {
action: 'CUSTOM',
intent: 'REQUEST',
cta: actionButton,
template: "join_fight",
image: "base64 image data",
//data would be like: "data:image/png;base64,lkhkfhjvajsdbka....",
text: 'Message to be posted',
data: { myReplayData: 'any data to be attatched' },
strategy: 'IMMEDIATE',
notification: 'NO_PUSH'
};
FBInstant.updateAsync(updateData);
}