FBInstant.updateAsync()聊天上下文执行成功但不发消息问题及修复
问题解决:
FBInstant.updateAsync()成功resolve但未在聊天发布消息 之前我碰到一个头疼的问题:在ID为THREAD的聊天上下文里调用FBInstant.updateAsync(),明明方法已经成功resolve了,但聊天窗口里就是看不到任何发布的消息。折腾了一阵后终于搞定了,下面分享修复后的可用代码和我的fbapp-config.json配置,给遇到同样问题的朋友做个参考!
修复后的调用代码
// 确保在正确的聊天上下文(THREAD)中执行调用 FBInstant.updateAsync({ action: 'CUSTOM', text: '来看看我的游戏进展!', template: 'play_invite', data: { // 自定义业务数据,比如游戏关卡、得分等 currentLevel: 8, highScore: 1500 }, strategy: 'IMMEDIATE', notification: 'NO_PUSH' }) .then(() => { console.log('更新请求已成功提交'); }) .catch(error => { console.error('更新操作失败:', error); });
对应的fbapp-config.json配置
{ "instant_games": { "platform_version": "RICH_GAMEPLAY", "custom_update_templates": [ { "id": "play_invite", "title": "{name}喊你一起玩游戏啦!", "description": "{text}", "media_type": "IMAGE", "image_url": "https://your-game-resource-domain.com/assets/update-banner.png" } ], "default_update_template": "play_invite", "privacy_info_url": "https://your-game-domain.com/privacy.html", "terms_of_service_url": "https://your-game-domain.com/terms.html" } }
踩坑后的关键总结
- 必须保证代码里的
template参数,和fbapp-config.json中custom_update_templates的id完全匹配,否则Facebook无法识别要使用的消息模板 - 要确认当前游戏会话确实处于
THREAD聊天上下文,可通过FBInstant.context.getType()验证 strategy参数选IMMEDIATE会立即触发消息发布,选DELAY则需要等待用户主动操作,按需选择即可- 配置里的图片链接必须是Facebook可访问的公开HTTPS地址,不能用本地资源或未授权的私有链接
内容的提问来源于stack exchange,提问作者Roman Tereschenko
相关产品推荐
相关产品推荐

