FacebookSdk.sdkInitialize (Context) está en desuso

101

Estoy usando facebook-android-sdk-4.19.0 en Android Studio y seguí la guía de inicio rápido de Facebook en https://developers.facebook.com/docs/android/getting-started (haga clic en el botón Inicio rápido para inicie sesión con su propia cuenta de Facebook). En la guía, se le dice que copie y pegue el siguiente código en el fragmento para rastrear los registros de la aplicación

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);
    }
}

Sin embargo, cuando copio y pegué el código en Android Studio, parece que todos los métodos FacebookSdk.sdkInitialize () están en desuso. La documentación aquí https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ no dice nada sobre qué método usar para inicializar el sdk en lugar de sdkInitialize (). ¿Qué método debo utilizar?

Ozan
fuente
1
Si la respuesta lo ayudó, marque como respuesta correcta o si aún tiene el mismo problema, podemos continuar buscando.
Yupi

Respuestas:

131

De la documentación sobre la actualización del SDK:

El SDK de Facebook ahora se inicializa automáticamente al iniciar la aplicación. Si está utilizando el SDK de Facebook en el proceso principal y no necesita una devolución de llamada al completar la inicialización del SDK, ahora puede eliminar las llamadas a FacebookSDK.sdkInitialize. Si necesita una devolución de llamada, debe invocar manualmente la devolución de llamada en su código.

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

ACTUALIZAR

En el SDK 4.22 title, description, captiony el imagecampo de los FBSDKShareLinkContentestán en desuso. Considere quitarlos del uso.

Yupi
fuente
2
Lo tengo. Gracias.
Ozan
1
¿Qué pasa con la devolución de llamada de la inicialización automática?
Konstantin Konopko
8
¿Cómo se las arregla el FB SDK para inicializarse "on Application start"sin la necesidad de agregar nada Application.onCreate()?
Sébastien
5
Respondiendo a mi propio comentario: desde v4.19.0, la inicialización del SDK de Facebook la realiza un ContentProvider, declarado en el manifiesto de la aplicación: github.com/facebook/facebook-android-sdk/commit/…
Sébastien
2
Si elimino la línea sdkInitialize, algunos usuarios aún cumplen con la excepción: "El sdk de Facebook debe inicializarse antes de llamar a enableApp", versión sdk: 4.27.0, versión 5.0 de Android
diousk
13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Este método está en desuso, así que simplemente elimine esta línea de código en su clase. porque de acuerdo con la última versión de Facebook, ahora no necesitamos inicializar el SDK manualmente, se inicializa solo.

VaibhavBhosale
fuente
4

Entonces, en lugar de llamar a los métodos obsoletos, puede llamar AppEventsLogger.activateApp(Application)dentro de onCreate () de su clase de aplicación

public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        AppEventsLogger.activateApp(getApplication());
    }
}
Rakesh Yadav
fuente
1
Según esto public static void activateApp(Context context) está en desuso. Sugiere usar esto . Por eso reemplacé MainActivity.thiscon getApplication().
Nikhil Wagh
2
MyApplication.thistambién es el mismo Applicationobjeto. ¿Puedo preguntar cuál es la necesidad de reemplazarlo getApplication()? Simplemente uso this(que también es lo mismo que MyApplication.this) y se recibe comoApplication
vida
1

Mi requisito era deshabilitar autoInit al iniciar la aplicación e inicializarlo desde el método onCreate de Activity. AutoInit antes del lanzamiento de la aplicación hacía que mi aplicación Flutter tardara en iniciarse en conexiones de red lentas.

  1. Deshabilitar AutoInit del manifiesto

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
  2. Inicializar Fb sdk en el método onCreate de la actividad

    FacebookSdk.fullyInitialize();
    AppEventsLogger.activateApp(application);
Sahil Patel
fuente
0

FacebookSdk.sdkInitialize(getApplicationContext());

No es necesario este método, como dice el documento de Facebook: esta función inicializa el SDK de Facebook y se llama automáticamente al iniciar la aplicación si las entradas adecuadas se enumeran en el AndroidManifest, como el ID de la aplicación de Facebook. El registro automático de eventos desde 'enableApp' se puede controlar a través de la configuración de manifiesto 'com.facebook.sdk.AutoLogAppEventsEnabled'.

Rahul Khatri
fuente