FaceBook SDK接入总结

11,006 阅读4分钟

背景

最近刚好有个需求,需要接入FaceBook SDK。第一次接入FaceBook SDK,比较陌生。记录一下,也跟大家一起交流。

前置工作

  1. 阅读相关文档:developers.facebook.com/docs/androi…

  2. 进入FaceBook开发者平台的页面,创建对应的应用,得到应用AppId和AppSecret

  3. 填写软件包名称

  4. 得到密钥散列。 密钥散列的值是根据应用的签名去生成的。比如你的App,开发环境和正式环境用的是不同签名的话,就得配置对应的密钥散列。 通过命令行去生成的话,也行,就是windows和mac的操作不太一样。个人觉得,封装一个方法,通过代码生成也比较方便,调用一下方法就可以打印出来也挺方便的。

  1. 根据文档,集成Facebook sdk。
  2. 在AndroidManifest中配置相关的信息

各个功能的具体接入

登录

文档

developers.facebook.com/docs/facebo…

登录流程

常规的登录流程设计差不多是这样的。

  1. 用户点击Facebook登录按钮,客户端App调起Facebook App,用户在Facebook的页面输入登录信息,登录成功后Facebook回调客户端并带回用户的Facebook信息
  2. 客户端把用户登录Facebook的token发送至服务端,服务端调Facebook的token验证接口验证token是否有效
  3. 如果有效,至此Facebook第三方登录就成功了。

主要的代码实现

自测

到这里,FaceBook登录相关的主要接入就ok了,授权成功的话就可以拿到FaceBook的accessToken。然后可以通过accessToken去获取到FB用户的信息。

深度链接

Facebook延迟深度链接是针对我们在Facebook投放广告,用户在未安装app时在Facebook客户端点击了该广告,会首先跳转到Google Play下载app,然后在用户首次打开app时,读取到配置的deeplink,跳转到相应的页面。

举例:就比如用户在FaceBook通过点击个美女的广告,然后去Google商店安装了我的应用,那打开应用后,读取到配置的deeplink,直接跳转到美女列表的页面,给用户更加流程的用户体检。

文档

developers.facebook.com/docs/app-ad…

延迟深度链接

如果您向尚未安装您应用的用户投放广告,则必须使用延迟深度链接。如果您只向已安装应用的用户投放广告,则无需添加延迟深度链接。

自测

官方提供了一个广告帮手的工具,可以很方便地让我们调试深度链接的功能。 链接:developers.facebook.com/tools/app-a… 填写测试的deeplink,点击发送即可。就可以在自己的手机上, 接收到一个通知,点击根据deeplink进行相应的跳转。

Facebook Analytics

通过Facebook Analytics,分析各种数据。如下图所示,显示各种比较关注的指标。

对应文档

developers.facebook.com/docs/analyt…

默认上报的应用事件

默认情况下,接入FaceBook SDK后。一些应用事件会被自动记录和收集并上报到FaceBook。 App Install - 应用安装 App Launch - 应用启动

自定义事件

简单,创建一个AppEventsLogger来记录事件就可以了。

自测

下一步工作就是验证下接入是否成功。这里使用事件管理工具进行实时调试事件上报。 事件管理平台:www.facebook.com/events_mana… 打开应用,执行相应操作,可以实时看到相应的事件上报。

Facebook sdk的初始化

FacebookInitProvider自动初始化

  • 默认情况下,FaceBook sdk是不需要我们手动调用sdkInitialize()去进行初始化工作的。
  • FaceBook通过自定义一个FacebookInitProvider 在Application启动的时候自己进行初始化了,在onCreate方法中拿到context,自己调用了sdkInitialize()方法。

FacebookInitProvider延迟初始化

虽然这种方法挺方便的,但是ContentProvider 会在APP启动的过程中进行初始化,增加启动耗时。所以我们可以将其延迟初始化。 解决方法

  • 使用tools:node="remove",直接删除Facebook SDK里面的provider。这样最后生成的APK里面的AndroidManifests文件就不会有FacebookInitProvider了,也就不会在应用启动的时候自动去初始化这个ContentProvider。
  • 然后我们就可以在合适的时机,自己手动进行初始化即可。

总结

  • 了解FaceBook平台的功能和SDK的接入
  • 了解Android Manifest文件的合并规则