FacebookSdk.sdkInitialize(上下文)已弃用

FacebookSdk.sdkInitialize (Context) is deprecated

我在 Android Studio 中使用 facebook-android-sdk-4.19.0,我按照 https://developers.facebook.com/docs/android/getting-started 上的 Facebook 快速入门指南进行操作(单击“快速启动”按钮使用您自己的 Facebook 帐户登录)。在指南中,它被告知在片段中复制并粘贴以下代码以跟踪应用程序日志

import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
    }
}

但是,当我在 android studio 中复制粘贴代码时,似乎所有 FacebookSdk.sdkInitialize() 方法都已弃用。这里的文档 https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ 没有说明使用什么方法来初始化 sdk 而不是 sdkInitialize()。我应该使用什么方法?

来自关于升级 SDK 的文档:

The Facebook SDK is now auto initialized on Application start. If you are using the Facebook SDK in the main process and don't need a callback on SDK initialization completion you can now remove calls to FacebookSDK.sdkInitialize. If you do need a callback, you should manually invoke the callback in your code.

参考:https://developers.facebook.com/docs/android/upgrading-4x

更新

在 SDK 4.22 中,FBSDKShareLinkContenttitledescriptioncaptionimage 字段已弃用。考虑不再使用它们。

因此,您可以在应用程序 class 的 onCreate()

中调用 AppEventsLogger.activateApp(Application),而不是调用已弃用的方法
public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        AppEventsLogger.activateApp(getApplication());
    }
}
FacebookSdk.sdkInitialize(getApplicationContext()); 

此方法已弃用,因此只需删除 class 中的这行代码即可。因为根据最新的 Facebook,我们现在不需要手动初始化 SDK,它会自行初始化。

我的要求是在应用程序启动时禁用 autoInit 并从 Activity 的 onCreate 方法对其进行初始化。应用启动前的 AutoInit 导致我的 flutter 应用在​​慢速网络连接上需要时间启动。

  1. 从清单中禁用 AutoInit

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
    
  2. 在activity的onCreate方法中初始化Fb sdk

    FacebookSdk.fullyInitialize();
    AppEventsLogger.activateApp(application);
    

FacebookSdk.sdkInitialize(getApplicationContext());

不需要像 Facebook 文档所说的这种方法: 如果 AndroidManifest 中列出了正确的条目(例如 facebook 应用程序 ID),此函数会初始化 Facebook SDK,并在应用程序启动时自动调用。 'activateApp' 的自动事件记录可以通过 'com.facebook.sdk.AutoLogAppEventsEnabled' 清单设置进行控制。