FBInstant.updateAsync() 成功解决但什么都不做

FBInstant.updateAsync() resolves successfully but do nothing

我正在尝试在聊天上下文中调用 FBInstant.updateAsync()(id=THREAD)。它成功解析,但不 post 聊天中的任何消息。有人知道为什么会这样吗?

问题已解决,工作代码:

FBInstant.updateAsync({
    action: 'CUSTOM',
    //cta: 'Join The Fight',
    image: 'data:image/jpeg;base64,/...',
    text: 'X just invaded Y\'s village!',
    template: 'test_template',
    data: { myReplayData: '...' },
    strategy: 'IMMEDIATE',
    notification: 'NO_PUSH',
}).then(
    () =>{
        console.log('updateAsync() success!' + JSON.stringify(data));
        FBInstant.quit();
    },
    error => {
        console.error('updateAsync() ERROR! ' + JSON.stringify(error));
    }
);

这是我的 fbapp-config.json:

{
  "instant_games": {
    "platform_version": "RICH_GAMEPLAY",

    "custom_update_templates": {
      "test_template": {
        "example": "X just invaded Y's village!"
      }
    }
  }
}

首先,我的印象是图像字段中应该有一个 base64 编码的图像,而不是 base64 编码的 URL。您可以尝试使用 https://www.base64-image.de 对图像进行 base64 编码。也许您的更新实际上因此而失败了!

其次,对于 getEntryPointData() 到 return 的数据,您必须通过自定义更新进入游戏,并且它将 return 使用 updateAsync 设置的数据。当用户通过更新进入游戏时,他们不会输入 .then(),正如您的代码似乎尝试做的那样。

如果将图像更改为编码图像不能修复 updateAsync,您可以尝试通过 chrome 检查器进行调试并设置 "pause on uncaught exceptions" 开关,并查看在执行过程中是否发生崩溃更新异步