Facebook 小游戏小技巧:统计事件发送失败的原因总结

Facebook Instant Game(也就是国内俗称的"小游戏"),提供了自带的统计接口,可以统计自定义事件,然后在Facebook的统计后台查看。

1. 统计事件接口文档

https://developers.facebook.com/docs/games/instant-games/sdk/fbinstant6.3/

  • 接口: FBInstant.logEvent
  • 参数列表:
    • eventName 类型 string, 只允许数字、字母、下划线和连字符(减号)组合,长度2-40个字符
    • valueToSum 类型 number
    • parameters 类型 object, 不超过25组的键值对
      示例代码
var logged = FBInstant.logEvent(
  'my_custom_event',
  42,
  {custom_property: 'custom_value'}
);

2. 发送事件失败的可能原因

2.1. 定位

每次调用Facebook的统计接口时,游戏都会向Facebook发送一个请求。所以,我们可以利用浏览器自带的开发者工具来查看请求的情况。
打开开发工具的network页,可以看到很多activities请求,这些就是我们向Facebook发送的请求了。

注意 activities还包含了其他的请求,并不全都是统计事件,比如,还有广告请求。

2.2. 事件失败原因

如上图所示,失败的请求,会在列表中显示为红色,并提示原因。上图中,就提示了错误原因是不符合字符串的规则(用正则表达式表示)。

常见的失败原因:

  • 1). 网络问题
    由于国内的网络情况,由于网络原因失败,是很常见的一个情况。

  • 2). 类型错误
    注意看文档,如果调用接口时,传入的参数的类型不对,也会报错。
    最常见的是,第二个参数valueToSum,如果传入空字符 "" 或者 字符"0",都会报错。
    这个参数如果没有值,可以填0,或者干脆不填(undefined)

  • 3). 格式错误
    文档中除了定义了参数的类型,还注明了格式。比如
    eventName 就只允许包含

    • 数字: 0到9
    • 字母: a到z,A到Z
    • 下划线: _
    • 连接符(或者减号): -

而其他字符都是不允许的。特别注意是否有全角字符,以及tab等。

  • 4). 长度错误
    参数eventName的合法长度是 2-40
    参数parameters的属性名也只允许2-40个字符,并且只允许最多25组键值对(key-value pair)

事实上 Facebook小游戏的Api中,string类型的参数的要求都是一样的。

以上。