升级Facebook SDK至11.3.0后找不到getTargetUrlFromInboundIntent方法如何解决
问题原因
Facebook SDK从8.0版本开始对内部依赖的Bolts组件做了包名整合,到11.3.0版本时,com.facebook.bolts.AppLinks类下的getTargetUrlFromInboundIntent公共方法已经被移除,因此会报找不到方法的错误。
解决方案
有两种可行的修复方式:
方案1:使用新版Facebook SDK官方推荐的AppLink获取方式
新版SDK统一使用AppLinkData类处理AppLink相关逻辑,代码替换如下:
首先导入正确的类:
import com.facebook.applinks.AppLinkData;
然后替换原有业务代码,改成异步获取App Link地址:
AppLinkData.fetchDeferredAppLinkData(this, new AppLinkData.CompletionHandler() { @Override public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) { if (appLinkData != null) { Uri applinkUrl = appLinkData.getTargetUri(); // 在这里处理原有业务逻辑 } } });
注意:如果只需要处理当前启动Intent携带的即时AppLink,也可以直接从Intent的data字段读取,延迟深度链接才需要使用上面的异步方法
方案2:单独引入独立Bolts库保留原有写法
如果不想改动原有业务逻辑,可以在gradle依赖配置里单独添加官方Bolts库:
implementation 'com.parse.bolts:bolts-applinks:1.4.0'
然后把导入语句改回:
import bolts.AppLinks;
原有调用AppLinks.getTargetUrlFromInboundIntent的代码不需要做任何修改即可正常运行。
内容的提问来源于stack exchange,提问作者sejn
相关产品推荐
相关产品推荐

