Я тестирую приложение для мгновенных игр и в конечном итоге хочу, чтобы мой бот собирал 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, а затем перемещая ее на этап тестирования. Тогда я играл в эту игру со своего аккаунта в фейсбуке.
Мой вопрос: есть ли способ узнать, почему canSubscribtBotAsync()
возвращает false, когда это происходит? или существует ли настройка в моем приложении facebook или личном профиле facebook, которая может привести к тому, что canSubscribeBotAsync()
всегда будет возвращать false?
В документации к этому методу я отметил, что любой данный игрок будет получать запрос только один раз. Я никогда не видел подсказку о подписке, но есть ли шанс, что флаг «вы-видели-это-уже-уже» сработал, и из-за этого он возвращает false?
У меня был кто-то, кто пытался использовать свою учетную запись с таким же поведением. Я только сейчас тестирую еще несколько возможностей, но я решил опубликовать это сейчас, если что-то сразу покажется кому-то неуместным. Я не ожидаю найти что-то революционное, но я буду обновлять этот вопрос, если найду что-нибудь еще.
[править] Попробовал еще одну новую учетную запись 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)
Я испробовал несколько различных вариантов стартовой последовательности, но, может быть, я неправильно настроил?
У этого вопроса очень похожая проблема, но цепочка заканчивается без решения.
Если у кого-то есть какие-либо идеи или какие-либо фрагменты документации, которые укажут мне правильное направление, я буду очень признателен! Я сам довольно много просматривал, но, вероятно, что-то пропустил по пути.
canSubscribeBotAsync
вызывается послеstartGameAsync
. Здесь вы вызываете его только послеinitializeAsync
, что не сработает. - person Chris Hawkins   schedule 21.12.2018startGameAsync
вызывался дальше в логике запуска игры, поэтому я вызывалcanSubscribeBotAsync
доstartGameAsync
. После переезда вроде все работает отлично! На самом деле я обнаружил это, вызвавsubscribeBotAsync
передcanSubsribeBotAsync
(который просто возвращал true/false). ЗатемsubscribeBotAsync
вернул ошибку, чтоstartGameAsync
еще не вызывалась! Эта ошибка привела меня в правильном направлении. - person M Stefan Walker   schedule 09.01.2019