1

我正在尝试使用 FBinstant.chooseAsync 方法向我的 Facebook 好友发送游戏请求。但是没有请求发送给我的朋友,并且在调用此方法后我在回调时没有收到任何数据。

这是我的游戏代码-

 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); 
        }); 
    }); 

});

4

3 回答 3

0

看来你必须在chooseAsync的resolve函数中调用updateAsync,你可以试试像flowing这样的东西:

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);
    });

});

于 2018-09-18T12:22:48.743 回答
0

您必须添加一个方法来调用 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);

}

于 2019-09-19T06:43:35.467 回答
0

首先,FBInstant.context.chooseAsync()打开一个上下文选择对话框(参见 API 参考 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");
        }); 

    }); 
});
于 2018-07-12T12:24:55.077 回答