用facebook的时候遇到的一些坑

最近在捣鼓facebook的一些api的应用,磕磕碰碰的,发现了几个不大不小的坑,说出来给大家借鉴一下,如果有同样问题的也欢迎一起研究学习!
1.关于获取context.getID()获取不到的问题,虽然在官方的api里面是直接使用的,但是在上面的注释中也说了,请在调用startGameAsync()完以后,再进行ID的获取.

2.排行榜获取不到的问题,这个地方被坑的久了一点,主要是官方文档是英文的,没有细看.结果在获取排行榜的时候.需要输入自己在后台定义好的排行榜名字,我开始是直接这样做的:‘MyLeaderboardName’+FBInstant.context.getID(),但是死活读不到排行榜,最后仔细看了官方文档,在最后看到了一句话 the context must be included in the name of the leaderboard, separated with a dot.!!!只怪看书不仔细啊,在排行榜名和ID中间,添加了一个点,写成这样:‘MyLeaderboardName.’+FBInstant.context.getID(),ok,排行榜数据成功调取到了.
3.分享的坑在图片这里,之前微信做分享的时候是直接填入路径位置的,但是FB不一样,他需要的是base64 的图片信息,所以需要把原本的路径位置做一个转换以后再填入,具体怎么做请百度,度娘上这样答案很多,看懂以后稍作修改就能自己拿来用了.
4.广告的问题,FB的小游戏只支持插屏和视频广告,而他们的使用都需要预加载!请一定保证预加载成功以后再show你的广告!不然就会各种错误,另外,网页是看不了广告的,想测试广告请用app.
暂时就这些总结,如果各位朋友有什么好的问题和解决方案,欢迎一起讨论!

3赞

你好,我想问问排行榜,getid一直是null然后提示排行榜没有找到这种情况怎么解决

仔细阅读文档 getid是在特定环境下才有的 没有的时候默认就是null的

首先确认一下你是否配置好了排行榜,其次,最近又看一遍官方文档,发现官方已经集成了调用startGameAsync()的方法,所以facebook的方法直接调用就好了.你说的getID返回为null,情况很多,可以的话请把你调用的方式说的明白一点

facebook的广告 1.有没有可以提前知道广告是否预加载完成的方法 2.当广告播放完了,有没有类似监听的方法 来处理发放奖励?

1.可以提前知道,只要把广告的预加载和show方法分开就好了.

this.videoHandler.loadAsync().then(() => {
                //加载成功
            }).catch(
                err => {
                    //加载失败
                }
            )

this.videoHandler是初始化广告拿到的一个实例.
如上所说,加载成功以后,就可以继续你的后面的操作了,如果加载失败,也可以选择重新加载或者报错之类的.
2.你所说的监听的方法是指像微信那样的使用.onClose()方法吗?我就按照这样理解把,其实facebook的处理方法和微信的差不多.
> > this.videoHandler.showAsync().then(() => {
> > //显示视频广告成功,且是播放完后被关闭
> > task();//发放奖励
> > this.initVideo(this.videoID);//重新初始化广告
> > }).catch(
> > err => {
> > //显示广告失败
> > }
> > )
这里说一下,facebook的广告开了以后,就要把他看完,在他播放期间,是不能点击关闭的,那个关闭按钮你点了也无效.至少我在h5上看的几个广告就是这样的,需要看完才能点关闭按钮.所以你的视频播放成功后的奖励调用,会在玩家看完广告,并点击了关闭按钮后才会调用.