我正在测试一个即时游戏应用程序,我最终希望我的机器人messaging_game_plays
在游戏会话结束时收集事件以记录用户数据。为了允许messaging_game_plays
发送,我已被此答案引导至canSubscribeBotAsync()
,并subscribeBotAsync()
来自Facebook Instant Games API v6.2。按照 API 参考作为指导,我已将这些canSubscribeBotAsync
和subscribeBotAsync
方法构建到游戏的启动序列中。我也有fbapp-config.json
正确的设置
{
"instant_games": {
"bot": {
"subscription_type": "OPT_IN_DEV"
},
...
}
}
我面临的问题是,canSubscribeBotAsync()
当我测试应用程序时总是返回 false,所以当它返回 true 时我无法测试行为。canSubscribeBotAsync()
当它返回 false 时似乎没有返回任何其他信息,所以我不确定是什么导致它以这种方式返回。
我目前正在通过构建我的游戏并将其上传到 facebook 应用程序来测试这个问题,然后将其移至测试阶段。然后我一直在我的 Facebook 帐户上玩这个游戏。
我的问题是:有什么方法可以知道为什么canSubscribtBotAsync()
返回 false 吗?或者我的 Facebook 应用程序或个人 Facebook 个人资料上是否存在可能导致canSubscribeBotAsync()
始终返回错误的设置?
我确实在此方法的文档中指出,任何给定的玩家只会被提示一次。我从未见过选择加入的提示,但是否有可能已经触发了你已经看到它的标志并且因此返回错误?
我已经让其他人尝试使用他们自己的帐户进行相同的行为。我现在正在测试更多的可能性,但我想我现在会发布这个,以防万一任何人看起来都不合适。我不希望找到任何革命性的东西,但如果我发现任何其他东西,我会保持这个问题的更新。
[编辑] 尝试使用另一个新的 Facebook 帐户,并能够在第一次运行时看到游戏日志。它向用户发出一条消息,说该应用程序想要访问公共个人资料数据,并canSubscribeBotAsync()
在用户单击数据提示上的接受之前返回 false。单击“确定”后,应用程序照常恢复。
加载顺序:
这是我// rest of game setup logic
为 Phaser 3 游戏的设置逻辑运行的代码。
window.onload = () => {
console.log('FB Instant Games SDK Version: ' + FBInstant.getSDKVersion());
FBInstant.initializeAsync().then((value: boolean) => {
FBInstant.player.canSubscribeBotAsync().then((can_subscribe: boolean) => {
console.log((can_subscribe ? 'can' : 'cannot') + ' subscribe player to bot');
if (can_subscribe) {
FBInstant.player.subscribeBotAsync().then(function () {
console.log('subscribed player to bot');
}).catch(function (e: any) {
console.log('didn\'t subscribe player to bot. error: ' + e.message);
})
}
}).catch(function (e: any) {
console.log('couln\'t check if player can be subscribed. error: ' + e.message);
});
// rest of game setup logic
});
};
在应用程序的其余输出中,我总是得到以下输出:
FB Instant Games SDK Version: 6.2
cannot subscribe player to bot <--(canSubscribeBotAsync returning false)
我已经尝试了许多不同的启动顺序安排,但我可能没有正确设置?
这个问题看起来有一个非常相似的问题,但是线程没有解决方案就结束了。
如果有人有任何想法或任何文件可以为我指明正确的方向,我们将不胜感激!我自己浏览了相当多的内容,但我可能在此过程中错过了一些东西。