FacebookSdk.sdkInitialize (Context) est obsolète

102

J'utilise facebook-android-sdk-4.19.0 dans Android Studio et j'ai suivi le guide de démarrage rapide de Facebook à l' adresse https://developers.facebook.com/docs/android/getting-started (Cliquez sur le bouton Démarrage rapide pour connectez-vous avec votre propre compte Facebook). Dans le guide, il est conseillé de copier et coller le code suivant dans l'extrait de code pour suivre les journaux d'application

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

Cependant, lorsque je copie-collé le code dans Android Studio, il semble que toutes les méthodes FacebookSdk.sdkInitialize () sont obsolètes. La documentation ici https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ ne dit rien sur la méthode à utiliser pour initialiser le sdk au lieu de sdkInitialize (). Quelle méthode dois-je utiliser?

Ozan
la source
1
Si la réponse vous a aidé, veuillez marquer comme bonne réponse ou si vous rencontrez toujours le même problème, nous pouvons continuer la recherche.
Yupi

Réponses:

133

À partir de la documentation sur la mise à niveau du SDK:

Le SDK Facebook est maintenant initialisé automatiquement au démarrage de l'application. Si vous utilisez le SDK Facebook dans le processus principal et que vous n'avez pas besoin d'un rappel à la fin de l'initialisation du SDK, vous pouvez maintenant supprimer les appels à FacebookSDK.sdkInitialize. Si vous avez besoin d'un rappel, vous devez appeler manuellement le rappel dans votre code.

Reportez-vous à: https://developers.facebook.com/docs/android/upgrading-4x

METTRE À JOUR

Dans le SDK 4.22 title, les champs description, captionet imagede FBSDKShareLinkContentsont obsolètes. Envisagez de les supprimer de l'utilisation.

Yupi
la source
1
Qu'en est-il du rappel de l'initialisation automatique?
Konstantin Konopko
8
Comment le SDK FB parvient-il à s'initialiser "on Application start"sans avoir besoin d'ajouter quoi que ce soit dans Application.onCreate()??
Sébastien
5
En réponse à mon propre commentaire: depuis la v4.19.0, l'initialisation du SDK Facebook se fait par un ContentProvider, déclaré dans le manifeste de l'application: github.com/facebook/facebook-android-sdk/commit
Sébastien
Merci Sébastien, je passe beaucoup de temps, à comprendre le formulaire où s'appelle sdkInitialize ()
Vahe Gharibyan
2
Si je supprime la ligne sdkInitialize, certains utilisateurs rencontrent toujours l'exception: "Le sdk Facebook doit être initialisé avant d'appeler activateApp", version sdk: 4.27.0, version Android 5.0
diousk
13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Cette méthode est obsolète, supprimez simplement cette ligne de code dans votre classe. car selon le dernier Facebook, nous n'avons plus besoin d'initialiser manuellement le SDK, il s'initialise par lui-même.

VaibhavBhosale
la source
4

Donc, au lieu d'appeler les méthodes obsolètes, vous pouvez appeler à l' AppEventsLogger.activateApp(Application)intérieur de onCreate () de votre classe d'application

public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        AppEventsLogger.activateApp(getApplication());
    }
}
Rakesh Yadav
la source
1
Selon cela, il public static void activateApp(Context context) est déconseillé. Il suggère d'utiliser ceci . Pour cela, j'ai remplacé MainActivity.thispar getApplication().
Nikhil Wagh
2
MyApplication.thisest également le même Applicationobjet. Puis-je vous demander quel est le besoin de le remplacer getApplication()? J'utilise simplement this(qui est aussi le même que MyApplication.this) et il est reçu commeApplication
vida
1

Mon exigence était de désactiver autoInit au lancement de l'application et de l'initialiser à partir de la méthode onCreate d'Activity. AutoInit avant le lancement de l'application faisait que mon application Flutter mettait du temps à démarrer sur des connexions réseau lentes.

  1. Désactiver AutoInit du manifeste

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
  2. Initialiser Fb sdk dans la méthode onCreate de l'activité

    FacebookSdk.fullyInitialize();
    AppEventsLogger.activateApp(application);
Sahil Patel
la source
1

FacebookSdk.sdkInitialize(getApplicationContext());

Pas besoin de cette méthode, comme le dit le document Facebook: cette fonction initialise le SDK Facebook est appelée automatiquement au démarrage de l'application si les entrées appropriées sont répertoriées dans le manifeste Android, telles que l'identifiant de l'application Facebook. La journalisation automatique des événements depuis 'activateApp' peut être contrôlée via le paramètre de manifeste 'com.facebook.sdk.AutoLogAppEventsEnabled'.

Rahul Khatri
la source